linux – 将Python Web(Tornado)应用程序部署到多个服务器

前端之家收集整理的这篇文章主要介绍了linux – 将Python Web(Tornado)应用程序部署到多个服务器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有4个应用服务器和一个运行我们的 Python应用程序的负载平衡.每个应用程序服务器都有32个超线程内核,因此Tornado部署指南建议我们在每个上运行64个线程.我们还使用supervisord来管理所有线程.这很好用,我们遇到的问题是当我们必须部署更新时,部署新应用程序的当前进程是一个shell脚本,它执行以下操作:

>签出我们的GIT仓库的/ deploy分支
>(与CDN有关的一些不相关的东西)
> SCP将文件发送到4台服务器中的每台服务器
>重启supervisord(所以应用程序加载新代码)

这非常低效,总共需要大约20秒.重新启动单个龙卷风线程需要大约一秒钟,但问题是如果我们进行任何重大更改,负载均衡器将在旧应用程序和新应用程序之间切换,具体取决于它所选择的线程的重启阶段(总共有256个负载均衡器可以连接的可能实例)因此我们必须将站点关闭30秒,有时甚至更长,以获得正确版本的应用程序.

有没有更好的方法呢?我听说过Fabric和其他一些可以使用的工具但是它们比我们现在这样做的方式更有效吗?理想情况下,我们需要在5秒内将所有线程重新启动到新版本,即使它涉及暂时停止网站.

信息(如果有用的话);
所有服务器都是RHEL 5.5,负载均衡器是Barracuda 640.

解决方法

如果您可以在部署脚本中使用 load balancer’s API,则以下序列应该执行您想要的操作:

>从负载均衡器中删除部分线程
>升级这些线程
>从负载平衡器中删除活动线程
>将升级后的线程添加负载均衡器
>升级剩余的线程
>将剩余的线程添加负载均衡器

这样,您在任何时刻只能使用一个版本的代码,并且当池更改生效时,停机时间应限制为一秒或两秒.

免责声明:这假设Barracuda负载均衡器具有不错的API.我找不到快速Google的文档.该模式应该有效.我在与Cisco负载均衡器类似的情况下完成了它.

猜你在找的Linux相关文章