Jeffrey Cross
Jeffrey Cross

零停机服务器使用HAProxy重新启动

HAProxy是一种高可用性,基于软件的HTTP负载平衡工具,我见过它在大型服务器集群和云计算环境中获得了很大的吸引力。我目前正在使用它作为第三方供应商正在维护的预构建群集映像的一部分,并且它的性能给我留下了深刻印象,我已经开始进一步研究它的功能。因为它是一个软件解决方案,它为您提供了很大的灵活性来定制它的配置。

我遇到的一个巧妙的功能是一个配置,允许您重新启动群集中的服务器,而不会让单个用户遇到404错误,停机或会话丢失。诀窍是使用iptables规则让Apache响应两个端口,比如80和81.Apache确实在端口80上运行,然后端口81配置为转发到端口80.然后将HAProxy配置为使用应用服务器的端口81,端口80上的同一服务器被定义为热备份。

igvita.com博客有一个很好的方法来做这件事:

我们不是指定物理上不同的应用服务器,而是在每种情况下将我们的备份实例定义为完全相同的应用服务器,但有一个小的区别:主应用服务器的状态端口将不同于我们用在备份上。

现在,如果我们想要将服务器置于维护模式,我们删除转发端口的IPTables规则,并等待几秒钟,以便我们的上游HAProxy实例识别出服务器不再可用于新连接 - 这是关键,这意味着在此过程中不会删除任何客户端。现在,一旦服务器在HAProxy中不再轮换,我们就可以正常重启,重新添加IPTables规则,我们就活了!

很酷的是,如果不对代理进行任何重新配置​​,您可以优雅地使计算机脱机。您只需禁用iptables端口转发,HAProxy将注意到端口81已脱机并开始使用当前cookie将现有用户发送到端口80。实际上,它是完全相同的Apache实例,因此所有会话信息都保持不变。新会话将全部发送到您的其他服务器,您可以等到没有人在使其脱机之前使用维护模式机器。

使用HAPRoxy官方HAProxy文档重新启动HAProxy零停机时间(请参阅第4.2节,使用备份服务器进行软停止)

分享

发表评论