1. 程式人生 > >keepalived介紹

keepalived介紹

highlight 發送 keep pac cells 基本架構 服務器集群 監控 load

Keepalived介紹
Keepalived是一款高可用軟件,它的功能主要包括兩方面:
1)通過IP漂移,實現服務的高可用:服務器集群共享一個虛擬IP,同一時間只有一個服務器占有虛擬IP並對外提供服務,若該服務器不可用,則虛擬IP漂移至另一臺服務器並對外提供服務;
2)對LVS應用服務層的應用服務器集群進行狀態監控:若應用服務器不可用,則keepalived將其從集群中摘除,若應用服務器恢復,則keepalived將其重新加入集群中。

Keepalived可以單獨使用,即通過IP漂移實現服務的高可用,也可以結合LVS使用,即一方面通過IP漂移實現LVS負載均衡層的高可用,另一方面實現LVS應用服務層的狀態監控,如圖所示:

技術分享

Keepalived原理
Keepalived的實現基於VRRP(Virtual Router Redundancy Protocol,虛擬路由器冗余協議),而VRRP是為了解決靜態路由的高可用。VRRP的基本架構如圖所示:

技術分享

虛擬路由器由多個VRRP路由器組成,每個VRRP路由器都有各自的IP和共同的VRID(0-255),其中一個VRRP路由器通過競選成為MASTER,占有VIP,對外提供路由服務,其他成為BACKUP,MASTER以IP組播(組播地址:224.0.0.18)形式發送VRRP協議包,與BACKUP保持心跳連接,若MASTER不可用(或BACKUP接收不到VRRP協議包),則BACKUP通過競選產生新的MASTER並繼續對外提供路由服務,從而實現高可用。

Keepalived安裝配置

下載地址:http://www.keepalived.org/download.html

Linux下以默認配置安裝:

1 2 3 4 5 tar –zxvf keepalived-1.2.7.tar.gz cd keepalived-1.2.7 ./configure make make install

或:

1 yum install keepalived

執行腳本:

1 /etc/init.d/keepalived start|stop|restart

由於keepalived服務之間需要使用VRRP協議進行通信,因此需要進行防火墻配置:

1 2 3 iptables –I INPUT –i eth0 –d 224.0.0.0/8 –j ACCEPT iptables –A INPUT –i eth0 –p vrrp –j ACCEPT iptables –A OUTPUT –p vrrp –o eth0 –j ACCEPT

配置文件:

/etc/keepalived/keepalived.conf

Keeaplived的配置包含三部分:
1)全局配置,配置郵件等;
2)VRRPD配置,配置VRRP實例;
3)LVS配置,配置LVS的應用服務器;
若只是單獨使用keepalived,通過IP漂移實現服務的高可用,則只需要配置前兩部分就可以,若結合LVS使用,實現LVS負載均衡層的高可用、應用服務層的狀態監控,則還需要配置第三部分。

Keepalived應用示例
1)單獨使用(IP漂移)

技術分享

如圖所示,兩臺機器192.168.80.128、192.168.80.129共享虛擬IP 192.168.80.130,192.168.80.128、192.168.80.129的keepalived配置分別如下所示:

global_defs {

router_id LVS_DEVEL

}

vrrp_instance_VI_1{

state MASTER

interface eth0

virtual_router_id 201

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.80.130/24 dev eth0

}

}

global_defs {

router_id LVS_DEVEL

}

vrrp_instance_VI_1{

state BACKUP

interface eth0

virtual_router_id 201

priority 50

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.80.130/24 dev eth0

}

}

?啟動192.168.80.128、192.168.80.129上的keepalived

192.168.80.128成為MASTER,占有VIP 192.168.80.130並對外組播VRRP協議包

技術分享

技術分享

192.168.80.129無變化

技術分享

?關閉192.168.80.128上的keepalived

192.168.80.128不再占有VIP 192.168.80.130

技術分享

192.168.80.129成為MASTER,占有VIP 192.168.80.130並對外組播VRRP協議包

技術分享

技術分享

2)結合LVS使用

技術分享

LVS高可用集群通過VIP 192.168.80.130對外提供服務,負載均衡層有兩臺服務器192.168.80.132、192.168.80.135,負責分發服務請求至應用服務層,通過keepalived實現這兩臺服務器的負載均衡高可用(和單獨使用keepalived的應用示例相同),應用服務層也有兩臺服務器192.168.80.133、192.168.80.134,負責對外提供Web應用服務,通過keepalived實現這兩臺服務器的狀態監控。

192.168.80.132、192.168.80.135上的keepalived配置在全局配置、VRRPD配置上和單獨使用keepalived的應用示例相同,但需要添加LVS配置,如下所示:

virtual_server 192.168.80.130 80 {

delay_loop 6

lb_algowlc

lb_kind DR

persistence_timeout 50

protocolTCP

real_server 192.168.80.133 80 {

weight1

TCP_CHECK{

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 192.168.80.134 80 {

weight 1

TCP_CHECK{

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

啟動服務後,負載均衡層通過VIP對外提供服務,並將服務請求轉發至133和134這兩臺應用服務器上:

技術分享

技術分享

132和135這兩臺負載均衡服務器中,132占有VIP 130,並對133和134進行狀態監控:

技術分享

?應用服務狀態監控

若133和134這兩臺應用服務器中,134服務不可用,則keepalived將其從應用服務器集群中摘除,待其恢復後,又重新加入,在其恢復前,負載均衡層將應用請求均轉發至133,保證服務可用。

技術分享

技術分享

?負載均衡服務高可用

若132和135這兩臺負載均衡服務器中,132服務不可用,則keepalived將VIP 130漂移至135,由135負責應用請求轉發,保證服務可用。

技術分享

技術分享

keepalived介紹