天天看點

高可用性叢集keepalived

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秒。

繼續閱讀