什么是高可用?
高可用(High Availability,HA)是分布式系统架构设计中的核心考量。简单来说,就是通过冗余设计减少系统不可用的时间。理论上 100% 可用性是理想状态,但硬件故障、网络波动等意外难以完全避免,我们的目标是尽可能缩短故障窗口。
为什么需要双机热备?
在生产环境中,Nginx 常作为反向代理对外提供服务。一旦 Nginx 进程或所在服务器宕机,所有依赖它的接口都会中断。虽然无法保证绝对不挂,但可以通过 Keepalived 实现自动故障转移,确保服务连续性。
Keepalived 与 VRRP 机制
Keepalived 最初是为 LVS 负载均衡设计的,后来扩展为通用的 HA 解决方案,支持 Nginx、Haproxy、MySQL 等多种服务。
其核心依赖于 VRRP(虚拟路由冗余协议)。正常工作状态下,主节点(Master)会定期向备节点(Backup)发送心跳消息。一旦 Master 宕机,心跳停止,Backup 检测到后会自动接管 VIP(虚拟 IP)及相关服务资源。当 Master 恢复时,根据优先级策略,VIP 通常会回切到原主节点。
环境准备
我们需要两台虚拟机模拟生产环境:
- 主机(Master):192.168.16.128
- 备机(Backup):192.168.16.129
- 虚拟 IP(VIP):192.168.16.130
两台机器均需安装好 Nginx。
安装 Nginx
首先更新 Yum 源并安装 Nginx:
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install nginx
常用管理命令:
systemctl start nginx # 启动
systemctl stop nginx # 停止
systemctl status nginx # 查看状态
安装 Keepalived
使用 Yum 直接安装,依赖会自动处理:
yum -y install keepalived
配置 Keepalived
配置文件位于 /etc/keepalived/keepalived.conf。我们需要分别修改主机和备机的配置。
1. 修改主机(192.168.16.128)
重点配置 virtual_ipaddress 指定 VIP,interface 绑定网卡(可通过 ip addr 查看),以及 authentication 设置认证密码,确保主备双方一致。
2. 修改备机(192.168.16.129)
配置逻辑与主机类似,主要区别在于 priority(优先级)应低于主机,且 state 设为 BACKUP。
此外,需编写健康检查脚本 check_nginx_pid.sh 来监控 Nginx 进程。如果脚本发现 Nginx 挂了,Keepalived 会判定该节点失效并触发切换。
chmod 775 check_nginx_pid.sh
*注意:脚本必须具有执行权限,否则健康检查将失败。
验证高可用效果
为了区分主备节点,可以修改两台服务器上 Nginx 默认页面的内容。

