keepalive.conf # 配置文件
# VIP 101.21.55.12 10.10.10.12
# Real Server1 101.21.55.13 10.10.10.13
# Real Server2 101.21.55.14 10.10.10.14
#
! Configuration File for keepalived
# 全局定義部分
global_defs {
notification_email {
root@localhost # 設置報警郵件地址,可以設置多個,每行一個。注意,如果要開啓郵件報警,需要開啓本機的sendmail服務。
[email protected]
}
notification_email_from root@localhost # 設置郵件的發送地址
smtp_server 127.0.0.1 # 設置smtp server地址
smtp_connect_timeout 30 # 設置連接smtp服務器超時時間
router_id LVS_DEVEL # 運行Keepalived服務器的一個標識。發郵件時顯示在郵件標題中的信息
}
# vrrp實例定義部分,可以定義外網ip也可以定義內網ip。本文是2種方法同時定義使用
vrrp_instance VI_1 {
state MASTER # 指定Keepalived的角色,MASTER表示此主機是主用服務器,BACKUP表示是備用服務器
interface eth1 # 指定HA監測網絡的接口
virtual_router_id 1 # 虛擬路由標識,這個標識是一個數字,並且同一個vrrp實例使用唯一的標識,即同一個vrrp_instance下,MASTER和BACKUP必須是一致的。
priority 101 # 定義優先級,數字越大,優先級越高,在一個vrrp_instance下,MASTER的優先級必須大於BACKUP的優先級
advert_int 1 # 設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
authentication # 設定驗證類型和密碼
{
auth_type PASS # 設置驗證類型,主要有PASS和AH兩種
auth_pass xde.146_5%DJYP # 設置驗證密碼,在一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信
}
virtual_ipaddress # 設置虛擬IP地址,可以設置多個虛擬IP地址,每行一個
{
101.21.55.12
}
}
# 虛擬服務器定義部分
virtual_server 101.21.55.12 80 # 設置虛擬服務器,需要指定虛擬ip地址和服務端口,ip與端口之間用空格隔開
{
delay_loop 2 # 設置健康檢查時間,單位是秒
lb_algo wrr # 設置負載調度算法,這裏設置爲wrr,即最少鏈接調度
lb_kind DR # 設置負載均衡轉發規則,可以有NAT、TUN和DR三個模式可選
persistence_timeout 0 # 會話保持時間,單位是秒,這個選項對於動態網頁是非常有用的,爲集羣系統中session共享提供了一個很好的解決方案。有了這個會話保持功能,用戶的請求會被一直分發到某個服務節點,直到超過這個會話保持時間。需要注意的是,這個會話保持時間,是最大無響應超時時間,也就是說用戶在操作動態頁面時,如果在50秒內沒有執行任何操作,那麼接下來的操作會被分發到另外節點,但是如果一直在操作動態頁面,則不受50秒的時間限制
protocol TCP # 指定轉發協議類型,有tcp和udp兩種
nat_mask 255.255.255.240
gateway 101.21.55.158
real_server 101.21.55.13 80 # 配置服務節點1,需要指定real server的真實IP地址和端口,ip與端口之間用空格隔開
{
weight 1 # 設置權重,權值大小用數字表示,數字越大,權值越高,設置權值的大小可以爲不同性能的服務器分配不同的負載,可以對性能高的服務器設置較高的權值,而對性能較低的服務器設置相對較低的權值,這樣就合理的利用和分配了系統資源
TCP_CHECK # realserve的狀態檢測設置部分,單位是秒
{
connect_timeout 3 # 3秒無響應超時
nb_get_retry 3 # 重試次數
delay_before_retry 3 # 重試間隔
}
}
real_server 101.21.55.14 80 # 配置服務節點2
{
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
# 以下內容是定義內網的ip/vip及其real server,和上面內容相似,只是ip做了對應修改
vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass xde.146_5%DJYP
}
virtual_ipaddress {
10.10.10.12
}
}
virtual_server 10.10.10.12 80
{
delay_loop 2
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
gateway 10.10.10.1
persistence_timeout 0
protocol TCP
real_server 10.10.10.13 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 10.10.10.14 80 {
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的目的,腳本的內容已經在前面文章中進行過介紹,這裏不做解釋。