有个基本想法:
nginx+tomcat,用于中小规模web应用生产环境的灰度发布。
nginx作负载均衡,标记为LB,若干个tomcat作应用服务,标记为App1, App2, App3, ... AppN。
发布过程:
1. 从LB中摘除App1,App1的应用服务停止,部署新应用,启动App1应用。,重新再LB中挂载App1
2. 从LB中摘除App2,App1的应用服务停止,部署新应用,启动App2应用。,重新再LB中挂载App2
3. ...
4. 从LB中摘除AppN,AppN的应用服务停止,部署新应用,启动AppN应用。,重新再LB中挂载AppN
整个发布过程中,由于每次只停机一台App,其他服务器正常服务,所以整体系统可用性不变,用户体验会保持不变,而且研发和运维团队也可以在白天任何时间进行上线发布。
可用python开发一个上述功能的专用发布平台。基本要点如下:
1. 采用web方式,可用flask框架。
2. 在web页面上进行所有的操作,包括Appl的摘除、挂载,应用包的上传, App服务的启动、停止、状态查看等。这方面python有良好的库可供应用,包括fabric, cuisine等。
3. 发布历史的记录,操作记录,历史版本应用包的保存。这部分可作为额外附加功能。
4. 顺带可以监控nginx, tomcat底层服务器的各种状态。