1. 程式人生 > >基於LVS-DR模型實現keepalived的主從架構

基於LVS-DR模型實現keepalived的主從架構

lvs-dr、keepalived

在一個系統中,常常存在一些單點服務器,為了提高整個系統的穩定性,我們常常需要對這些單點服務做高可用配置,keepalived即為一種常用的高可用配置服務。

首先我們來了解一下神馬是keepalived?技術分享

keepalived是一個基於VRRP協議來實現的WEB服務高可用方案,可以利用其來避免單點故障。使用多臺節點安裝keepalived。其他的節點用來提供真實的服務,同樣的,他們對外表現一個虛擬的IP。主服務器宕機的時候,備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。

keepalived主要是模塊是VRRP Stack和Cheackers,實現HA集群 中失敗切換(Failover)功能。Keepalived通過VRRP功能能再結合LVS負載均 衡軟件即可部署一個高性能的負載均衡集群系統。,Cheackers主要實現可 實現對服務器運行狀態檢測和故障隔離。其中ipvs和realserver健康狀態檢 查通過配置文件配置就可以實現,而其他服務高可用則需要通過自己編寫腳 本,然後配置keepalived調用來實現。

Keepalived運行有3個守護進程。父進程主要負責讀取配置文件初始化 、監控2個子進程等;然後兩個子進程,一個負責VRRP,另一個負責 Cheackers健康檢查。其中父進程監控模塊為WacthDog,工作實現:每個 子進程打開一個接受unix域套接字,父進程連接到那些unix域套接字並向子 進程發送周期性(5s)hello包。 上圖是Keepalived的功能體系結構,大致分兩層:用戶空間(user space) 和內核空間(kernel space)。 內核空間:主要包括IPVS(IP虛擬服務器,用於實現網絡服務的負載均衡) 和NETLINK(提供高級路由及其他相關的網絡功能)兩個部份。

Keepalived有以下幾個特性:

配置文件簡單、穩定性強、成本低廉、應用範圍廣、支持多種類型

上面我們有提到VRRP,接下來就簡單介紹下VRRP。技術分享

VRRP(Virtual Router Redundancy Protocol,虛擬路由冗余協議) 可以認為是實現路由器高可用的協議,簡單的說,當一個路由器故障時可以 由另一個備份路由器繼續提供相同的服務。

VRRP根據優先級來確定虛擬路由器中每臺路由器的角色(Master路由 器或Backup路由器)。VRRP優先級的取值範圍為0到255(數值越大表明 優先級越高),可配置的範圍是1到254,優先級0為系統保留給路由器放棄 Master位置時候使用,255則是系統保留給IP地址擁有者使用。優先級越高 ,則越有可能成為Master路由器。當兩臺優先級相同的路由器同時競爭 Master時,比較接口IP地址大小。接口地址大者當選為Master。

這些名詞我們都已經簡單GET到了,下面我們就以一個實驗來驗證這些原理的正確性。

實驗:

一、環境準備

兩臺centos系統做DR、一主一從,兩臺實現過基於LNMP的電子商務網站。

機器名

Ip配置

服務角色

備註

Lvs-server-master

VIP:172.17.253.1

DIP:172.17.254.117

負載均衡器(主服務器)

開啟路由功能

(配置leepalived

Lvs-server-backup

VIP:172.17.253.1

DIP:172.17.252.244

負載均衡器(從服務器)

開啟路由功能

(配置leepalived)

Lnmp-server1

RIP:172.17.254.17

VIP:172.17.253.1

後端服務器


Lnmp-server2

RIP:172.17.254.107

VIP:172.17.253.1

後端服務器


技術分享

主從架構圖

二、安裝步驟:

1、兩臺服務器都使用yum方式安裝keepalived服務

2、iptables -F && setenforing 清空防火墻策略,關閉selinux

三、修改keepalived主(lvs-server-master)配置文件實現virtual_instance和virtual_server:

vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.17.253.1
    }
}
virtual_server 172.17.253.1 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
 
    real_server 172.17.254.17 80 {
        weight 1
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.17.254.107 80 {
        weight 1
        HTTP_GET {
            url {
              path /
}
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

四、修改keepalived從(lvs-server-backup)配置文件實現virtual_instance和virtual_server:

vrrp_instance VI_1 {
    state BACKUP
    interface ens37
    virtual_router_id 51
    priority 98
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 2222
    }
     virtual_ipaddress {
        172.17.253.1
    }
}
virtual_server 172.17.253.1 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
 
    real_server 172.17.254.17 80 {
        weight 1
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.17.254.107 80 {
        weight 1
        HTTP_GET {
            url {
path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

五、測試訪問:http://172.17.253.1

1.在兩臺均衡器上都開啟keepalived服務的情況下,web網站能正常訪問。

2.在主服務器上關閉keepalived服務進行測試。

技術分享


技術分享

3.在從服務器上關閉keepalived服務進行測試

技術分享

技術分享


技術分享


基於LVS-DR模型實現keepalived的主從架構