keepalived nginx 主備配置
keepalived nginx 主備配置(多主多備同理)
1.Nginx服務安裝
nginx 不區分主備,在兩臺服務上安裝兩個即可。
安裝參考:https://www.cnblogs.com/zwcry/p/9454647.html
2.Keepalived服務安裝
keepalived 區分主備、多主多備的。
keepalived 多主多備 是把 單主單備 復制多份,調下優先級配置即可。
安裝參考:https://www.cnblogs.com/zwcry/p/9542867.html
主備配置參考:https://www.cnblogs.com/zwcry/p/9549756.html
3.環境描述
兩臺服務器(已按照1、2教程安裝)
IP.192.168.159.129
nginx 已安裝
keepalived 已安裝
IP.192.168.159.130
nginx 已安裝
keepalived 已安裝
4.修改keepalived.conf配置
192.168.159.129 (主)keepalived.conf
cd /etc/keepalived/ #進入默認配置目錄
vim keepalived.conf #編輯配置信息
修改為如下內容
! Configuration File for keepalived
vrrp_script chk_nginx {
script "/etc/keepalived/script/nginx_chk.sh" #執行腳本 該腳本權限必須是可以執行的X
interval 2 #上面的腳本沒兩秒執行一次
weight 0 #權重 0為不變
}
vrrp_instance VI_1 {
state MASTER #兩個值(主:MASTER 備:BACKUP),必須大寫
interface ens33 #網卡接口,ip a查看,上面主備搭建教程有講
virtual_router_id 51 #虛擬路由ID,主備或多主多備,需要全部設置一樣
priority 101 #優先級,越高越優先使用該服務
advert_int 1 #多個keepalived的通訊檢測間隔,單位秒
authentication { #認證類型與密碼,主備或多主多備需要設置一樣
auth_type PASS
auth_pass 1111
}
track_script { #執行腳本
chk_nginx #上面定義的vrrp_script chk_nginx
}
virtual_ipaddress {
192.168.159.110 #定義虛擬IP,換行可以定義多個
}
}
192.168.159.130(備) keepalived.conf
cd /etc/keepalived/ #進入默認配置目錄
vim keepalived.conf #編輯配置信息
修改為如下內容
! Configuration File for keepalived
vrrp_script chk_nginx {
script "/etc/keepalived/script/nginx_chk.sh"
interval 2
weight 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.159.110
}
}
5.編寫vrrp_script nginx_chk.sh腳本(該腳本必須有執行權限)
192.168.159.129(主)nginx_chk.sh
cd /etc/keepalived/script/ #無目錄,自己創建
vim nginx_chk.sh 編輯腳本
添加如下內容
#!/bin/bash
if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
/usr/local/nginx/sbin/nginx
sleep 2
if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
保存
chmod 775 nginx_chk.sh #賦值執行權限
192.168.159.130(備) nginx_chk.sh
cd /etc/keepalived/script/ #無目錄,自己創建
vim nginx_chk.sh 編輯腳本
添加如下內容
#!/bin/bash
if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
/usr/local/nginx/sbin/nginx
sleep 2
if [ "$(ps -C nginx --no-heading|wc -l)" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
保存
chmod 775 nginx_chk.sh #賦值執行權限
6.測試
1)停止nginx,nginx自動重啟成功
2)停止主keepalived,虛擬IP自動切換至備keepalived
3)訪問虛擬IP自動跳轉至nginx
4)其他測試不演練了
註:Keepavlied不影響Nginx服務,Keepalived運行狀態或非運行狀態,Nginx該怎樣還是怎樣。
Keepalied只是配合lvs將訪問虛擬IP的請求,轉發到虛擬IP所在服務器上。而這臺服務器上的Nginx監聽到後,再做應用層的請求轉發。
keepalived nginx 主備配置