是否可以在不使用硬件负载平衡器的情况下平衡多个Nginx负载平衡器之间的负载?

我计划使用单独的Nginx服务器作为软件负载平衡器来平衡我的应用服务器之间的负载。 但事实上,这是因为应用程序服务器前面的负载平衡器允许我在没有停机的情况下更新应用程序服务器(操作系统,应用程序等)。

然后我意识到,我该如何更新负载均衡器本身? 即当我需要更新作为我的应用程序负载平衡器的服务器上的操作系统和Nginx时,我的网站仍然会停下来。

由于硬负载平衡无可厚非,我想知道是否可以将两个Nginx Web服务器连接在一起,以便在应用程序服务器之间平衡负载,同时使我能够在需要时一次更新一个,而不会导致停机。

这是现实吗?

你需要共同的接入点。 这应该用虚拟地址或路由来完成。 在没有附加硬件和协议的情况下,最好/最简单的方法就是使用LVS 。

LVS是可以做工作的非常快速有效的内核级IP平衡器,具有令人印象深刻的吞吐量。 您也可以在同一个节点上configurationfilewall。

对于您的configuration,最简单的方法是configuration两个节点(主动 – 备份)的LVS-NAT,它支持节点之间的心跳,并使用双方的虚拟IP。 如果主节点失败,则从节点会将arp更新推送到交换机并接pipeIP地址。

有大量的configuration实用程序 ,一些发行版function花哨的configuration,例如。 RHEL / Centos / Fedora具有piranha web GUI。

对于真正的服务器,您可以configuration超时,调度,比率,监控,会话持久性等。非常灵活。

另外,在节点之间共享会话信息是很好的。

在这里输入图像说明

推荐文档:

LVS官方: http : //www.linuxvirtualserver.org/Documents.html

LVS wiki: http : //kb.linuxvirtualserver.org/wiki/Main_Page

这真的取决于你主机的方式。 租用硬件服务器或虚拟机的更便宜的主机提供某种故障转移IP,可能被路由到不同的服务器上; 通常可以手动切换(或通过一些监视工具自动执行,但不build议这样做)。 这对于简单的设置足够舒适。

如果您使用某种服务器机箱并运行带有多个nics的服务器,因此可以在具有绑定nics,本地networking,服务器之间的直接链接的机器之间build立自己的networking,您可以使用keepalived或pacemaker等解决scheme。 但是设置和调整应该由熟悉这个(我的经验)的人完成。 这个解决scheme,如果设置正确,工作全自动和坚如磐石。 ips和服务可以在不丢包的情况下手动切换; 非常有用的更新,维护和重新启动。

这两个解决scheme仍然是穷人的HA解决scheme,但仍然比没有好。 重要的是,即使有限制,也要一个解决办法。


顺便说一句,你要求的是不是负载平衡,但故障转移; 只是为了logging:)