一、軟體安裝配置
1. 軟體安裝
yum install -y keepalived
2. 服務配置
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
! configuration file for keepalived
global_defs
notification_email_from [email protected] --- 設定連線的郵件伺服器資訊
smtp_server 163.smtp.***_
smtp_connect_timeout 30
router_id lvs_devel --- 高可用集群主機身份標識(集群中主機身份標識名稱不能重複)
}vrrp_instance southbay
virtual_ipaddress
}
二、高可用服務應用
1. 高可用服務常見異常問題---腦裂問題
由於某些原因,導致兩台高可用伺服器對在指定時間內無法檢測到對方的心跳訊息,各自取得資源及服務的所有權,而此時的兩台高可用伺服器對都還活著並在正常執行,這樣就會導致同乙個ip或服務在兩端同時存在而發生衝突,最嚴重的是兩台主機占用同乙個vip位址,當使用者寫入資料時可能會分別寫入到兩端,這可能會導致伺服器兩端的資料不一致或造成資料丟失,這種情況就被稱為裂腦。
一般來說,導致裂腦發生的原因有以下幾種:
(1)高可用伺服器對之間心跳線鏈路故障,導致無法正常通訊。
ロ心跳線壞了(包括斷了、老化)。
ロ網絡卡及相關驅動壞了,ip配置及衝突問題(網絡卡直連)。
ロ心跳線間連線的裝置故障(網絡卡及交換機)。
ロ仲裁的機器出問題(採用仲裁的方案)。
(2)高可用伺服器對上開啟了 iptables防火牆阻擋了心跳訊息傳輸。
(3)高可用伺服器對上心跳網絡卡位址等資訊配置不正確,導致傳送心跳失敗。
(4)其他服務配置不當等原因,如心跳方式不同、心跳廣播衝突、軟體bug等。
(5)keepalived配置裡同一vrrp例項如果 virtual_router_id引數兩端配置不一致,也會導致裂腦問題發生。
在實際生產環境中,我們可以從以下幾個方面來防止裂腦問題發生:常見的解決 keepalived裂腦的方案
作為網際網路應用伺服器的高可用,特別是前端web負載均衡器的高可用,裂腦的問題對普通業務的影響是可以忍受的,如果是資料庫或者儲存的業務,一且出現裂腦問題就非常嚴重了。因此,可以通過增加冗餘心跳線路來避免裂腦問題的發生,同時加強對系統的監控,以便裂腦發生時人為快速介人解決問題。
ロ如果開啟防火牆,一定要讓心跳訊息通過,一般通過允許ip段的形式解決
ロ可以拉一條乙太網網線或者串列埠線作為主被節點心跳線路的冗餘
ロ開發監測程式通過監控軟體(如 nagios)監測裂腦
下面是生產場景下檢測裂腦故障的一些思路:
(1)簡單判斷的思想:只要備節點出現vip就報警,這個報警有兩種情況,一是主機宕機了備機接管了;二是主機沒宕,裂腦了。不管屬於哪個情況都進行報警。然後由人工檢視判斷及解決。
(2)比較嚴的判斷:備節點出現對應vip。並且主節點及對應服務(如果能遠端連線主節點檢視是否有vip就更好了)還活著,就說明發生裂腦了。
腦裂報警指令碼:
[root@lb02 scripts]# cat check_split_brain.sh
#!/bin/sh
lb01_vip=10.0.0.3
lb01_ip=10.0.0.5
while true
doping -c 2 -w 3 $lb01_ip &>/dev/null
if [ $? -eq 0 -a 'ip add|grep "$lb01_vip"|wc -l' -eq 1]
then
echo "lb01 is split brain.warning"
else
ehco "lb01 is ok"
fisleep 5
done
2. 高可用集群雙主配置
a. 配置第一台伺服器
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
! configuration file for keepalived
global_defs
vrrp_instance v1
virtual_ipaddress
}vrrp_instance v2
virtual_ipaddress
}
b. 配置第二台伺服器
[root@lb02 ~]# cat /etc/keepalived/keepalived.conf
! configuration file for keepalived
global_defs
vrrp_instance v1
virtual_ipaddress
}vrrp_instance v2
virtual_ipaddress
}
3. 高可用服務安全配置
[root@lb01 ~]# cd /etc/nginx/conf.d/
[root@lb01 conf.d]# vim www.conf
upstream southbay
server
}server
}# 設定網絡卡上沒有的位址
[root@lb01 ~]# echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
[root@lb01 ~]# sysctl -p
Keepalived高可用集群
目錄 keepalived keepalived實現主備 keepalived軟體起初是專為lvs負載均衡軟體設計的,用來管理並監控lvs集群系統中各個伺服器節點的狀態,後來又加入了實現高可用的vrrp功能。因此 keepalived 除了能夠管理lvs軟體外,還可以作為其他服務 例如 nginx ...
keepalived高可用集群
1.keepalived服務概念說明 keepalived軟體能幹什麼?keepalived軟體起初是專為lvs負載均衡軟體設計的,用來管理並監控lvs集群系統中各個服務節點的狀態,後來又加入了可以實現高可用的vrrp功能 keepalived軟體主要是通過vrrp協議實現高可用功能的。vrrp是v...
高可用集群 Keepalived
1.vrrp熱備 ftp,mysql,httpd,nginx,lvs 2.自動配置lvs規則 3.健康檢查 使用keepalived實現web伺服器的高可用 web伺服器ip位址分別為192.168.4.100和192.168.4.200 web伺服器的浮動vip位址為192.168.4.80 客戶...