天天看點

Linux高可用(HA)叢集之Keepalived的介紹

一、Keepalived介紹

什麼是Keepalived呢,keepalived觀其名可知,保持存活,在網絡裡面就是保持線上了, 也就是所謂的高可用或熱備,用來防止單點故障(單點故障是指一旦某一點出現故障就會導緻整個系統架構的不可用)的發生,那說到keepalived時不得不說的一個協定就是VRRP協定,可以說這個協定就是keepalived實作的基礎,那麼首先我們來看看VRRP協定。

二、VRRP協定

Virtual Route Redundancy Protocol虛拟路由備援協定。是一種容錯協定,保證當主機的下一跳路由出現故障時,由另一台路由器來代替出現故障的路由器進行工作,進而保持網絡通信的連續性和可靠性。在介紹VRRP之前先介紹一些關于VRRP的相關術語:

虛拟路由器:由一個 Master 路由器和多個 Backup 路由器組成。主機将虛拟路由器當作預設網關。

VRID:虛拟路由器的辨別。有相同 VRID 的一組路由器構成一個虛拟路由器。

Master 路由器:虛拟路由器中承擔封包轉發任務的路由器。

Backup 路由器: Master 路由器出現故障時,能夠代替 Master 路由器工作的路由器。

虛拟 IP 位址:虛拟路由器的 IP 位址。一個虛拟路由器可以擁有一個或多個IP 位址。

IP 位址擁有者:接口 IP 位址與虛拟 IP 位址相同的路由器被稱為 IP 位址擁有者。

虛拟 MAC 位址:一個虛拟路由器擁有一個虛拟 MAC 位址。虛拟 MAC 位址的格式為 00-00-5E-00-01-{VRID}。通常情況下,虛拟路由器回應 ARP 請求使用的是虛拟 MAC 位址,隻有虛拟路由器做特殊配置的時候,才回應接口的真實 MAC 位址。

優先級: VRRP 根據優先級來确定虛拟路由器中每台路由器的地位。

非搶占方式:如果 Backup 路由器工作在非搶占方式下,則隻要 Master 路由器沒有出現故障,Backup 路由器即使随後被配置了更高的優先級也不會成為Master 路由器。

搶占方式:如果 Backup 路由器工作在搶占方式下,當它收到 VRRP 封包後,會将自己的優先級與通告封包中的優先級進行比較。如果自己的優先級比目前的 Master 路由器的優先級高,就會主動搶占成為 Master 路由器;否則,将保持 Backup 狀态。

VRRP将區域網路内的一組路由器劃分在一起,形成一個VRRP備份組,它在功能上相當于一台路由器的功能,使用虛拟路由器号進行辨別(VRID)。虛拟路由器有自己的虛拟IP位址和虛拟MAC位址,它的外在形式和實際的實體路由完全一樣。區域網路内的主機将虛拟路由器的IP位址設定為預設網關,通過虛拟路由器與外部網絡進行通信。

VRRP的工作過程:

(1) 虛拟路由器中的路由器根據優先級選舉出 Master。Master 路由器通過發送免費 ARP 封包,将自己的虛拟 MAC 位址通知給與它連接配接的裝置或者主機,進而承擔封包轉發任務;

(2) Master路由器周期性發送VRRP 封包,以公布其配置資訊(優先級等)和工作狀況;

(3)如果 Master 路由器出現故障,虛拟路由器中的Backup路由器将根據優先級重新選舉新的 Master;

(4) 虛拟路由器狀态切換時, Master 路由器由一台裝置切換為另外一台裝置,新的 Master 路由器隻是簡單地發送一個攜帶虛拟路由器的 MAC 位址和虛拟 IP位址資訊的ARP 封包,這樣就可以更新與它連接配接的主機或裝置中的ARP 相關資訊。網絡中的主機感覺不到 Master 路由器已經切換為另外一台裝置。

(5) Backup 路由器的優先級高于 Master 路由器時,由 Backup 路由器的工作方式(搶占方式和非搶占方式)決定是否重新選舉 Master。

VRRP優先級的取值範圍為0到255(數值越大表明優先級越高)

三、Keepalived的工作原理

Keepalived是基于VRRP協定實作的保證叢集高可用的一個服務軟體,主要功能是實作真機的故障隔離和負載均衡器間的失敗切換,防止單點故障。

Keepalived運作時,會啟動3個程序,分别為:core(核心程序),check和vrrp

core:是keepalived的核心,負責主程序的啟動,維護和全局配置檔案的加載解析等;

check:負責健康檢查,包括了各種檢查方式,以及對應的配置解析包括LVS的配置解析,

vrrp:用來實作vrrp協定

總結:在vrrp協定的基礎上實作了伺服器主機的負載均衡,VRRP負責排程器之間的高可用。

四、Keepalived 配置檔案介紹:

在yum安裝好keepalived之後,keepalived會産生一個配置檔案/etc/keepalived/keepalived.conf,配置檔案包含了三段:全局定義段、VRRP執行個體定義段、虛拟服務定義段。

global_defs {

notification_email {指定keepalived在發生切換時需要發送email到的對象。 [email protected]

}

notification_email_from [email protected] #指定發件人

#VRRP執行個體定義段

vrrp_instance VI_1 {

state MASTER #指定哪個為master,哪個為backup

interface eth0 #設定執行個體綁定的網卡

virtual_router_id 51 #VRID标記

priority 100 #優先級,高優先級的DR會搶占為master (預設為搶占模式)

advert_int 1 #檢查間隔,1秒

authentication { #設定認證

auth_type PASS #認證方式

auth_pass 1111 #認證字元串(使用 openssl rand -hex 6生成随機字元串)

virtual_ipaddress { #設定VIP

virtual_server 192.168.159.110 80 {

delay_loop 6 #健康檢查時間間隔,機關秒

lb_algo rr #負載排程算法,支援的算法:rr|wrr|lc|wlc|lblc|sh|dh

lb_kind DR #LVS的類型:有NAT|DR|TUN

nat_mask255.255.255.0 #子網路遮罩

persistence_timeout50 #會話保持時間,機關秒(可以适當延長時間以保持session) protocol TCP #轉發協定類型,有TCP和UDP兩種

real_server 192.168.159.151 80 { #定義RS 服務

weight 1#權重

#inhibit_on_failure #當伺服器健康檢查失效時,将weight設定為0不是直接從ipvs中删除

#後端RS伺服器的檢查 (HTTP_GET 和SSL_GET):

SSL_GET {

connect_timeout 3 #連接配接逾時時間

nb_get_retry 3 #重連次數

delay_before_retry 3 #重連間隔時間

本文轉自 優果馥思 51CTO部落格,原文連結:http://blog.51cto.com/youguofusi/2044113

繼續閱讀