keepalived—>vrrp(虛拟路由備援協定)—>實作路由器的高可用(一個master,多個backup vip)
1、概念
keepalived是什麼
keepalived是叢集管理中保證叢集高可用的一個服務軟體(防止單點故障)
它能夠保證當個别節點當機時,整個網絡可以不間斷的運作,是以,keepalived一方面也可以實作系統網絡服務的高可用功能
2、keepalived工作原理
是以VRRP協定為實作基礎的,VRRP全稱Virtual Router Redundancy Prorocol,即,虛拟路由備援協定
虛拟路由備援協定,可以認為是實作路由器高可用的協定,即将N台提供相同的路由器組成一個路由器組,這個組裡面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在區域網路内其他機器的預設路由為該vip),master會發多點傳播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了
3、Keepalived高可用故障切換轉移原理
Keepalived高可用服務對之間的故障切換轉移,是通過 VRRP (Virtual Router Redundancy Protocol ,虛拟路由器備援協定)來實作的。
在 Keepalived服務正常工作時,主 Master節點會不斷地向備節點發送(多點傳播的方式)心跳消息,用以告訴備Backup節點自己還活看,當主 Master節點發生故障時,就無法發送心跳消息,備節點也就是以無法繼續檢測到來自主 Master節點的心跳了,于是調用自身的接管程式,接管主Master節點的 IP資源及服務。而當主 Master節點恢複時,備Backup節點又會釋放主節點故障時自身接管的IP資源及服務,恢複到原來的備用角色。
那麼,什麼是VRRP呢?
VRRP ,全 稱 Virtual Router Redundancy Protocol ,中文名為虛拟路由備援協定 ,VRRP的出現就是為了解決靜态踣甶的單點故障問題,VRRP是通過一種競選機制來将路由的任務交給某台VRRP路由器的
實驗
server1和server4,server4做主用,server1做備用
server2和server3是後端伺服器,配置http服務
server1–server4的ip分别為
172.25.23.1
172.25.23.2
172.25.23.3
172.25.23.4
server4(主)
1)編譯
tar zxf keepalived-2.0.6.tar.gz
vim /etc/yum.repos.d/rhel-source.repo
yum install openssl-devel -y
yum instal libnl libnl-devel -y
yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm ##此包需要官網下載下傳
yum install gcc -y
cd keepalived-2.0.6
./configure --with-init=SYSV --prefix=/usr/local/keepalived ##編譯源碼,--prefix是安裝路徑
make && make install
常見問題:
1.configure: error: libnfnetlink headers missing
解決:下載下傳這兩個包
libnfnetlink-1.0.0-1.el6.x86_64.rpm 先裝libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm後裝
如果安裝rpm包報錯
yum remove libnfnetlink.x86_64 執行後在安裝包,就可以完成
2)作連結,做連接配接是為了和環境一緻
cd /usr/local/
scp -r keepalived/ [email protected]:/usr/local/ ##将server4中的檔案發送到server1中
du -sh keepalived/ ##檢視keepalived/大小,此步實驗不用做
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived ##給權限
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
yum install ipvsadm -y
3)修改配置檔案
vim /etc/keepalived/keepalived.conf
3 global_defs {
4 notification_email {
5 [email protected] ##當機給誰發郵件
6 }
7 notification_email_from [email protected] ##keepalived發郵件
8 smtp_server 127.0.0.1 ##發送郵件到本機
9 smtp_connect_timeout 30 ##緩沖30s
10 router_id LVS_DEVEL
11 vrrp_skip_check_adv_addr
12 #vrrp_strict
13 vrrp_garp_interval 0
14 vrrp_gna_interval 0
15 }
16
17 vrrp_instance VI_1 {
18 state MASTER ##狀态是MASTER
19 interface eth0 ##接口
20 virtual_router_id 74 ##虛拟路由節點位址
21 priority 100 ##權重是100
22 advert_int 1
23 authentication {
24 auth_type PASS
25 auth_pass 1111
26 }
27 virtual_ipaddress {
28 172.25.23.100
29 }
30 }
31
32 virtual_server 172.25.23.100 80 {
33 delay_loop 3 ##循環檢測3次後才會報錯
34 lb_algo rr
35 lb_kind DR ##DR模式
36 #persistence_timeout 50 ##注釋掉,此句是保持連接配接,不注釋就會影響輪詢效果
37 protocol TCP
38
39 real_server 172.25.23.2 80 {
40 TCP_CHECK
41 weight 1
42 connect_timeout 3
43 retry 3
44 delay_before_retry 3
45 }
46 }
47
48
49 real_server 172.25.23.3 80 {
50 TCP_CHECK
51 weight 1
52 connect_timeout 3
53 retry 3
54 delay_before_retry 3
55 }
56 }
57
58 }
4) 安裝郵件服務
yum install mailx -y ##安裝郵件軟體
scp /etc/keepalived/keepalived.conf [email protected]:/etc/keepalived/ ##把server4中的配置檔案發送給server1
/etc/init.d/keepalived start
tail -f /var/log/messages ##檢視日至,看啟動是否正常
ipvsadm -l
server1(備)
(配置與server4同,配置檔案修改成備用,權重修改到小于主用)
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
/etc/init.d/ldirectord stop
chkconfig ldirectord off
ipvsadm -l
ipvsadm -C
ipvsadm -l
ip addr show
ip addr del 172.25.23.100/24 dev eth0
ip addr show
ipvsadm -l
vim /etc/keepalived/keepalived.conf
18 state BACKUP ##裝态,備用
19 interface eth0
20 virtual_router_id 74
21 priority 50 ##權重值
22 advert_int 1
yum install mailx -y
/etc/init.d/keepalived start
tail -f /var/log/messages ##檢視日至,看啟動是否正常
測試
關掉server2的http服務
在真機多次通路
server4 mail檢視郵件
主機下線,備機服務,主機上線,切換回主機
附:高可用的文字描述
Keepalived的工作原理:
Keepalived高可用對之間是通過VRRP通信的,是以,可以從 VRRP開始了解起:
1) VRRP,全稱 Virtual Router Redundancy Protocol,中文名為虛拟路由備援協定,VRRP的出現是為了解決靜态路由的單點故障。
2) VRRP是通過一種竟選協定機制來将路由任務交給某台 VRRP路由器的。
3) VRRP用 IP多點傳播的方式(預設多點傳播位址(224.0_0.18))實作高可用對之間通信。
4) 工作時主節點發包,備節點接包,當備節點接收不到主節點發的資料包的時候,就啟動接管程式接管主節點的開源。備節點可以有多個,通過優先級競選,但一般 Keepalived系統運維工作中都是一對。
5) VRRP使用了加密協定加密資料,但Keepalived官方目前還是推薦用明文的方式配置認證類型和密碼。
介紹完 VRRP,接下來再介紹一下 Keepalived服務的工作原理:
Keepalived高可用對之間是通過 VRRP進行通信的, VRRP是通過競選機制來确定主備的,主的優先級高于備,是以,工作時主會優先獲得所有的資源,備節點處于等待狀态,當主挂了的時候,備節點就會接管主節點的資源,然後頂替主節點對外提供服務。
在 Keepalived服務對之間,隻有作為主的伺服器會一直發送 VRRP廣播包,告訴備它還活着,此時備不會槍占主,當主不可用時,即備監聽不到主發送的廣播包時,就會啟動相關服務接管資源,保證業務的連續性.接管速度最快可以小于1秒。