高可用性Web应用程序 - 如何升级?

时间:2013-10-31 13:18:31

标签: java mysql continuous-integration high-availability

我们的Web应用程序(spring + jpa + mysql)应该具有非常低的停机时间%。 目前,我们有一个带有3-tomcats集群的负载均衡器,以及使用单个数据源(mySQL)运行相同Web应用程序的会话复制。

在可用性方面,这很有效。

但是现在,

我们希望在不发布停机时间的情况下升级我们的Web应用程序。 天真的人会说 - 关闭一个tomcat,部署新版本,然后重新启动它。 (为所有的tomcats做)并且你完成了!

但是,考虑到2个网络应用程序变体将同时运行(旧版本和新版本),我们可能会遇到一些问题。

任何人都可以了解一下我们在尝试实时升级时应该考虑哪些关键方面?有什么好的做法吗?讨论这些问题的任何文章?

任何帮助都可以!

谢谢!

1 个答案:

答案 0 :(得分:1)

这样做可以有几种策略。这是我经常使用的两种方法 -

  1. 并排运行两个版本。如你所说,这可能会导致问题。要做到这一点,您需要提前测试,看看您可以并排运行,并且没有任何数据不一致(由于更改架构等)。

  2. 替换正在运行的版本。您可以通过建立新的tomcat集群然后切换负载均衡器来实现此目的。或者,如果您不是基于云的,并且您不能这样做 - 从负载均衡器中取出一台或两台服务器(最好是在较短的时间内,以便您的应用程序可以处理负载)。替换流量不足的服务器上的版本。测试测试它是否正常工作。再次将它们放入流量并取出剩余的服务器,然后更新它们。

  3. 此外,验证您是否有快速回滚方法,以防您的版本出现问题,并且只在生产中找到它...