NGINX Plus 可以配置成主备(active-passive)模式或双活(active-active)模式的高可用性(HA)集群,以确保应用的可用性。在下面所示的主备 HA 集群中,包含两台 NGINX Plus 服务器:一台主服务器主动处理流量,一台备份服务器监控主服务器的健康状况,并在当前主服务器发生故障时自动接管为主服务器。在双活 HA 集群中,两台服务器都处理流量。NGINX Plus 还支持多活和其他 N+1 配置。
除了在集群中以自动故障切换功能实现高可用性,NGINX Plus 还支持配置同步功能,以便您在集群中的一个 NGINX Plus 服务器上所创建的配置可以被同步到其他服务器。同时,NGINX Plus 还支持状态共享,以确保需要用到状态信息的功能(如 sticky-learn 粘性会话、速率限制和键值存储等)可以在集群环境中正常工作。
针对 Web 应用的 HA 架构
NGINX Plus 先进的负载均衡和应用健康监测功能为上游应用服务器提供了弹性和可扩展性。将 NGINX Plus 配置为 HA 集群,可为应用提供更进一步的弹性,同时消除应用堆栈中的单点故障。如果一个 NGINX Plus 服务器无法处理流量,其他服务器将会接替其工作。
如果您想获得更高级别的冗余性或者需要超过单对主备实例所能提供吞吐量,您也可以通过扩展配置来支持多对主备 NGINX Plus 实例。
HA 解决方案的工作原理
NGINX Plus 的主备 HA 解决方案是基于 keepalived
的,它本身使用虚拟路由冗余协议 (VRRP)的一个实现。安装了nginx-ha-keepalived 软件包并配置好 keepalived
之后,它会在集群中的每台 NGINX Plus 服务器上作为一个单独的进程运行,并管理共享的虚拟 IP 地址。虚拟 IP 地址是向下游客户端通告的 IP 地址,例如:通过您的服务或应用的 DNS 记录。
根据初始配置,keepalived
指定一个主服务器并将虚拟 IP 地址分配给它。主服务器定期发送 VRRP 通告信息到备份,确认它是健康的,并且已验证 keepalived
和 NGINX Plus 都在运行。如果备份未收到连续三个通告,它将成为新的主服务器并接管虚拟 IP 地址。
安装和配置 HA 解决方案
启用 NGINX Plus HA 非常简单,借助 nginx-ha-keepalived 软件包中便可实现,您可以从 NGINX Plus 代码库安装它。例如,在 Debian 和 Ubuntu 系统上,命令如下:
$ apt-get install nginx-ha-keepalived
在 HA 集群中的每个 NGINX Plus 服务器上安装该软件包,然后运行其中包含的 nginx-ha-setup 脚本来配置和运行 HA 软件。相关完整说明,请参阅 NGINX Plus 管理指南。
如果主 NGINX Plus 服务器因硬件故障、操作系统关闭或终止 NGINX Plus 软件等灾难性条件而停止工作,HA 故障转移就会派上用场。如果需要,可以扩展内部的健康检查功能以识别更多的故障情况。
在 HA 集群中同步配置
您可以在集群中横跨不同的 NGINX Plus 服务器来同步配置,而无需对每个服务器进行单独管理。您只需对指定的“首要(primary)”服务器进行更改,然后将更改的配置推送到集群中的其他服务器即可。
这个功能是在 NGINX Plus R12 中被引入的,并在从 NGINX Plus 代码库分发的 nginx-sync
软件包中实现。对于 Debian 和 Ubuntu 系统,命令如下:
$ apt-get install nginx-sync
更多详细信息,请参阅 NGINX Plus 管理指南。
在 HA 集群中共享状态
集群中的 NGINX Plus 服务器可以共享状态信息,这是在 Zone Synchronization(区域同步)模块中实现的(该模块在 NGINX Plus R15 中被引入)。这使得在集群环境中正常工作的状态维护功能得以实现。以下 NGINX Plus 功能具有集群意识:
- sticky-learn 粘性会话
- 速率限制
- 键值存储
更多详细信息,请参阅 NGINX Plus 管理指南和 zone_sync 模块的参考文档。
云环境中 NGINX Plus 的 HA
基于 keepalived
的 HA 解决方案仅适用于 NGINX Plus 的本地部署,但在云环境中也有 HA 解决方案:
- 在 AWS上使用 AWS Network Load Balancer 实现 NGINX Plus 的双活 HA
- 在 AWS 上使用弹性 IP 地址实现 NGINX Plus 的主备 HA
- 在 Google Cloud Platform 上实现 NGINX Plus 的所有模式的 HA
对于 Microsoft Azure,您可以使用其原生负载均衡器作为 NGINX Plus 的前端 HA 解决方案。
进一步阅读
- 《NGINX Plus管理指南》中“对于 NGINX Plus 高可用性的支持”一节 – 在本地部署中配置 NGINX Plus 的高可用性的完整说明
- 百度百科上的虚拟路由冗余协议(VRRP) – 关于 VRRP 的概述
keepalived
主页 – 有关扩展和自定义keepalived
配置的详细信息。