1. 程式人生 > >2.Keepalived介紹 (接上keepalived安裝配置並測試)

2.Keepalived介紹 (接上keepalived安裝配置並測試)

cpu ash 說明 多臺 curl sta 配置 keepaliv ipaddress

2.Keepalived介紹
在這裏我們使用Keeplived來實現高可用集群,因為heartbeat在centos6上有一些問題,影響實驗效果(切換不及時問題)
keepalived通過VRRP(Virtual router redundancy protocl虛擬路由冗余協議)來實現高可用
在這個協議裏會將多臺功能相同的的路由器組成一個小組,這個小組裏會有一個master角色和N(N>=)個backup角色。(blacpup備用)
master會通過組播的形式向各個backup發送VRRP協議的數據包,當backup收不到master發來的VRRP數據包時,就會認為master宕機了。此時就需要根據各個backup的優先級來決定誰成為新的master。
keepalived要有三個模塊,分別是core、check和vrrp,其中core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析,check模塊負責健康檢查,vrrp模塊主要負責vrrp協議的實現。
3.用Keepalived配置高可用
準備兩臺機器ip尾號(隨機)130和132,130作為master,132作為backup
兩臺機器都執行 yum install -y keepalived
兩臺機器都安裝nginx, yum install -y nginx
vim /etc/keepalived/keepalived.conf 首先清空配置文件
編輯主130上的keepalived配置文件,內容如下
global_defs {
notification_email { 出現問題時給個郵箱發郵件[email protected]
br/>[email protected]
notification_email_from [email protected] 由哪個郵箱發出去
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_script chk_nginx { 檢測服務是否正常

script "/usr/local/sbin/check_ng.sh" 寫的腳本存放的地方檢查nginx是否正常的腳本
interval 3 檢測時間為3秒鐘
}

vrrp_instance VI_1 { 定義master
state MASTER
interface ens33 定義網卡
virtual_router_id 51 路由器ID
priority 100 權重
advert_int 1
authentication { 認證相關
auth_type PASS
auth_pass shenguanchu>com
}
virtual_ipaddress { 定義共有IP主從都能訪問
192.168.237.100
}

track_script {
    chk_nginx                                                          加載到nginx
}

}
主上130編輯監控腳本,內容從 檢查nginx是否正常的腳本
vim /usr/local/sbin/checkng.sh路徑可自定義
#!/bin/bash
#時間變量,用於記錄日誌
d=`date --date today +%Y%m%d
%H:%M:%S<br/>#計算nginx進程數量<br/>n=ps -C nginx --no-heading|wc -l<br/>#如果進程為0,則啟動nginx,並且再次檢測nginx進程數量,<br/>#如果還為0,說明nginx無法啟動,此時需要關閉keepalived<br/>if [ $n -eq "0" ]; then<br/>/etc/init.d/nginx start<br/>n2=ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
server keepalived stop
fi
fi

給腳本755權限
chmod 755 /usr/local/sbin/check_ng.sh
systemctl start keepalived 130啟動重新 (service keepalived start centos6命令)
ip add 查看virtual_ipaddress是否綁定
ps aux |grep keepalived 查看是否啟動
iptables -nvL 查看是否有防火墻
getenforce查看是否disabled
從上操作
132上編輯配置文件
global_defs {
notification_email { 出現問題時給個郵箱發郵件[email protected]
br/>[email protected]
notification_email_from [email protected] 由哪個郵箱發出去
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_script chk_nginx { 檢測服務是否正常
script "/usr/local/sbin/check_ng.sh" 寫的腳本存放的地方檢查nginx是否正常的腳本
interval 3 檢測時間為3秒鐘
}

vrrp_instance VI_1 { 定義master
state Backup
interface ens33 定義網卡
virtual_router_id 51 路由器ID
priority 90 權重
advert_int 1
authentication { 認證相關
auth_type PASS
auth_pass shenguanchu>com
}
virtual_ipaddress { 定義共有IP主從都能訪問
192.168.237.100
}

track_script {
    chk_nginx                                                          加載到nginx
}

}
132編輯監控腳本,內容從 檢查nginx是否正常的腳本
vim /usr/local/sbin/checkng.sh路徑可自定義
#!/bin/bash
#時間變量,用於記錄日誌
d=`date --date today +%Y%m%d
%H:%M:%S<br/>#計算nginx進程數量<br/>n=ps -C nginx --no-heading|wc -l<br/>#如果進程為0,則啟動nginx,並且再次檢測nginx進程數量,<br/>#如果還為0,說明nginx無法啟動,此時需要關閉keepalived<br/>if [ $n -eq "0" ]; then<br/>server nginx start<br/>n2=ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
server keepalived stop
fi
fi
給腳本755權限
chmod 755 /usr/local/sbin/check_ng.sh
systemctl start keepalived 132啟動重新 (service keepalived start centos6.5命令)
ps aux |grep keepalived 查看是否啟動
iptables -nvL 查看是否有防火墻
getenforce查看是否disabled
4.測試高可用
先確定好兩臺機器上nginx差異,比如可以通過curl -i 來查看nginx版本
測試1 關閉master上nginx服務
測試2 關閉master上的keepalived服務
測試3 啟動master上的keepalived服務

2.Keepalived介紹 (接上keepalived安裝配置並測試)