LVS Keepalived構建高可用負載均衡配置方法(配置篇)

LVS Keepalived構建高可用負載均衡配置方法(配置篇)

一、 LVS簡介

   LVS是Linux Virtual Server的簡稱,也就是Linux虛擬伺服器, 是一個由章文嵩博士發起的自由軟體專案,它的官方站點是www.linuxvirtualserver.org。現在LVS已經是 Linux標準核心的一部分,在Linux2.4核心以前,使用LVS時必須要重新編譯核心以支援LVS功能模組,但是從Linux2.4核心以後,已經完全內建了LVS的各個功能模組,無需給核心打任何補丁,可以直接使用LVS提供的各種功能。使用LVS技術要達到的目標是:通過LVS提供的負載均衡技術和Linux作業系統實現一個高效能、高可用的伺服器群集,它具有良好可靠性、可擴充套件性和可操作性。從而以低廉的成本實現最優的服務效能。

      關於LVS的安裝與介紹,在前面的文章中已經有過深入介紹,這裡不再講述。

本文講解的環境如下:

作業系統:統一採用Centos5.3版本,地址規劃如下:

 

圖1

         圖1中的VIP指的是虛擬IP地址,還可以叫做LVS叢集的服務IP,在DR、TUN模式中,資料包是直接返回給使用者的,所以,在Director Server上以及叢集的每個節點上都需要設定這個地址。此IP在Real Server上一般繫結在迴環地址上,例如lo:0,同樣,在Director Server上,虛擬IP繫結在真實的網路介面裝置上,例如eth0:0。
 各個Real Server可以是在同一個網段內,也可以是相互獨立的網段,還可以是分佈在internet上的多個伺服器.

LVS Keepalived高可用負載均衡叢集拓撲結構如圖2所示:

 

圖2

二、安裝Keepalived

keepalived起初是為LVS設計的,專門用來監控叢集系統中各個服務節點的狀態,後來又加入了VRRP的功能,VRRP是Virtual Router Redundancy Protocol(虛擬路由器冗餘協議)的縮寫,VRRP出現的目的就是為了解決靜態路由出現的單點故障問題,它能夠保證網路的不間斷、穩定的執行。所以,keepalived一方面具有伺服器健康檢測功能,另一方面也具有HA cluster功能。 
 Keepalived的官方站點是http://www.keepalived.org,可以在這裡下載到各種版本,我們這裡下載的是keepalived-1.1.19.tar.gz,安裝步驟如下:
[[email protected] ~]#tar zxvf keepalived-1.1.19.tar.gz
[[email protected] ~]#cd keepalived-1.1.19
[[email protected] keepalived-1.1.19]#./configure   –sysconf=/etc \
> –with-kernel-dir=/usr/src/kernels/2.6.18-8.el5-i686
[[email protected] keepalived-1.1.19]#make
[[email protected] keepalived-1.1.19]#make install
[[email protected] keepalived-1.1.19]#ln -s /usr/local/sbin/keepalived  /sbin/
 在編譯選項中,“–sysconf”指定了Keepalived配置檔案的安裝路徑,即路徑為/etc/Keepalived/Keepalived.conf,“–with-kernel-dir”這是個很重要的引數,但這個引數並不是要把Keepalived編譯進核心,而是指定使用核心原始碼裡面的標頭檔案,就是include目錄。如果要使用LVS時,才需要用到此引數,否則是不需要的.

三、配置Keepalived

 Keepalived的配置非常簡單,僅僅需要一個配置檔案即可完成HA cluster和lvs服務節點監控功能,Keepalived的安裝已經在上面章節進行了介紹,在通過Keepalived搭建高可用的LVS叢集例項中,主、備Director Server都需要安裝Keepalived軟體,安裝成功後,預設的配置檔案路徑為/etc/Keepalived/Keepalived.conf。一個完整的keepalived配置檔案,有三個部分組成,分別是全域性定義部分、vrrp例項定義部分以及虛擬伺服器定義部分,下面詳細介紹下這個配置檔案中每個選項的詳細含義和用法:
 

#全域性定義部分
global_defs {
   notification_email {
     [email protected]     #設定報警郵件地址,可以設定多個,每行一個。注意,如果要開啟郵件報警,需要開啟本機的sendmail服務。
     [email protected]
   }
   notification_email_from [email protected]     #設定郵件的傳送地址。
   smtp_server 192.168.200.1 #設定smtp server地址。
   smtp_connect_timeout 30 #設定連線smtp伺服器超時時間。
   router_id  LVS_MASTER    #執行Keepalived伺服器的一個標識。發郵件時顯示在郵件標題中的資訊
}

#vrrp例項定義部分
vrrp_instance VI_1 {
state MASTER  #指定Keepalived的角色,MASTER表示此主機是主用伺服器,BACKUP表示是備用伺服器。
    interface eth0        #指定HA監測網路的介面。
    virtual_router_id 51 #虛擬路由標識,這個標識是一個數字,並且同一個vrrp例項使用唯一的標識,即同一個vrrp_instance下,MASTER和BACKUP必須是一致的。
priority 100 #定義優先順序,數字越大,優先順序越高,在一個vrrp_instance下,MASTER的優先順序必須大於BACKUP的優先順序。
    advert_int 1   #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒。
    authentication {        #設定驗證型別和密碼。
        auth_type PASS     #設定驗證型別,主要有PASS和AH兩種。
        auth_pass 1111 #設定驗證密碼,在一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通訊。
    }
    virtual_ipaddress {  #設定虛擬IP地址,可以設定多個虛擬IP地址,每行一個。
        192.168.12.135
    }
}

#虛擬伺服器定義部分
virtual_server 192.168.12.135 80 {       #設定虛擬伺服器,需要指定虛擬ip地址和服務埠,ip與埠之間用空格隔開。
    delay_loop 6      #設定健康檢查時間,單位是秒。
    lb_algo rr  #設定負載排程演算法,這裡設定為rr,即輪詢演算法。
    lb_kind DR                       #設定LVS實現負載均衡的機制,可以有NAT、TUN和DR三個模式可選。
persistence_timeout 50                  #會話保持時間,單位是秒,這個選項對於動態網頁是非常有用的,為叢集系統中session共享提供了一個很好的解決方案。有了這個會話保持功能,使用者的請求會被一直分發到某個服務節點,直到超過這個會話保持時間。需要注意的是,這個會話保持時間,是最大無響應超時時間,也就是說使用者在操作動態頁面時,如果在50秒內沒有執行任何操作,那麼接下來的操作會被分發到另外節點,但是如果一直在操作動態頁面,則不受50秒的時間限制。
    protocol TCP       #指定轉發協議型別,有tcp和udp兩種。

real_server 192.168.12.246 80 { #配置服務節點1,需要指定real server的真實IP地址和埠,ip與埠之間用空格隔開。
weight 3 #配置服務節點的權值,權值大小用數字表示,數字越大,權值越高,設定權值的大小可以為不同效能的伺服器分配不同的負載,可以對效能高的伺服器設定較高的權值,而對效能較低的伺服器設定相對較低的權值,這樣就合理的利用和分配了系統資源。
        TCP_CHECK {   #realserve的狀態檢測設定部分,單位是秒
            connect_timeout 10     #10秒無響應超時
            nb_get_retry 3  #重試次數
            delay_before_retry 3    #重試間隔
        }
    }

    real_server 192.168.12.237 80 {  #配置服務節點2
        weight 1   
        TCP_CHECK {
            connect_timeout 3   
            nb_get_retry 3           
            delay_before_retry 3
        }
    }
}

          在配置Keepalived.conf時,需要特別注意配置檔案的語法格式,因為Keepalived在啟動時並不檢測配置檔案的正確性,即使沒有配置檔案,Keepalived也照樣能啟動起來,因而配置檔案一定要正確。
          在預設情況下,Keepalived在啟動時會查詢/etc/Keepalived/Keepalived.conf配置檔案,如果你的配置檔案放在了其它路徑下,可以通過“Keepalived  -f”引數指定你所在的配置檔案路徑即可。
          Keepalived.conf配置完畢後,將此檔案拷貝到備用Director Server對應的路徑下,然後做兩個簡單的修改即可:
 將“state MASTER”更改為“state BACKUP”
 將priority 100更改為一個較小的值,這裡改為“priority 80”
 最後,還要配置叢集的Real server節點,以達到與Director Server相互廣播通訊並忽略arp的目的,指令碼的內容已經在前面文章中進行過介紹,這裡不做解釋。

(待續)

本文出自 “技術成就夢想” 部落格,請務必保留此出處http://ixdba.blog.51cto.com/2895551/586898

您可能感興趣的文章:

Keepalived HAProxy實現MySQL高可用負載均衡的配置LVS Keepalived構建高可用負載均衡(測試篇)haproxy keepalived實現高可用負載均衡(例項配置)haproxy keepalived實現高可用負載均衡(理論篇)keepalived實現nginx高可用