十一、keepalived高可用集群章節 (一)keepalived服務概念說明 (二)部署keepalived高可用服務 1)確認反向代理服務是否工作正常 第一個裡程:在lb01/lb02上測試web伺服器是否可以正常 第二個裡程:在瀏覽器上測試訪問lb01/lb02 2)安裝部署高可用keepa ...
十一、keepalived高可用集群章節
(一)keepalived服務概念說明
keepalived軟體能幹什麼?
Keepalived軟體起初是專為LVS負載均衡軟體設計的,
用來管理並監控LVS集群系統中各個服務節點的狀態,後來又加入了可以實現高可用的VRRP功能
Keepalived軟體主要是通過VRRP協議實現高可用功能的。
VRRP是Virtual Router Redundancy Protocol(虛擬路由器冗餘協議)的縮寫,
VRRP出現的目的就是為瞭解決靜態路由單點故障問題的,它能夠保證當個別節點宕機時,
整個網路可以不間斷地運行
keepalived軟體工作原理?(重點)
原理
1)VRRP協議,全稱Virtual Router Redundancy Protocol,中文名為虛擬路由冗餘協議,
VRRP的出現是為瞭解決靜態路由的單點故障。
2)VRRP是用過IP多播的方式(預設多播地址(224.0.0.18))實現高可用對之間通信的。
3)工作時主節點發包,備節點接包,當備節點接收不到主節點發的數據包的時候,
就啟動接管程式接管主節點的資源。備節點可以有多個,通過優先順序競選,
但一般Keepalived系統運維工作中都是一對。
keepalived軟體主要功能?
①. 管理LVS負載均衡軟體
②. 實現對LVS集群節點健康檢查功能
③. 作為系統網路服務的高可用功能
(二)部署keepalived高可用服務
1)確認反向代理服務是否工作正常
第一個裡程:在lb01/lb02上測試web伺服器是否可以正常
curl -H host:www.etiantian.org 10.0.0.7/oldboy.html
curl -H host:www.etiantian.org 10.0.0.8/oldboy.html
curl -H host:www.etiantian.org 10.0.0.9/oldboy.html
curl -H host:bbs.etiantian.org 10.0.0.7/oldboy.html
curl -H host:bbs.etiantian.org 10.0.0.8/oldboy.html
curl -H host:bbs.etiantian.org 10.0.0.9/oldboy.html
第二個裡程:在瀏覽器上測試訪問lb01/lb02
解析hosts文件,將功能變數名稱解析為10.0.0.5,進行測試訪問
解析hosts文件,將功能變數名稱解析為10.0.0.6,進行測試訪問
scp -rp /application/nginx/conf/nginx.conf 10.0.0.6:/application/nginx/conf/ ---測試前同步lb01和lb02配置文件
2)安裝部署高可用keepalived服務
第一個裡程:安裝keepalived服務軟體
yum install -y keepalived
第二個裡程:編寫keepalived配置文件
vim /etc/keepalived/keepalived.conf
man keepalived.conf --- 配置文件說明信息
配置文件結構:
GLOBAL CONFIGURATION --- 全局配置(*)
VRRPD CONFIGURATION --- vrrp配置(*)
LVS CONFIGURATION --- LVS服務相關配置
lb01主負載均衡器配置
global_defs {
router_id lb01
}
vrrp_instance gorup01 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
}
}
/etc/init.d/keepalived reload
lb02配置信息
global_defs {
router_id lb02
}
vrrp_instance group01 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
}
}
/etc/init.d/keepalived reload
3)進行測試訪問
(三)部署keepalived高可用服務問題
同時在keepalived高可用集群中,出現了兩個虛擬IP地址信息,這種情況就稱為腦裂
腦裂情況出現原因:
1. 心跳線出現問題
網卡配置有問題
交換設備有問題
線纜連接有問題
2. 有防火牆軟體阻止問題
3. virtual_router_id配置數值不正確
總之:只要備伺服器收不到組播包,就會成為主,而主資源沒有釋放,就會出現腦裂
利用shell腳本實現監控管理:
備用設備有VIP就是表示不正常
01. 真正實現主備切換
02. 出現腦裂情況了
#!/bin/bash
check_info=$(ip a|grep -c 10.0.0.3)
if [ $check_info -ne 0 ]
then
echo "keepalived server error!!!"
fi
(四)實現nginx反向代理監控虛擬IP地址
1)編寫nginx反向代理配置
server {
listen 10.0.0.3:80;
server_name www.etiantian.org;
root html;
index index.html index.htm;
location / {
proxy_pass http://oldboy;
proxy_set_header host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
listen 10.0.0.3:80;
server_name bbs.etiantian.org;
root html;
index index.html index.htm;
location / {
proxy_pass http://oldboy;
proxy_set_header host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
/application/nginx/sbin/nginx -s stop
/application/nginx/sbin/nginx
netstat -lntup|grep nginx
tcp 0 0 10.0.0.3:80 0.0.0.0:* LISTEN 53334/nginx
實現監聽本地網卡上沒有的IP地址
echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
sysctl -p
(五)將keepalived服務和反向代理nginx服務建立聯繫
nginx反向代理服務停止,keepalived服務也停止
1)編寫腳本
#!/bin/bash
web_info=$(ps -ef|grep [n]ginx|wc -l)# [n]過濾grep自身的進程。
if [ $web_info -lt 2 ]
then
/etc/init.d/keepalived stop
fi
2)運行腳本,實現監控nginx服務
編輯keepalived服務配置文件
vrrp_script check_web {
#定義一個監控腳本,腳本必須有執行許可權
script "/server/scripts/check_web.sh"
#指定腳本間隔時間
interval 2
#腳本執行完成,讓優先順序值和權重值進行運算,從而實現主備切換
weight 2
}
track_script {
check_web
}
chmod +x check_web.sh --- 修改腳本可執行許可權
(六)實現高可用集群架構中雙主配置(互為主備配置)
lb01
vrrp_instance gorup01 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
}
}
vrrp_instance gorup02 {
state BACKUP
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.4/24 dev eth0 label eth0:1
}
}
lb02
vrrp_instance gorup01 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
}
}
vrrp_instance gorup02 {
state MASTER
interface eth0
virtual_router_id 52
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.4/24 dev eth0 label eth0:1
}
}
修改nginx反向代理監控地址信息