NGINX Plus 可配置为 Active-Passive 或 Active‑Active 模式的高可用性 (HA) 集群,以确保应用的可用性。在 Active-Passive HA 集群(如下图所示)中,有两台 NGINX Plus 服务器:一台是主动处理流量的主服务器,另一台则为监控主服务器运行状况的备份服务器,并在当前主服务器发生故障时自动接替主服务器。在 Active‑Active HA 集群中,两台服务器都会处理流量。此外,还支持 Active‑Active‑Active 和其他 N+1 配置。
除了集群中的 HA 自动故障切换功能以外,NGINX Plus 还支持配置同步,这样您在集群中的一台 NGINX Plus 服务器上创建的配置就可以被同步到其他服务器上。此外,NGINX Plus 还支持状态共享,使得那些利用需要状态信息的功能(如粘性学习 sticky-learn 会话保持、速率限制和键值存储)可以在集群环境中正常运行。
NGINX Plus 的高级负载均衡和应用健康监测功能可为上游应用服务器提供弹性和可扩展性。将 NGINX Plus 配置为 HA 集群可进一步提高应用的恢复能力,并消除应用堆栈中的任何单点故障。如果一台 NGINX Plus 服务器无法处理流量,另一台服务器就会接管。
您还可以对配置进行扩展以支持多个 Active-Passive NGINX Plus 实例,从而实现更高程度的冗余,或者是应对您需要超过单个 Active-Passive 实例对可以承受的吞吐量的情况。
NGINX Plus Active-Passive HA 解决方案基于 keepalived
,它本身使用的是虚拟路由器冗余协议 (VRRP) 的一个实现。安装 nginx-ha-keepalived 软件包并配置 keepalived
后,它会在集群中的每台 NGINX Plus 服务器上作为独立进程运行,并管理一个共享的虚拟 IP 地址。虚拟 IP 地址是向下游客户端通告的 IP 地址,例如通过服务或应用的 DNS 记录。
keepalived
会根据初始配置指定一个主服务器,并将虚拟 IP 地址分配给它。主服务器会定期向备用服务器发送 VRRP 通告报文,确认备用服务器的运行状况,并验证 keepalived
和 NGINX Plus 是否都在运行。如果备份服务器没有收到三次连续的通告,它就会成为新的主服务器并接管虚拟 IP 地址。
启用 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 故障转移。必要时,内部健康检查可扩展到识别更多故障情况。
您可以跨集群中的 NGINX Plus 服务器同步配置,避免单独管理服务器。您只需对指定的“主”服务器进行更改,然后将这些配置更新推送到集群中的其他服务器即可。
这一功能在 NGINX Plus R12 中引入,并在 NGINX Plus 代码库发布的 nginx-sync
软件包中实现。Debian 和 Ubuntu 系统的命令如下:
$ apt-get install nginx-sync
有关详情,请参阅《NGINX Plus 管理指南》。
集群中的 NGINX Plus 服务器可以共享状态信息,这是在区域同步(Zone Synchronization)模块(NGINX Plus R15 中引入)中实现的。如此一来,与运维状态相关的功能就能在集群环境中正常工作。以下 NGINX Plus 功能具有集群感知功能:
有关详情,请参阅《NGINX Plus 管理指南》和 zone_sync 模块的参考文档。
基于 keepalived
的 HA 解决方案仅适用于 NGINX Plus 的本地部署,但也有适用于云环境的 HA 解决方案:
keepalived
主页 — 有关扩展和自定义 keepalived
配置的详细信息