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 #編輯配置信息
謹記:該配置慎用空格,可以使用TAB或回車排版,空格會被識別為賦值,導致keepalived運行失敗
修改為如下內容
! 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 #編輯配置信息
謹記:該配置慎用空格,可以使用TAB或回車排版,空格會被識別為賦值,導致keepalived運行失敗
修改為以下內容
! 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 BACKUP#兩個值(主:MASTER 備:BACKUP),必須大寫
interface ens33#網卡接口,ip a查看,上面主備搭建教程有講
virtual_router_id 51#虛擬路由ID,主備或多主多備,需要全部設置一樣
priority 100#優先級,越高越優先使用該服務
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,換行可以定義多個
}
}
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)其他測試不演練了