内网上之前有一些文档,但部分已经过时可能会有误导,比如之前约定监听 7001 端口,现在是 6001 端口。本应用从申请到上线都是在 2015 年 12 月,目前应该仍然通用,本文引用的参照文档也都以最新的为准。

本流程以黄金眼项目为例。黄金眼是一个 A/B 测试平台,新版黄金眼使用 Node 开发服务端,本文通过我自己的亲身经历阐述了阿里集团内一个 Node 应用从申请到上线的流程,以及这个过程中自己遇到的一些问题和解决办法。

由于想深入理解 Koa 的机制和原理,本项目当时没有使用 Midway 和 Egg(当时也还没出来。。。)

在 aone 申请应用

申请应用可参照:申请新应用及发布

  1. 先在 aone2 上申请新应用,找自己部门对应的 PE(共享@粟裕)审批。

  2. git 代码仓库关联应用:找 SCM(共享@红巾)审批应用的 gitlab 代码模块,提醒 SCM 部署类型选 node.js。这样,在 aone2 应用里,代码模块里才会有应用的 git 仓库地址,后面才能成功新建日常(审核通过后有半个小时左右延迟)。

    Alt text


新建日常,申请代码变更

同可参照:申请新应用及发布

  1. 在 Aone 上新建日常。请先尽量保证自己的 node 应用符合集团的打包规范(仅作推荐,不强制,但 bin 目录下的 server.js 一定要有),应用要监听6001端口,如果接入alinode,在 package.json 中加入:
"engines": {
    "install-alinode": "1.2.1"
}

Node 应用的打包规范详见:集团 Node 应用打包规范

  1. 申请变更(新建日常时可同时申请) Alt text


提交集成,进入日常,日常部署

  1. 申请变更之后,在“我的变更”中点“提交集成”。
  1. 日常域名申请:参照测试环境域名管理 黄金眼申请到的日常地址是:http://goldeye.daily.taobao.net/。 注:如果要申请的是*.daily.taobao.net 的域名,走ATEP系统, 默认就支持 https ,域名解析会自动指向我们的日常机器,不需要自己再配置。如果是非业务的想应用申请域名,可以在KFC系统里自行申请。
  2. 部署不顺利怎么办?登陆日常服务器查错。 如果需要登陆日常环境服务器(你一定会需要的)排查错误或安装东西: 1. 首先去KFC申请对应日常服务器 ip【 应用管理员 】权限(黄金眼日常是10.189.197.77)。 2. 通过 ssh 登陆后,先执行sudo su admin,切换到 admin 用户身份。应用的目录在/home/admin/下。例如黄金眼的应用源码目录:/home/admin/goldeneye-node/target/goldeneye-node/。 3. 第一次部署如果服务器没启动 nginx,则需要手动启动 nginx,执行/home/admin/cai/bin/nginxctl start。 如果因为健康检查的原因,nginx 没启动起来,可以修改一下 nginx 配置文件:vim /home/admin/cai/conf/nginx-proxy.conf 添加如下几行:
location = /status.taobao {
      stub_status on;
}

location = /check.node {
      stub_status on;
}


日常部署其他常见报错及解决办法

测试环境常见问题集这里有一些官方回答的问题。


预发部署

  1. 日常环境自测没问题后,Aone 2 进入预发环境,点击预发部署,然后勾选变更,由日常环境进入预发:进入预发
  2. 第一次预发部署由于没有机器,预发部署会失败。不用担心,就预发部署一次,第一次失败后 Aone 会给出申请预发机器的入口:预发申请机器入口 点击申请机器和线上域名。详见新应用上线新流程使用帮助说明。同时数据库在 iDB 上也要申请上线。

  3. 再进行一次预发部署。

  4. 登陆预发机器排错。

    • 如果预发部署失败,需要去预发机器上查看日志的话,需要去 PSP 申请服务器 ssh 登陆权限(还记得日常是去 KFC 申请吗,PSP 对应的是线上机器的操作)。
    • 生产环境下的服务器必须要 通过跳板机登陆 ,不允许直接用办公电脑 ssh 登陆。可以参见集团跳板机使用规范和方法。所以也要申请一下跳板机权限,在PSP申请,比如可以申请login1.cm3.alibaba.org这台跳板机。
    • 申请成功后,首先 ssh 登陆跳板机,ssh login1.cm3.alibaba.org (采用域密码+令牌六位数字登录),然后在跳板机里再 ssh 登陆我们的生产环境机器,接下来的排错过程同上面日常环境。
  5. 预发机器上安装 VIPServer(可选,根据应用实际情况) 预发机器上可能默认没有安装 vipserver,无法解析数据库域名。所以需要手动安装一下 vipserver:
  1. 部署成功后,访问预发页面: 电脑绑定预发 host:110.75.98.154 pre.ge.taobao.com,然后访问pre.ge.taobao.com。需要绑定的 host 在 Aone 的预发部署页面“预发测试绑定平台”里可以看到:预发绑定


应用上线

恭喜终于走到这一步了,最蛋疼的坑你肯定都踩完了 : -)激动人心的时刻到来了!颤抖吧!gogogo!此步可以参照 新应用上线新流程使用帮助说明

  1. Aone 点击“正式环境”,进入正式。
  2. 进行正式构建,构建成功后,提交发布单。PE 审批以后,等待发布完成就好啦。
  3. PSP 系统申请线上机器登陆权限,几台机器就申请几个。
  4. 线上机器安装 VIPServer(同预发,每台机器都要安装,根据应用实际情况)
  5. 如果申请了线上域名,比如*.taobao.com,则要走 VIP 申请审批流程。这里的 VIP 是外面可以访问的一个 ip,对应用分组的机器做了负载均衡。首先 PE 创建工单,然后安全@墨禅会审批,给安全的同学描述一下为什么申请 VIP(为什么要暴露给外网)。
  6. VIP 审批成功以后,系统会走域名审批流程。*.taobao.com的域名归属人是@圆心,PE 审批完以后,需要@圆心最终审批。注:*.taobao.com二级域名名字长度必须 大于 4 个字母 ,否则@圆心不会审批通过。。


接入集团 HTTPS(可选)

可参见接入说明

  1. 在 vipserver 配置里面,添加域名。如何填写可以参照这里
  2. 上一步完成,注册了域名以后,到 psp 提交统一接入申请单。注意“VipServer Key 名称”要填的是 域名名称 ,不是 token。
  3. 工单审批完成后,自己先验证 VIP 绑定,如果验证没有问题,通知 PE 切域名。wagbridge.taobao.com ,hz.wagbridge.taobao.com ,sh.wagbridge.taobao.com,dig 一下域名的 VIP,绑定验证,根据你的机房部署,第一个是杭州+上海,第 2 个是杭州,第 3 个是上海。HTTPS 方面如果有问题可以找@千山。


其它

接入 AliNode

可参见 接入 Alinode 教程

  1. 将 Node.js 打包到应用代码中
  2. 服务器上安装命令集,执行: $ sudo yum install alinode-commands -b current
  3. 配置监控项: alimonitor->监控管理->单机 聚合->添加监控项

接入 BUC 和 ACL

可参考 BUC集团统一登录中心用户帮助手册ACL 接入流程

  1. 首先接入 BUC,然后接入 ACL。日常 buc+日常 acl线上 buc+线上 acl
  2. 如果需要调用 ACL 的写接口,比如需要调用 api 创建一个权限时,需要先申请一个公共账号。申请完公共账号以后,去 ACL 平台申请 HSF 接口权限(用申请到的公共账号)。申请完 HSF 接口的写权限以后,才可以调用 ACL 的写权限接口。

    为何使用公共账号? 每个应用对应一个公共账号,因为应用申请到的公共账号权限稳定,不像员工会因离职转岗权限发生变化。公共账号可以固定写在接口调用的代码中。


cluster 模式和异常重启

工具选型:pm2、forever 与 cfork


Q&A

名词解释:

各个环境介绍:

各个环境的机器需要自己单独申请吗


参考资料