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 注:兩個負載服務器上都需要部署nginx服務並開啓
解析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服務 注:兩臺lb01和lb02都要部署
第一個里程:安裝keepalived服務軟件
yum install -y keepalived第二個里程:編寫keepalived配置文件
vim /etc/keepalived/keepalived.confman keepalived.conf --- 配置文件說明信息
配置文件結構:
GLOBAL CONFIGURATION --- 全局配置()
VRRPD CONFIGURATION --- vrrp配置()
LVS CONFIGURATION --- LVS服務相關配置lb01主負載均衡器配置
! Configuration File for keepalived
global_defs {
router_id lb01 -----不同處1
}
vrrp_instance gorup01 {
state MASTER -----不同處2
interface eth0
virtual_router_id 51
priority 150 -----不同處3
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 reloadlb02配置信息 注:ip a能看到eth0網卡上有多個地址
! Configuration File for keepalived
global_defs {
router_id lb02 -----不同處1
}
vrrp_instance group01 {
state BACKUP -----不同處2
interface eth0
virtual_router_id 51
priority 100 -----不同處3
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 reload3)進行測試訪問 注:用谷歌瀏覽器進行訪問
-
部署keepalived高可用服務問題
同時在keepalived高可用集羣中,出現了兩個虛擬IP地址信息,這種情況就稱爲腦裂腦裂情況出現原因:
- 心跳線出現問題
網卡配置有問題
交換設備有問題
線纜連接有問題 - 有防火牆軟件阻止問題
- virtual_router_id配置數值不正確
總之:只要備服務器收不到組播包,就會成爲主,而主資源沒有釋放,就會出現腦裂
利用shell腳本實現監控管理:
備用設備有VIP就是表示不正常- 真正實現主備切換
- 出現腦裂情況了
#!/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反向代理配置 注:lb01和lb02兩臺服務器都要配置
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地址 注:lb01和lb02兩臺服務器都要配置
[root@lb02 keepalived]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-14.0/conf/nginx.conf syntax is ok
nginx: [emerg] bind() to 10.0.0.3:80 failed (99: Cannot assign requested address)
nginx: configuration file /application/nginx-14.0/conf/nginx.conf test failed
解決方法:
echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
sysctl -p -
將keepalived服務和反向代理nginx服務建立聯繫
nginx反向代理服務停止,keepalived服務也停止
1)編寫腳本
vim /server/scripts/check_web
#!/bin/bash
web_info=$(ps -ef|grep [n]ginx|wc -l)
if [ $web_info -lt 2 ]
then
/etc/init.d/keepalived stop
fichmod +x check_web.sh --- 修改腳本可執行權限
2)修改nginx配置文件,實現監控nginx服務
vim /etc/keepalived/keepalived.conf --------編輯keepalived服務配置文件
vrrp_script check_web {
#定義一個監控腳本,腳本必須有執行權限
script "/server/scripts/check_web.sh"
#指定腳本間隔時間
interval 2
#腳本執行完成,讓優先級值和權重值進行運算,從而實現主備切換
weight 2
} 注意:放在global和vrrp之間調用 注:放在virtual後面
track_script {
check_web
} -
實現高可用集羣架構中雙主配置(互爲主備配置)
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反向代理監控地址信息
www.etiantian.org 10.0.0.3:80
bbs.etiantian.org 10.0.0.4:80