实时 PHP Web 应用程序部署

实时 PHP Web 应用程序部署

我希望设置 Bamboo 来进行实时 PHP 部署(相同的原则也适用于 Jenkins)

我希望能够通过按下 Bamboo 应用程序中的按钮来进行实时发布。

不过,我想确保会议保持活跃。即网络用户不会经历任何停机。如果出现问题,它会尽力保持弹性。

对于如何实现这一目标的高级概念有什么建议吗?

我的想法是它可以像下面这样工作

两个正在运行的网络服务器

webapp-live -- port 80 public 
webapp-deploy -- port 81 private

战略

1) Push project files onto server
2) /var/www/releases/web-app-tag-number.zip
3) unzip file
4) deploy to webapp-deploy
5) sanity checks i.e. webapp-deploy loads homepage ok
6) swap deploy with live - use symlink to re-point files?  (will this keep sessions alive?)

我确信这样的事情已经发生过好几次了。

想知道是否有更好的策略?

答案1

这个怎么样:

1 public facing load balancer (e.g. HAproxy)

Two backend webservers.

  1. 从池中删除一台网络服务器(使用 Haproxy,这是通过管理套接字完成的。请参阅这个问题
  2. 等待该服务器上的会话结束。
  3. 将项目文件推送、解压缩、部署到禁用的服务器。
  4. 不通过负载均衡器进行测试。 (即本地主机)
  5. 重新启用服务器。
  6. 对第二台服务器重复步骤 1。

在等待所有当前连接到期后,“禁用”服务器会将服务器置于维护模式。当然,连接不一定等于“会话”。因此,根据您处理会话的方式,可能需要在两个服务器之间进行一些会话复制或单独的会话数据库(一个新的会话数据库)单点故障)两个服务器都依赖。

这样您的用户就不会遇到任何停机时间。另外,您还可以获得一些负载平衡的额外好处。

遗憾的是,以这种方式设置 HAproxy 可能会很痛苦。

相关内容