Nginx 高可用 通常 借助 Keepalived 實現, Keepalived 能通過 VRRP (虛擬路由冗余協議)讓多個 Nginx 服務器 組成一個 熱備集群,當主服務器故障時自動切換到備用服務器,保障服務不間斷。
一、環境準備
角色 | IP 地址 |
---|---|
主服務器(Master) | 192.168.159.129 |
備用服務器(Backup) | 192.168.159.130 |
虛擬IP(VIP) | 192.168.159.120 |
Keepalived版本 | 1.4.5 |
二、源碼安裝 Keepalived 服務
2.1 在節點 Mater 上安裝 keepalived
# 安裝依賴
yum install openssl-devel libnl3-devel ipset-devel -y
yum install libnfnetlink-devel -y# 下載源碼
wget https://www.keepalived.org/software/keepalived-1.4.5.tar.gz# 解壓
tar -zxvf keepalived-1.4.5.tar.gzcd keepalived-1.4.5./configure --prefix=/usr/local/keepalivedmake && make install
2.1.1 配置文件配置
# 配置文件 keepalived.conf 配置
mkdir -p /etc/keepalivedvim keepalived.conf# 配置文件內容
! Configuration File for keepalivedglobal_defs {router_id NGINX_MASTERscript_user rootenable_script_security
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1mcast_src_ip 192.168.159.129authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.159.200}
}
2.1.2 把keepalived 配置成系統命令
-
創建 服務文件
vim /etc/systemd/system/keepalived.service[Unit] Description=Keepalived High Availability Service After=network.target[Service] Type=forking PIDFile=/var/run/keepalived.pid ExecStart=/usr/local/keepalived/sbin/keepalived --pid=/var/run/keepalived.pid --config=/etc/keepalived/keepalived.conf ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure[Install] WantedBy=multi-user.target
-
重新加載 Systemd 配置并啟動服務
sudo systemctl daemon-reload sudo systemctl start keepalived sudo systemctl enable keepalived
-
檢查服務狀態
sudo systemctl status keepalived
2.2 在節點 Backup 上安裝 Keepalived
安裝方法與 Master 一致, 配置文件 keepalived.conf 需要修給為以下
! Configuration File for keepalivedglobal_defs {router_id NGINX_BACKUPscript_user rootenable_script_security
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1mcast_src_ip 192.168.159.130authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.159.200}
}
三、啟動 keepalived 服務驗證 VIP 是否掛起
四、安裝 Nginx 服務器
pass
五、測試 Nginx
在 Master 上的 Nginx 的 HTML配置 MASTER
在 Backup 上的 Nginx 的 HTML 配置 Buckup
5.1 訪問虛擬 IP 192.168.159.200
5.2 把 Master 的 keepalived 關閉,模擬服務故障
發現 VIP 192.168.159.200 切換到 備用服務器,訪問 192.168.159.120