keepalived

1>keepalived原理及配置介紹
什麼是Keepalived呢,keepalived觀其名可知,保持存活,在網絡裏面就是保持在線了,也就是所謂的高可用或熱備,用來防止單點故障(單點故障是指一旦某一點出現故障就會導致整個系統架構的不可用)的發生,Keepalived通過請求一個vip來達到請求真實IP地址的功能,而VIP能夠在一臺機器發生故障時候,自動漂移到另外一臺機器上,從來達到了高可用HA功能。那說到keepalived時不得不說的一個協議就是VRRP協議,可以說這個協議就是keepalived實現的基礎,那麼首先我們來看看VRRP協議。

一,VRRP協議
學過網絡的朋友都知道,網絡在設計的時候必須考慮到冗餘容災,包括線路冗餘,設備冗餘等,防止網絡存在單點故障,那在路由器或三層交換機處實現冗餘就顯得尤爲重要,在網絡裏面有個協議就是來做這事的,這個協議就是VRRP協議,Keepalived就是巧用VRRP協議來實現高可用性(HA)的只需要把服務器當作路由器即可!keepalived完全遵守VRRP協議,包括競選機制等等

二,Keepalived原理

Keepalived原理
keepalived也是模塊化設計,不同模塊實現不同的功能,下面是keepalived的組件
core check vrrp libipfwc libipvs-2.4 libipvs-2.6

core:是keepalived的核心,複雜主進程的啓動和維護,全局配置文件的加載解析等
check:負責healthchecker(健康檢查),包括了各種健康檢查方式,以及對應的配置的解析包括LVS的配置解析
vrrp:VRRPD子進程,VRRPD子進程就是來實現VRRP協議的
libipfwc:iptables(ipchains)庫,配置LVS會用到
libipvs*:配置LVS會用到
注意,keepalived和LVS完全是兩碼事,只不過他們各負其責相互配合而已

常用作用: 高可用web架構: LVS+keepalived+nginx+tomcat+php+eaccelerator(+nfs可選 可不選)
keepalived啓動後會有三個進程
父進程:內存管理,子進程管理等等
子進程:VRRP子進程
子進程:healthchecker子進程

安裝
yum -y install keepalived
systemctl enable keepalived
keepalived.conf配置文件說明
vim /etc/keepalived/keepalived.conf
keepalived服務安裝完成之後,後面的主要工作就是在keepalived.conf文件中配置HA和負載均衡。一個功能比較完整的常用的keepalived配置文件,主要包含三塊:全局定義塊、VRRP實例定義塊和虛擬服務器定義塊。全局定義塊是必須的,如果keepalived只用來做ha,虛擬服務器是可選的。下面是一個功能比較完整的配置文件模板:
全局定義塊:global_defs
#email通知(notification_email、smtp_server、smtp_connect_timeout):用於服務有故障時發送郵件報警,可選項,不建議用。需要系統開啓sendmail服務,建議用第三獨立監控服務,如用nagios全面監控代替。
#vrrp_strict: 在全局配置下使用了vrrp_strict 參數。此參數爲嚴格控制VRRP協議,不支持單播模式, 如果配置了此參數,keepalived 在啓動後會在iptables中自動添加一條DROP VIP的規則,會導致vip無法通訊。註釋掉此選項,將不會默認添加DROP規則。
router_id:用戶標識本節點的名稱,通常爲hostname
VRRP實例定義塊:vrrp_instance VI_1
vrrp_instance vrrp_test {
實例名

state MASTER
實例狀態,只有MASTER 和 BACKUP兩種狀態,並且需要全部大寫。搶佔模式下,其中MASTER爲工作狀態,BACKUP爲備用狀態。當MASTER所在的服務器失效時,BACKUP所在的服務會自動把它的狀態由BACKUP切換到MASTER狀態。當失效的MASTER所在的服務恢復時,BACKUP從MASTER恢復到BACKUP狀態。

interface eth0
對外提供服務的網卡接口,即VIP綁定的網卡接口。如:eth0,eth1。當前主流的服務器都有2個或2個以上的接口(分別對應外網和內網),在選擇網卡接口時,一定要覈實清楚。

virtual_router_id 66
虛擬路由ID,主備必須爲一樣,取值在0-255之間,用來區分多個instance的VRRP組播,同一網段內ID不能重複;

priority 100
節點優先級,用來選舉master的,取值範圍0~254,MASTER要比BACKUP高

advert_int 1
檢查間隔默認爲1秒,即1秒進行一次master選舉(可以認爲是健康查檢時間間隔)

authentication {
auth_type PASS
auth_pass 1111
}
認證類型和驗證密碼。類型主要有 PASS、AH 兩種,默認使用PASS類型,據說AH使用時有問題。驗證密碼爲明文,同一vrrp 實例MASTER與BACKUP使用相同的密碼才能正常通信。

nopreempt
禁止搶佔服務。默認情況,當MASTER服務掛掉之後,BACKUP自動升級爲MASTER並接替它的任務,當MASTER服務恢復後,升級爲MASTER的BACKUP服務又自動降爲BACKUP,把工作權交給原MASTER。當配置了nopreempt,MASTER從掛掉到恢復,不再將服務搶佔過來。

virtual_ipaddress {
192.168.100.6
192.168.100.7
}
}
虛擬IP地址池,可以有多個IP,每個IP佔一行,不需要指定子網掩碼。注意:這個IP必須與我們的設定的vip保持一致。虛擬服務器:virtual_server定義塊,該部分是用來管理LVS的,是實現keepalive和LVS相結合的模塊。ipvsadm命令可以實現的管理在這裏都可以通過參數配置實現
virtual_server 192.168.100.6 666 {
定義一個虛擬服務器,這個ip是virtual_ipaddress中定義的其中一個,後面一個空格,然後加上虛擬服務的端口號。

delay_loop 3
健康檢查時間間隔,單位:秒

lb_algo rr
負載均衡調度算法,互聯網應用常用方式爲wlc或rr

lb_kind DR
負載均衡轉發規則。包括DR、NAT、TUN 3種,一般使用路由(DR)轉發規則

persistence_timeout 50
http服務會話保持時間,單位:秒

protocol tcp
轉發協議,分爲TCP和UDP兩種

real_server 192.168.10.9 666 {
真實服務器IP和端口,可以定義多個

weight 1
負載權重,值越大,轉發的優先級越高
notify_down
檢測到real_server服務down後執行腳本

notify_up
檢測real_server到服務up後執行腳本

TCP_CHECK { #健康檢查方式, 健康檢查方式一共有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK這些
connect_timeout 3 #連接超時時間
nb_get_retry 3 #重連次數
delay_before_retry 3 #重連間隔時間
connect_port 23 #健康檢查的端口
bindto <ip> #健康檢查的IP地址
}
}
}
啓動服務
systemctl start keepalived

啓用ip轉發
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章