天天看點

keepalived+lvs 叢集的部署(一)

第一keepalived 的介紹

1  keepalived是lvs 的擴充項目,是以keepalived 和lvs 之間具備良好的相容性

 2  keepalived通過對伺服器池中的對象進行健康檢查,同時實作了對失效機器和服務的故障隔離,并把其從服務池中删除(當然我們在keepalived 的主配置檔案中同樣能夠定義讓其不删除,而是把其的權重設定成0)如果失效的機器或者服務,正常恢複時,keepalived 能夠自動把其加入服務池。

 3  keepalived 通過VRRPv2虛拟路由協定(Virtual Router Redundancy Protocol實作了負載均衡之間的失敗切換

 4  keepalived是一個高度子產品化設計的軟體,而且keepalived 工作TCP/IP  3,4,5層。 

第二  keepalived 體系架構 如下圖

   1 keepalvied整體上分為使用者空間和核心空間. 。

  2  處于下端的核心空間,包含ipvs 和NETLINKK ,LVS 的縮寫LINUX  Virture Service 的縮寫,是一個虛拟的伺服器叢集系統。netlink 提供進階路由及其他相關的網絡伺服器功能

 3 watchdog 是負責監控checkers和VRRP程序

  4 Checkers 是負責真實伺服器的健康檢查healthchecking,是keepalived的最重要的功能

  5 VRRP starck 負責負載均衡器之間的失敗切換FailOver.

   6 IPVS wrapper 用來發送設定的規則到核心IPVS 代碼

   7         Netlink Reflector  用來設定Vrrp的 虛拟位址VIP

   8         keepalived 采用的是多程序的設計模式,每個程序負責不同的功能

第三 實驗的系統規劃及其 keepalived 安裝

    1 兩台keepalived 主機,兩台Realserver 主機

          ha1

eth0 192.168.2.211

eth1 10.80.2.1

             ha2   eth0 192.168.2.107

                   eth1 10.80.2.2

             Realserver1   192.168.2.155

             Realserver2   192.168.2.153

            VIP   192.168.2.188

2.修改keepalived 兩台主機的主機名,并安裝Ipvsadm  當然您可以選擇用rpm 或者用源碼包安裝,但是如果要用源碼包安裝,在編譯安裝時可能報錯, 解決方法 (一 ) .可以選擇編譯核心,(二),#做一個核心連接配接檔案

  #cd /usr/src

  #ln –sv   kernel/2.6.18-164.el5      ./linux

       3. 安裝keepalived

         #tar  -xvf keepalived-1.1.20.tar.gz

         #cd  keepalived-1.1.20

         #./configure

            Keepalived configuration

------------------------

Keepalived version         : 1.1.20

Compiler                 : gcc

Compiler flags             : -g -O2

Extra Lib                  : -lpopt -lssl -lcrypto

Use IPVS Framework        : Yes

IPVS sync daemon support   : Yes

Use VRRP Framework       : Yes

Use LinkWatch             :No

Use Debug flags            : No

             注: Use IPVS Framework  IPVS 架構即是LVS的核心代碼架構,如果不使用LVS,當然在編譯configure 時指定參數disable-lvs,那時該項就是No

                  Use sync daemon support IPVS 同步程序,如果Use IPVS Framework 選項為no 時,同樣該處也為No,如果不想使用LVS的同步程序sync daemon ,同樣在configure 中可以禁止該項,disable-lvs-syncd

            Ues VRRP Framework   VRRP是keepalived 的核心程序,當然該架構是必須的

             Use Linkwatch  是通過接受核心發出的關于網卡的狀态資訊來判斷網卡的狀态,因為是核心發出的資訊,這樣在用戶端隻需要捕捉該資訊,當keepalived 主機網卡超過20塊的情況下使用該項

                #make  && make install

        4. 配置keepalived 啟動腳本

         # cd keepalived/etc

          #cp   keepalived.rh.init   /etc/init.d/keepalived

           chmod  755  /etc/init.d/keepalived

           #cp    keepalived.sysconfig      /etc/sysconfigure/keepalived

            #cd  /root/keepalived/keepalived-1.1.20/keepalived/etc/keepalived 

            #mkdir  /etc/keepalived

            #cp  keepalived.conf  /etc/keepalived

第四 keepalived配置檔案的說明

 keepalived的主配置文檔在/etc/keepalived/keepavlived.conf 

keepalived 的全局配置檔案對keepalived起效的配置,而VRRPD 是keepalived 的核心,LVS配置隻是需要使用keepalived來配置和管理LVS時需要使用,當然如果是隻用keepalived 配置高可用叢集是,LVS子產品就不需要配置

  配置檔案都是以塊的形式組織的,每個子產品的配置都需要用 {  } 的範圍之内

在keepalived 的主配置檔案中主要分為三個文本子產品分别是:  

全局子產品(Global Configuration),VRRPD配置子產品(VRRP 執行個體子產品),LVS子產品(虛拟服務子產品);

 1 全局配置(Global Configuration) 包括兩個部分: 即全局定義(global definition) 和靜态位址路由(Static ipaddress /routes)

      全局定義:主要是設定Keeplived 的通知機制和辨別,同時也不建議用該方法進行狀态監控,進行狀态監控時nagios 是不二的選擇

   靜态位址路由:該處是配置靜态位址和靜态路由的,換句話說不随着Vrrp instance 的開關的變化而變化,當然VIP不是static IPaddress,會随着VRRPD而添加和删除,設定靜态位址和靜态路由的格式如:src $SRC_IP  to $DST_IP dev $SRC_DEVICE 或者src  $SRC_IP  to  $DST_IP  via $GW dev $SRC_DEVICE

    2 .VRRPD 配置包括三個部分: 分别是VRRP腳本(VRRP scripts)   . VRRP同步組(syncgriuzation group) 和VRRP 執行個體(VRRP Instance):

VRRP scripts: 腳本會安周期性執行,每秒( 或者按照自己設定的時間間隔),被監控的執行個體會記錄退出的代碼,這些腳本被至少有被監控的執行個體的權重為o的執行個體才能執行,是以任意腳本可能的聲明都不會被系統所記錄,如果沒有特殊的設定,權重等于2,就意味着那些被監控的執行個體的優先級會被增加2,反過來,如果失敗,則那些執行個體的優先級會被減去2

 原文如下:The script will be executed periodically, every <interval> seconds. Its exit

code will be recorded for all VRRP instances which will want to monitor it.

Note that the script will only be executed if at least one VRRP instance

monitors it with a non-zero weight. Thus, any number of scripts may be

declared without taking the system down.If unspecified, the weight equals 2, which means that a success will add +2 to the priority of all VRRP instances which monitor it. On the opposite, a negative weight will be subtracted from the initial priority in case of failure.

syncgriuzation group: 如果不使用 VRRP Sync Groups 如果keepalived 主機有兩個網段,每個網段開啟一個VRRP 執行個體,如果對外的網段出現問題,VRRPD認為自己仍然認為健康,是以 Master和Backup 互相切換,進而導緻服務不能正常使用,同時高可用叢集也不能正常運作,Sync group 就是為了解決該問題,可以把兩個執行個體放進同一個Sync Group 中

 VRRP Instance 配置:執行個體主要是定義vrrp_sync——group 裡面的每組的漂移位址

     3.LVS  配置同樣也是包括兩個部分:虛拟主機組(Virtual server group ) 和虛拟主機(virtual server)。這些配置都會傳遞給ipvsadm 作為參數

      虛拟主機組: 目的就是然一台RealServer 上其中的一個Service可以屬于多個Virtual Server ,并且隻做一次健康檢查格式如下

            Virtual_server_group <STRING> {

                     #VIP  port

               <IPADDR>  <port>      

}

       虛拟主機:可以3種方式分别是:virtual_server IP port,virtual_server fwmark int, virtual_server  group string

  第五 拟主機健康監查方式:HTTP_GET|SSL_GET|TCP_CHECK|SMTP-CHECK|MISC_CHECK

1 HTTP_GET |SSL_GET

     { url { #HTTP/SSL 檢查的URL,該處可以指定多個URL

            path /

            digest  TRING>  #SSL檢查後的摘要資訊(genhash 工具算出)

            status_code 200 #HTTP檢查的傳回狀态

            }

           ….. #注:省略的和下文keepalived.conf 的配置相同

           }

    2  TCP_CHECK {}#注: 在keepalived的主配置檔案中用的就是該種方式進行健康檢查,該處就不再說明

    3  SMTP_CHECK 方式健康檢查

        SMTP_CHECK {

                host {

                    connect_ip  <IP ADDRESS>

                    connect_port  <port> #預設檢查的端口為25

                    }

                    connect_timeoust <INTEGER>

                     retry <INTEGER>

                     delay_before_retry <INTEGER>

                      #smtp HELO  請求指令的參數,可選  <INTEGER>

                       helo_name <STRING>|<QUOTED-STRING>

                   }

       4  MISC_CHECK 檢查方式,執行一個程式

              MISC_CHECK

                 {   misc_path  <STRING>  | <QUOTED_STRING>  # 注:外部程式或者腳本的路徑

                      misc_timeout <INT > #注:腳本執行的逾時時間

                    misc_dynamic       #如果設定了misc_dynamic,healthchecker程式的退出代碼會動态調整伺服器的權重

                      #傳回0:健康檢查OK,權重不被修改

                      #傳回1:健康檢查失敗,權重設0

                                  #傳回2-255:監控檢查OK,權重設定為: 退出狀态-2,比如傳回255,那麼權重weigh=255-2=253

本文轉自 freehat08 51CTO部落格,原文連結:http://blog.51cto.com/freehat/415954,如需轉載請自行聯系原作者