首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Python (旋风式)应用程序部署到多个服务器

将Python (旋风式)应用程序部署到多个服务器
EN

Server Fault用户
提问于 2011-05-26 17:31:11
回答 2查看 4.3K关注 0票数 3

我们有4个应用服务器和一个运行Python应用程序的负载平衡。每个应用服务器都有32个超线程核心,因此旋风部署指南建议我们在每个服务器上运行64个线程。我们还使用supervisord来管理所有线程。这很好,我们遇到的问题是当我们必须部署更新时,当前部署新应用程序的过程是一个shell脚本,它执行以下操作:

  • 查看我们的GIT的/deploy分支
  • (一些与CDN无关的事情)
  • 将文件指向4台服务器中的每一台
  • 重新启动supervisord (因此应用程序加载新代码)

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

有什么更好的方法吗?我听说过织物和其他一些可以使用的工具,但它们是否比我们目前的做法更有效呢?理想情况下,我们需要在5秒内将所有线程重新引导到新版本,即使它涉及暂时删除站点。

信息(如果是有用的话);

所有服务器都是RHEL5.5,负载均衡器是梭鱼640。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2011-06-01 15:47:45

如果您可以在部署脚本中使用负载均衡器API,下面的序列应该可以执行您想做的事情:

  1. 从负载均衡器中移除部分线程。
  2. 升级那些线程
  3. 从负载均衡器中删除活动线程。
  4. 将升级的线程重新添加到负载均衡器中
  5. 升级剩余线程
  6. 将剩余线程重新添加到负载均衡器中。

这样,您在任何时候都只能使用一个版本的代码,并且在池更改生效时,停机时间应该限制在一两秒钟之内。

免责声明:这假设Barracuda负载均衡器有一个不错的API。我找不到一个快速的谷歌文档。这种模式应该行得通。我在一个类似的情况下做了思科负载平衡器。

票数 4
EN

Server Fault用户

发布于 2011-06-01 15:48:30

为什么不这么做..。

用2块完成部署。您可以连接到两个节点,从而关闭You服务器。负载均衡器将停止向那里发送流量。部署应用程序。打开网络服务器,同时关闭其他2台。部署应用..。启动服务器。

这种方法不是很好的推广。

备选方案2

你的LB会做粘性会话吗?如果是的话,在部署前一小时就把它们打开。每次打开一个服务器来执行部署。当它上升,某些用户将看到新的网站,而其他人将看到旧的网站。

所以你一次只做一个..。然后从LB中删除粘性会话。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/274154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档