keepalived配置

1、什麼是keepalived?

keepalived是集羣管理中保證集羣高可用的一個服務軟件,用來檢測服務器的狀態以及loadbbalance主機和backup主機之間的failover(故障切換)防止單點故障。在集羣當中如果有一臺服務器宕機或工作出現故障,keepalived將檢測到並將有故障的服務器踢出集羣,同時讓其他服務器來代替該服務器的工作,當服務器恢復正常後keepalived自動將該服務器加入到集羣中,完全不需要人工干涉,只需要做好相關配置,並修復有故障的服務器即可。

2、keepalived有什麼優勢?

keepalived安裝簡單,配置簡明,配置完之後所有切換都是自動完成,無需人工參與。

3、keepalived是如何工作的:

keepalived是以vrrp(virtual router redundancy protocol)協議,即虛擬路由冗餘協議實現的。vrrp是實現路由器高可用的協議,將多臺提供相同服務的路由器組成一個路由組,組內有一個主路由和多個備份路由組成。master使用組內的VIP(虛擬IP)對外提供服務,master使用組播地址224.0.0.18向backup發送vrrp通告。當backup收不到master發送的vrrp通告時,就認爲master宕機了。通過vrrp的優先級在backup中重啓選舉一個優先級高的當做master對外提供服務。這樣就保證了路由的高可用。

keepalived是一個類似於layer3, 4 & 7交換機制的軟件,即IP/TCP協議棧的IP、TCP及應用層。

layer3工作原理:此時keepalived工作在IP/TCP協議棧的中IP層。以服務器的IP地址作爲服務器工作正常與否的標準,master通過組播定期發送ICMP數據包,如果發現有返回異常的IP,keepalived將認爲這臺服務器失效,並提出服務器羣

layer4工作原理:此時keepalived工作在IP/TCP協議棧的中TCP層。以服務提供的TCP端口的狀態來決定服務器的工作是否正常,如果檢測到端口監聽異常,則keepalived將把這臺服務器從服務器羣中踢出。

layer7工作原理:此時keepalived工作在IP/TCP協議棧的中應用層。相比較來說比layer3、layer4要負責,網絡佔用帶寬也要大一些,使用也相對較少。keepalived將根據用戶自己的設定配置檢查服務程序是否正常,如果跟用戶設定不相符,則將視爲服務器存在異常並將踢出服務器羣。

4、keepalived的配置文件

一個功能比較完整的keepalived 的配置文件,其配置文件keepalived.conf 可以包含三個文本塊:全局定義塊(global_defs)、VRRP實例定義塊(vrrp_instance)及虛擬服務器定義塊(virtual_server)。全局定義塊和虛擬服務器定義塊是必須的,如果在只有一個負載均衡器的場合,就不須VRRP 實例定義塊。其中"!"表示註釋



4、修改配置文件。keepalived配置文件只有一個位於:/etc/keepalived/keepalived.conf,羣組中所有主機上的配置文件基本都是相同的的,唯一不同的參數是:router_id(運行keepalived服務的一個服務器標識)、priority(選舉優先級)、real_server(本機監聽keepalived服務的IP及端口)





keepalived配置文件只有一個位於:/etc/keepalived/keepalived.conf

[root@node2 keepalived]# cat keepalived.conf 

! Configuration File for keepalived


global_defs { !//定義全局配置

   notification_email {               !//當發生VIP切換時,由哪些用戶接收郵件。

     [email protected]

     [email protected]

   }

   notification_email_from [email protected]     !//發件人

   smtp_server 192.168.200.1                           !//smtp服務器地址

   smtp_connect_timeout 30 !//連接smtp服務器超時時間

   router_id ROUTER_1 !//運行keepalived服務的一個服務器標識

}


vrrp_instance HTTP_1 {   !//定義VRRP實例

    state BACKUP !//節點在羣組中的身份,做好都設置成BACKUP,避免相互搶佔,導致寫入錯誤

    interface eth0 !//實例綁定的網卡

    virtual_router_id 51 !//實例ID標記,範圍1-255,羣組中都要保持一致,同一網段中應該唯一,避免衝突

    priority 100 !//優先級,初始啓動後優先級高的是master

    advert_int 5 !//健康檢查時間間隔。默認爲1s,

    nopreempt !//不搶佔,只能設置在backup主機上並且優先級要比其他的高

    authentication { !//認證區域

        auth_type PASS !//認證類型:PASS,HA(IPSEC),推薦PASS

        auth_pass 1111 !//密碼認證密碼。

    }

    virtual_ipaddress { !//虛擬IP區域,指定VIP地址

        192.168.199.188

    }

}


virtual_server 192.168.199.188 80 { !//定義虛擬服務器,虛擬IP+端口

    delay_loop 5 !//健康檢查時間間隔,單位:s

    lb_algo rr !//後端調度算法,(rr|wrr|lc|wlc|lblc|sh|dh)

    lb_kind DR !//負載均衡的轉發規則(NAT|DR|TUN)

    persistence_timeout 50 !//會話保持時間,單位:s

    protocol TCP !//指定協議類型。(TCP|UDP)

    sorry_server 192.168.199.14 80      !//當所有realserver都失效後啓用

    real_server 192.168.199.188 443 {    !//定義服務節點。指定後端IP+端口

        weight 1 !//配置權重

        SSL_GET { !//運行狀態監測

            url {

              path /

              digest ff20ad2481f97b1754ef3e12ecd3a9cc

            }

            url {

              path /mrtg/

              digest 9b3a0c85a887a256d6939da88aabd8cd

            }

            connect_timeout 3   !//連接超時時間

            nb_get_retry 3 !//重試連接次數

            delay_before_retry 3 !//重試連接時間

        }

    }

}


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