Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

章 4. 搭配 Keepalived 進行 Load Balancer 的初始配置

安裝了 Load Balancer 套件之後,您必須進行一些基礎步驟,以設定 LVS 路由器和真實伺服器搭配使用 Keepalived。本章節詳細涵蓋了這些初始步驟。

4.1. 基本的 Keepalived 配置

在這基本範例中,有兩台系統被配置為負載平衡器。LB1(啟用)與 LB2(備用)會將請求路由至一組集區,集區包含了執行 httpd 的四台網站伺服器,真實 IP 位址為 191.168.1.20 到 192.168.1.24,並共享一組虛擬 IP 位址 192.168.1.11。每台負載平衡器都有兩張網路卡(eth0eth1),一張用來處理外部的網際網路流量,另一張用來將請求路由至真實伺服器。此處使用的負載平衡演算法則是循環法(Round Robin),路由方法為 NAT。

4.1.1. 建立 keeaplived.conf 檔案

Keepalived 是透過 keepalived.conf 檔案進行配置。要建立 load balancer 拓樸,如 節 4.1, “基本的 Keepalived 配置” 所示,請使用文字編輯器開啟 keepalived.conf。舉例來說:
vi /etc/keepalived/keepalived.conf
如〈節 4.1, “基本的 Keepalived 配置”〉所述,基本、配置好的負載平衡系統會有 keepalived.conf 檔案,如下所述:

4.1.1.1. 全域定義

keepalived.conf 檔案的「全域定義」一節能讓管理者指定負載平衡器發生變更時,進行通知的詳細資料。請注意「全域定義」是選用的,Keepalived 的配置不一定需要這一部分。


global_defs {

   notification_email {
       admin@example.com
   }
   notification_email_from noreply@example.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 60
}

notification_email 參數指的是負載平衡器的管理者,而 notification_email_from 是負載平衡器狀態改變的發送者位址。SMTP 的相關配置指定了發送通知所使用的郵件伺服器。

4.1.1.2. VRRP Instance



vrrp_sync_group VG1 {
   group {
      RH_EXT
      RH_INT
   }

vrrp_instance RH_EXT {
    state MASTER
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
	auth_pass password123
    }
    virtual_ipaddress {
    10.0.0.1
    }
}

vrrp_instance RH_INT {
   state MASTER
   interface eth1
   virtual_router_id 2
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass password123
   }
   virtual_ipaddress {
       192.168.1.1
   }
}

在此範例中,vrrp_sync_group 一節透過任何狀態上的變更(例如故障後復原),將 VRRP 群組定義在一起。在此範例中,有個 instance 是定義給用來與網際網路通訊的外部介面(RH_EXT),以及一組內部介面(RH_INT)。
vrrp_instance RH1 一行詳述了VRRP 服務 daemon 的虛擬介面配置。這會建立虛擬 IP instance。state MASTER 標示出啟用中的伺服器;配置中的備份伺服器也有上述的設置,但配置為 state BACKUP
interface 參數指定了這虛擬 IP instnace 的實體介面名稱,而 virtual_router_id 是這 instance 的數字識別子。priority 100 指定了備援發生時,接手的介面之順序;數字越小,優先順序越高。
authentication 為伺服器指定備援同步時使用的身份認證類型(auth_type)與密碼(auth_pass)。PASS 指定了密碼認證;Keepalived 也支援 AH(認證表頭,Authentication Header)作為連結的完整性使用。
最後,virtual_ipaddress 選項會指定虛擬 IP 位址。

4.1.1.3. 虛擬伺服器的定義


virtual_server 192.168.1.11 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT

    real_server 192.168.1.20 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }
    real_server 192.168.1.21 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }
    real_server 192.168.1.22 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }
    real_server 192.168.1.23 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }

}
在這一區裡,virtual_server 會以 IP 位址最先配置。然後 delay_loop 會配置每次健康檢查之間的秒數。lb_algo 選項會指定用於可用性的演算法則(在此例子中,rr 代表循環法 - Round-Robin)。lb_kind 選項會決定路由方式,此例使用 NAT(nat)。
配置虛擬伺服器的詳細資料後,就要配置 real_server 選項,同樣先配置 IP 位址。TCP_CHECK 一節會使用 TCP 檢查真實伺服器的可用性。connect_timeout 會配置逾時發生前所經過的秒數。