egg 集群部署问题

Created on 11 Sep 2017  ·  6Comments  ·  Source: eggjs/egg

  • Node Version: 6.11.2
  • Egg Version: 1.4.0
  • Plugin Name:
  • Plugin Version:
  • Platform: Centos 6.8
  • Mini Showcase Repository:

我的问题

我们公司使用egg做了一个集群。但是在实际的部署上,遇到种种问题。我就不过多描述了,总之流程比较繁琐。想参考一下,egg在阿里的实际业务中,采用的部署方案是怎么样的,比如说如何应对正常的版本升级,紧急的BUG修复等等。

Most helpful comment

简单说几个需要注意的点:

  • 必须有完善的单元测试,并保证足够的覆盖率
  • 必须在 CI 上打包,打的 tar 包要包含 node_modules 依赖,然后推送到运维系统,手动选择上线。
  • 绝对不能在服务器上启动时才 npm install (你甚至无法保证 2 台服务器安装的是一致的)
  • 打成 docker 更佳
  • egg 前面挂 nginx,一般的运维系统的 nginx 这层,会做平衡重启(至少启动 2 个 egg,重启时,先把其中一台的流量切掉, kill 然后等待这台 egg 优雅退出,启动新 egg,切流量回来,继续下一台)
  • 紧急回滚就是简单的使用之前的生产包,重启 (这就是为什么要打包依赖)
  • 所有的可信类库依赖均采用 ^ 方式引入,每次重新打包,都会自动更新到最新的依赖。

All 6 comments

问题太泛了,先关了,有兴趣的同学可以来分享一些经验吧。

简单说几个需要注意的点:

  • 必须有完善的单元测试,并保证足够的覆盖率
  • 必须在 CI 上打包,打的 tar 包要包含 node_modules 依赖,然后推送到运维系统,手动选择上线。
  • 绝对不能在服务器上启动时才 npm install (你甚至无法保证 2 台服务器安装的是一致的)
  • 打成 docker 更佳
  • egg 前面挂 nginx,一般的运维系统的 nginx 这层,会做平衡重启(至少启动 2 个 egg,重启时,先把其中一台的流量切掉, kill 然后等待这台 egg 优雅退出,启动新 egg,切流量回来,继续下一台)
  • 紧急回滚就是简单的使用之前的生产包,重启 (这就是为什么要打包依赖)
  • 所有的可信类库依赖均采用 ^ 方式引入,每次重新打包,都会自动更新到最新的依赖。

@atian25 请教一下CI是什么?做新产品用eggjs框架,很想学习你们的开发部署模式

@atian25 刚搜到travis-ci这个持续集成工具,应该和Jenkins类似吧?现在都流行用ci吗?是不是我们out了?

travis 企业版或 gitlab 自带的 ci

@atian25 多谢大神指点!travis 企业版是收费的?gitlab ci免费的可以试试

Was this page helpful?
0 / 5 - 0 ratings