天天看點

使用Keepalived+ipvs建構(高可用+負載均衡)環境!

   之前寫過一個heartbeat-ldirectord實作LVS的高可用,這裡引入一個輕量級的程式Keepalived基于VRRP協定工作,也能為服務提供高可用功能,這個程式的開發初衷是為了給lvs提供高可用。

下面我們來看看如何使用keepalived+ipvs實作高可用+負載均衡。

在RHEL6.4以後就提供了rpm格式的安裝包,這裡我們用源碼編譯安裝。

解壓源程式包,預編譯配置,編譯程式,安裝程式。

tar zxvf keepalived-1.2.13.tar.gz

./configure  --prefix=/usr/local/keepalived  --sysconfdir=/etc/

make && make install

編輯服務腳本,修改程式路徑。

vim /etc/init.d/keepalived

<a href="http://s3.51cto.com/wyfs02/M01/44/38/wKioL1PgO0zD0cJAAADv96mxCJg145.jpg" target="_blank"></a>

編輯主配置檔案/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {    //全局配置段

   notification_email {   //收件人郵箱

        root@localhost

   }

   notification_email_from keepadmin@localhost    //發件人

   smtp_server 127.0.0.1     //郵件伺服器

   smtp_connect_timeout 30   //等待逾時時間

   router_id LVS_DEVEL

}

vrrp_instance VI_1 {   //定義一個VRRP路由執行個體

    state MASTER    //初始狀态(備節點改為BACKUP)

    interface eth0

    virtual_router_id 51  //路由執行個體ID(唯一)

    priority 100     //優先級 (備節點的值要設定比主的低)

    advert_int 1     //通告頻率

    authentication {    //認證配置

        auth_type PASS   //認證類型

        auth_pass 1111   //密碼

    }

    virtual_ipaddress {    //虛拟IP

        192.168.18.18

 notify_master "/etc/keepalived/notify.sh master"  //狀态轉換通知,要自己寫好腳本。

 notify_backup "/etc/keepalived/notify.sh backup"

 notify_fault "/etc/keepalived/notify.sh fault"

virtual_server 192.168.18.18 80 {   //定義虛拟服務

    delay_loop 6   

    lb_algo wlc    //指定排程算法

    lb_kind DR     //指定工作模型

    nat_mask 255.255.255.0  

    persistence_timeout 0    //持久連接配接

    protocol TCP

    real_server 192.168.18.203 80 {     //定義RealServer

        weight 1      //設定權重 

        HTTP_GET {    //配置HTTP健康狀态檢測

            url {

              path /   //檢測的路徑

              status_code 200   //響應的狀态資訊

            }

            connect_timeout 3   //逾時時間

            nb_get_retry 3      //重試次數

            delay_before_retry 3  //每一次重試之前等待的時間

        }

    real_server 192.168.18.204 80 {

        weight 2

        HTTP_GET {

              path /

              status_code 200

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

把配置檔案同步到備節點,修改我上面提到的兩個地方即可,兩個節點啟動Keepalived服務。

RealServer配置(略)

scp /etc/keepalived/keepalived.conf admin2:/etc/keepalived/

/etc/init.d/keepalived start

檢視主節點生成的配置

<a href="http://s3.51cto.com/wyfs02/M01/44/3A/wKioL1PgQsXQSilFAARhbTuMsPI761.jpg" target="_blank"></a>

通路vip 192.168.18.18

<a href="http://s3.51cto.com/wyfs02/M00/44/3A/wKioL1PgQ0vSUdFEAADPguPp12k580.jpg" target="_blank"></a>

重新整理一下,請求自動轉發到第二台realserver。

<a href="http://s3.51cto.com/wyfs02/M01/44/3A/wKioL1PgQ9HjnDxjAADU-ggc238496.jpg" target="_blank"></a>

這時我們模拟壞了一台RealServer,将Realserver2-192.168.18.203網絡服務給stop,再看看狀态。

<a href="http://s3.51cto.com/wyfs02/M02/44/3E/wKioL1PgRd-hoPxxAAInQXlGlLI194.jpg" target="_blank"></a>

再把Realserver2給恢複。

<a href="http://s3.51cto.com/wyfs02/M01/44/3E/wKioL1PgR36D_f42AAH3A0Pw9QM939.jpg" target="_blank"></a>

這時我們模拟主Director故障了,把主節點網絡服務stop。

我們來到備節點

<a href="http://s3.51cto.com/wyfs02/M00/44/3E/wKioL1PgSKPRDU53AATldlDQ0sY874.jpg" target="_blank"></a>

主節點下線了,備節點優先級為最高,繼承資源,如果這是當主節點恢複後,資源還是會回到主節點的,因為主節點的優先級更高。

好了,這就實作了用keepalived給lvs提供高可用。

有問題歡迎與我交流QQ1183710107

本文轉自qw87112 51CTO部落格,原文連結:http://blog.51cto.com/tchuairen/1535840

繼續閱讀