Show Table of Contents
4.1.1. 建立
章 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。每台負載平衡器都有兩張網路卡(eth0 與 eth1),一張用來處理外部的網際網路流量,另一張用來將請求路由至真實伺服器。此處使用的負載平衡演算法則是循環法(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 會配置逾時發生前所經過的秒數。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.