十一、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反向代理監控地址資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/87914.html
標籤:Linux
