Web应用程序的高可用性

随着越来越多的关键任务应用程序迁移到云中,使应用程序具有高可用性变得至关重要。 由于某种原因无法使用的应用程序,Web服务器关闭,数据库关闭等都意味着用户损失,收入损失,这可能对您的企业造成毁灭性的影响。 在此博客中,我们研究了一些基本的高可用性概念。

可用性意味着您的用户可以使用您的Web应用程序。 我们都希望我们的应用程序有100%的时间可用。 但是由于各种原因,它不会发生。 高可用性的目标是使应用程序尽可能多地可用。 通常,可用性表示为应用程序每年可用时间的百分比。 有人会说可用性是99%或99.9%,依此类推。

冗余和故障转移是用于实现高可用性的技术。 通过拥有多个服务器副本来实现冗余。 您有两个,而不是1个apache Web服务器。 一是活动服务器。 监视活动服务器,如果由于某种原因它发生故障,则您将故障切换到活动的第二台服务器。 另一种方法是使用活动服务器集群,就像在tomcat集群中一样。 所有服务器均处于活动状态。 负载平衡器在群集成员之间分配负载。 如果群集的一两个成员出现故障,则不会影响用户,因为其他服务器会继续处理。 当然,负载均衡器可能会成为故障点,并且需要冗余和故障转移。

如果要向云启动新的Web应用程序,则可以从如下所示的基本体系结构开始,而无需考虑任何HA。

阶段1:1个Tomcat Web服务器

Web应用程序的高可用性

阶段2:Tomcat集群

如下图所示,您可以使用tomcat群集来添加冗余和可伸缩性。 集群的前面是Apache Web服务器+ mod_proxy,它将请求分发到各个服务器。 Mod_proxy是负载平衡器。

Web应用程序的高可用性

现在,应用程序可以水平扩展。 Tomcat或应用程序故障不是问题,因为集群中还有其他服务器。 但是我们引入了一个新的失败点,即负载均衡器。 如果Apache + mod_proxy出现故障,则该应用程序不可用。

要了解有关设置tomcat集群的更多信息,请参阅Tomcat集群
要了解如何将负载平衡器与tomcat一起使用,请参阅Tomcat的负载平衡

阶段3:高可用性Tomcat集群

下图显示了如何消除故障点并提高负载均衡器的可用性。

Web应用程序的高可用性

通过添加第二个apache + mod_proxy来添加冗余。 但是,只有一种是活动的。 第二个Apache不处理任何请求。 它仅使用心跳之类的工具监视活动服务器。 如果由于某种原因,主动服务器关闭,则第二台服务器知道,被动服务器将接管IP地址并开始处理请求。 这是怎么发生的?

这是可能的,因为在全世界发布的此应用程序的ip地址是由两个apache共享的。 这被称为虚拟IP地址。 当两个服务器共享虚拟IP时,TCP / IP仅将数据包路由到活动服务器。 当主动服务器出现故障时,被动服务器告诉TCP / IP开始将打算将此IP地址发送给它的数据包。 有TCP / IP命令可以让服务器启动和停止侦听虚拟IP地址。

心跳和Ultramonkey等工具使您可以彼此保持心跳,并在必要时进行故障转移。 使用心跳,每个服务器上都有一个心跳过程。 配置文件包含有关虚拟IP地址,主动服务器,被动服务器的信息。 互联网上有几篇有关如何设置心跳的文章。

总而言之,您可以使用开源工具构建高度可用的应用程序。 高可用性,冗余,监视和故障转移,虚拟IP地址的关键概念适用于任何服务,而不仅仅是Web服务器。 您可以使用相同的概念来使数据库服务器高度可用。

参考: JCG合作伙伴 提供的Web应用程序的高可用性   The Khangaonkar Report博客上的Manoj Khangaonkar。


翻译自: https://www.javacodegeeks.com/2012/03/high-availability-for-web-applications.html