Linux 構(gòu)建LVS+Keepalived高可用群集

2018-07-31 14:43 更新

防偽碼:不必向我訴說春天,我的心里并沒有秋寒

           第六章 構(gòu)建LVS+Keepalived高可用群集 

前言:keeplived是專門針對(duì)LVS設(shè)計(jì)的一款輔助工具,主要功能是實(shí)現(xiàn)故障切換和健康檢查,官方網(wǎng)站:http://www.keepalived.org。類似于我們以前學(xué)習(xí)過的HSRP熱備份路由協(xié)議,HSRP是思科的私有協(xié)議,而VRRP是通用協(xié)議,都是為了實(shí)現(xiàn)故障切換,當(dāng)一臺(tái)路由器發(fā)生故障的時(shí)候,另一臺(tái)馬上接替工作,用戶感覺不到服務(wù)器發(fā)生了問題,而且不會(huì)中斷服務(wù)。我們今天學(xué)習(xí)的雙機(jī)熱備是就是利用了VRRP虛擬路由冗余協(xié)議,和HRSP一樣都擁有一個(gè)虛擬的ip地址對(duì)外提供服務(wù),而不是真正的服務(wù)器ip地址,也擁有一臺(tái)主服務(wù)器和多臺(tái)備份服務(wù)器,優(yōu)先級(jí)高的做主路由器,備份服務(wù)器處于冗余狀態(tài),當(dāng)主服務(wù)器發(fā)生故障的時(shí)候,從服務(wù)器會(huì)變成主服務(wù)器,當(dāng)主服務(wù)器修好之后,會(huì)重新成為主路由器。這里和HSRP不同的是,HSRP需要配置占先權(quán),而這里不用配置,默認(rèn)都有占先權(quán)。

綜上所述,VRRP即一主 + 多備,共用同一個(gè)IP地址,但優(yōu)先級(jí)不同。

實(shí)驗(yàn)案例:構(gòu)建LVS+Keepalived高可用群集

實(shí)驗(yàn)分析:

Keepalived的設(shè)計(jì)目標(biāo)是構(gòu)建高可用的LVS負(fù)載均衡群集,可以調(diào)用ipvsadm工具來創(chuàng)建虛擬服務(wù)器、管理服務(wù)器池,而不僅僅用作雙機(jī)熱備。使用Keepalived構(gòu)建LVS群集更加簡(jiǎn)便易用,主要優(yōu)勢(shì)體現(xiàn)在:對(duì)LVS負(fù)載調(diào)度器實(shí)現(xiàn)熱備切換,提高可用性;對(duì)服務(wù)器池中的節(jié)點(diǎn)進(jìn)行健康檢查,自動(dòng)移除失效節(jié)點(diǎn),恢復(fù)后再重新加入。

本節(jié)將以DR模式的LVS群集為基礎(chǔ),增加一臺(tái)從負(fù)載調(diào)度器,使用Keepalived來實(shí)現(xiàn)主、從調(diào)度器的熱備,從而構(gòu)建兼有負(fù)載均衡、高可用兩種能力的LVS網(wǎng)站集群平臺(tái),如圖所示:

實(shí)驗(yàn)基礎(chǔ):

1、配置主調(diào)度器

1)安裝支持軟件(開發(fā)內(nèi)核包kernel-devel、openssl-devel,popt-devel支持庫)

2)編譯安裝Keepalived

3)使用Keepalived服務(wù)(手動(dòng)添加為系統(tǒng)服務(wù))

4)配置主調(diào)度器

Vi  /etc/keepalived/keepalived.conf

詳解配置參數(shù):

! Configuration File for keepalived


global_defs {

   notification_email {                                        //接收郵件的地址,需要postfix,這里可不寫

     acassen@firewall.loc

     failover@firewall.loc

     sysadmin@firewall.loc

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 127.0.0.1                                 //郵件服務(wù)器地址,這里填寫本機(jī)地址

   smtp_connect_timeout 30

   router_id R1                                                   //主調(diào)度器路由器名稱(注意與從調(diào)度器不能相同)

}


vrrp_instance VI_1 {

    state MASTER                                             //熱備狀態(tài),主為MASTER,備為BACKUP

    interface eth0                                               //承載VIP地址的物理接口,即外網(wǎng)卡的名稱

    virtual_router_id 1                                       //虛擬路由器的ID號(hào),每個(gè)熱備組保持一致

    priority 100                                                   //優(yōu)先級(jí),數(shù)值越大優(yōu)先級(jí)越高

    advert_int 1                                                  //通告間隔秒數(shù)(心跳頻率)

    authentication {                                            //認(rèn)證信息,每個(gè)熱備組保持一致

        auth_type PASS                                      //認(rèn)證類型

        auth_pass 1111                                        //密碼字串

    }

    virtual_ipaddress {                                        //漂移地址(VIP),可以有多個(gè)

        172.16.16.200

    }

}

virtual_server 172.16.16.200 {                           //虛擬服務(wù)器地址(VIP)

    delay_loop 6                                                     //健康檢查的間隔時(shí)間(秒)

    lb_algo rr                                                            //輪詢(rr)調(diào)度算法

    lb_kind DR                                                         //群集工作模式(DR即路由模式)      

    persistence_timeout 50                                    //連接保持時(shí)間 

    protocol TCP                                                      //應(yīng)用服務(wù)采用的是TCP協(xié)議


    real_server 172.16.16.173  {                             //第一個(gè)節(jié)點(diǎn)的地址

        weight 1                                                            //節(jié)點(diǎn)的權(quán)重

        TCP_CHECK {                                                //健康檢查方式

            connect_timeout 3                                        //連接超時(shí)   

            nb_get_retry 3                                               //重試次數(shù)

            delay_before_retry 3                                    //重試間隔(秒)   

        }

    }

}


    real_server 172.16.16.174  {                                  //同上

        weight 1

        TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}

5)開啟keepalived服務(wù)

注:inet 172.16.16.200/32 scope global eth0    //漂移地址,通俗來講,誰是主,誰優(yōu)先級(jí)高,跟著誰


6)從調(diào)度服務(wù)器的配置

首先安裝keepalived,和主服務(wù)器一樣,在配置的時(shí)候主要有三個(gè)地方不一樣:優(yōu)先級(jí)99,調(diào)度器名稱R2,熱備狀態(tài)為BACKUP

Vi /etc/keepalived/keepalived.conf(使用scp命令遠(yuǎn)程拷貝一份)

7)啟動(dòng)從服務(wù)器的Keepalived服務(wù)

8) 測(cè)試lvs+keepalived群集

在客戶機(jī)上訪問172.16.16.172,可以正常訪問,效果如下:

然后把主調(diào)度器的外網(wǎng)卡斷掉,如果客戶端依然可以訪問網(wǎng)站,說明成功。

再次訪問網(wǎng)站

在從調(diào)度器上查看網(wǎng)卡配置,可以看到虛擬ip顯示了,說明現(xiàn)在從服務(wù)器成為了主調(diào)度器。

 

9) 測(cè)試聯(lián)通性

在客戶機(jī)上ping 172.16.16.172 -t,然后斷掉主調(diào)度器的外網(wǎng)卡,發(fā)現(xiàn)斷掉一下之后馬上又恢復(fù)通信,說明今天的實(shí)驗(yàn)成功了,

當(dāng)然最關(guān)鍵還是當(dāng)主服務(wù)器故障之后,用戶訪問網(wǎng)站沒有感覺,web節(jié)點(diǎn)的網(wǎng)頁也要完全一樣。

結(jié)語:通過主、從調(diào)度器的/var/log/messages日志文件,可以跟蹤故障切換過程;若要查看負(fù)載分配情況,可以執(zhí)行“ipvsadm -ln或ipvsadm -lnc”等命令。

最終可以驗(yàn)證LVS+Keepalived高可用負(fù)載均衡群集的健壯性。

謝謝觀看,真心的希望能幫到您!

本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)