https://support.huaweicloud.com/bestpractice-vpc/bestpractice_0010.html
这里讲述了Nginx的高可用部署方案
1 部署Nginx
两台机器均需要部署Nginx
假设网络环境:
- A机:192.168.0.10
- B机:192.168.0.11
- VIP:192.168.0.100
2 安装keepalived
3 配置
A机:
! Configuration File for keepalived global_defs { router_id master-node } vrrp_script chk_http_port { script "/etc/keepalived/chk_nginx.sh" interval 2 weight -5 fall 2 rise 1 } vrrp_instance VI_1 { state MASTER interface eth0 mcast_src_ip 192.168.0.10 # 当前ip virtual_router_id 51 # 要保持统一 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 192.168.0.10 # 当前ip virtual_ipaddress { 192.168.0.100 # vip } track_script { chk_http_port } }
B机:
! Configuration File for keepalived global_defs { router_id master-node } vrrp_script chk_http_port { script "/etc/keepalived/chk_nginx.sh" interval 2 weight -5 fall 2 rise 1 } vrrp_instance VI_1 { state BACKUP interface eth0 mcast_src_ip 192.168.0.11 # 当前ip virtual_router_id 51 priority 100 # 优先级比主节点要低 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 192.168.0.11 # 当前ip virtual_ipaddress { 192.168.0.100 # vip } track_script { chk_http_port } }
两台机器还需要创建检查脚本,/etc/keepalived/chk_nginx.sh:
#!/bin/bash counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl start nginx.service sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl stop keepalived.service fi fi
4 验证
关闭A机,通过在B机执行ip a命令,发现vip绑定到了B机。
启动A机,执行ip a,发现vip重新绑定到A机,B机解绑vip。