高可用LVS 集群構建
在LVS集群當中Director的作用是很關鍵的,所以我們在生產環境中要保證其高可用。
高可用架構圖:
1、通過 piranha搭建LVS高可用性集群
piranha是REDHAT 提供的一個基於Web的LVS 配置軟件,通過piranha可以省去手工配置LVS 的繁瑣工作;同時,piranha也可以單獨提供集群功能,例如,可以通過piranha激活Director Server的備用主機。這里利用piranha來配置Director Server的雙機熱備功能。
1.安裝與配置piranha
通過yum命令直接在線安裝,過程如下:
[root@DR2 ~]# yum install ipvsadm modcluster piranha system-config-cluster php php-cli php-common
通過WEB 界面配置Piranha服務需要設置下面步驟。
#/usr/sbin/piranha-passwd //設置密碼,請設置你的piranha服務WEB配置登陸密碼. http://192.168.12.130:3636/輸入用戶名: piranha 及剛才設置的密碼登陸.
/etc/sysconfig/ha/lvs.cf //由http://ip:3636 web 界面配置的配置文件寫入此文件.
/etc/init.d/piranha-gui start //啟動piranha服務的WEB配置界面.
/etc/init.d/pulse //啟動piranha服務讀取的就是/etc/sysconfig/ha/lvs.cf.
piranha安裝完畢后,會產生/etc/sysconfig/ha/lvs.cf配置文件。可以通過 piranha提供的 Web界面配置此文件(默認的網址地址為`主機IP`:3636)
也可以直接手動編輯此文件。編輯好的 lvs.cf文件內容類似如下所示, 注意,“#”號后面的內容為注釋。
[root@DR1 ~]# more /etc/sysconfig/ha/lvs.cf
serial_no=18#序號
primary=192.168.60.130 #指定主用 Director Server 的真實IP地址
service=lvs#指定雙機的服務名
backup_active=1#是否激活備用Director Server。“0”表示不激活,“1”表示激活。這里選擇激活方式
backup=192.168.12.131 #這里指定備用 Director Server 的真實 IP 地址,如果沒有備用 #Director Server,可以用“0.0.0.0”代替
heartbeat=1#是否開啟心跳,1 表示開啟,0 表示不開啟
heartbeat_port=539 #指定心跳的 UDP 通信端口。
keepalive=5 #心跳間隔時間,單位是秒
deadtime=10 #如果主 Director Server在deadtime(秒)后沒有響應,那么備份Director Server就會接管主Director Server的服務
network=direct #指定 LVS 的工作模式,direct表示DR模式,nat表示NAT模式,tunnel表示TUN模式
debug_level=NONE #定義debug調試信息級別
virtual www.ixdba.net{ #指定虛擬服務的名稱
active=1 #是否激活此服務
address=192.168.12.200 eth0:0 #虛擬服務綁定的虛擬IP及網絡設備名
port=80 #虛擬服務的端口
send="GET / HTTP/1.0\r\n\r\n" #向real server發送的驗證字符串
expect="HTTP"
#服務器正常運行時應該返回的文本應答信息,用來判斷 Real Server
#是否工作正常
use_regex=0
#expect選項中是否使用正則表達式,0 表示不使用,1 表示使用。
load_monitor=none
#LVS中的Director Server 能夠使用rup或ruptime來監視各個
Real Server的負載狀態。該選項有3個可選值,rup、ruptime和none,如果選擇 rup,每個 Real Server 就必須運行 rstatd 服務。如果選擇了ruptime,每個 Real Server 就必須運行 rwhod 服務
scheduler=rr #指定LVS的調度算法
protocol=tcp #虛擬服務使用的協議類型
timeout=6
#Real Server 失效后從 LVS 路由列表中移除失效Real Server所必須經過
的時間,以秒為單位
reentry=15
#某個Real Server被移除后,重新加入LVS路由列表中必須經過的#時間,
以秒為單位
quiesce_server=0
#如果此選項為1.那么當某個新的節點加入集群時,最少連接數會被重設
為零,因此 LVS 會發送大量請求到此服務節點,造成新的節點服務阻塞,建議設置為 0
server RS1 { #指定 Real Server 服務名
address=192.168.12.132 #指定 Real Server 的 IP 地址
active=1 #是否激活此 Real Server 服務
weight=1
#指定此 Real Server 的權值,是整數值.權值是相對於所有 Real Server
節點而言的,權值高的 Real Server 處理負載的性能相對較強
}
server RS2 {
address = 192.168.12.133
active = 1
weight = 1
}
}
接着,還需要對兩個 Real Server節點進行配置,也就是創建/etc/init.d/lvsrs腳本,創建文件/etc/init.d/lvsrs,腳本內容如下:
[root@rs1 ~]#more /etc/init.d/lvsrs
#!/bin/bash
#description : Start Real Server
VIP=192.168.12.200
./etc/rc.d/init.d/functions
case "$1" in
start)
echo " Start LVS of Real Server "
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo "1" >/proc /sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc /sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc /sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc /sys/net/ipv4/conf/all/arp_announce
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Director server"
echo "0" >/proc /sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc /sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc /sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc /sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
2.啟動通過piranha 配置的LVS集群系統
將編輯好的 lvs.cf 從 Director Server 的主節點復制到備用節點,然后在主、備節點分別啟動pulse服務,即啟動LVS 服務,過程如下:
[root@DR1 ~]#service pulse start
接下來,還要在主、備節點啟用系統的包轉發功能(其實只有在NAT模式下需要),命令如下:
[root@DR1 ~]#echo "1" >/proc/sys/net/ipv4/ip_forward
最后,在兩個Real server節點上執行lvsrs 腳本,命令如下:
[root@rs1 ~]#/etc/init.d/lvsrs start
到此為止,利用piranha工具搭建的高可用LVS 集群系統已經運行起來了。
2、通過 Keepalived搭建LVS高可用性集群
keepalived這個軟件最初就是為了LVS誕生的,那么keepalived除了可以實現LVS的高可用,還可以在配置文件里面實現對LVS的配置管理,以及LVS集群后端節點(real server)的健康檢查。
1、安裝keepalived+ipvsadm 環境
[root@host236 ~]# yum install ipvsadm keepalived
2.配置Keepalived
Keepalived 的配置非常簡單,僅需要一個配置文件即可完成對HA cluster和LVS 服務節點監控。Keepalived的安裝已經在前面介紹過,在通過Keepalived搭建高可用的LVS 集群實例中,主、備 Director Server 都需要安裝 Keepalived 軟件,安裝成功后,默認的配置文件路徑為/etc/Keepalived/Keepalived.conf。
一個完整的 keepalived 配置文件由三個部分組成,分別是
全局定義部分
vrrp 實例定義部分
LVS配置部分,
下面詳細介紹這個配置文件中每個選項的詳細含義和用法。
! Configuration File for keepalived
#全局定義部分
global_defs {
notification_email { #設置報警郵件地址,可以設置多個,
731431337@qq.com #每行一個。注意,如果要開啟郵件報警,
#需要開啟本機的 Sendmail 服務
1148537043@qq.com
}
notification_email_from Keepalived@localhost
#設置郵件的發送地址
smtp_server 192.168.200.1
#設置smtp server地址
smtp_connect_timeout 30
#設置連接 smtp server 的超時時間
router_id_LVS_DEVEL #表示運行 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.200
}
}
#虛擬服務器定義部分
virtual_server 192.168.12.200 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.132 80 {
#配置服務節點 1,需要指定 real server的真實IP地址和端口,IP與端口之間用空格隔開
weight 3
#配置服務節點的權值,權值大小用數字表示,數字越大,權值越高,設置權值的大小可以為不同性能的服務器分配不同的負載,可以為性能高的服務器設置較高的權值,而為性能較低的服務器設置相對較低的權值,這樣才能合理地利用和分配了系統資源
TCP_CHECK {
#realserve的狀態檢測設置部分,單位是秒
connect_timeout 3
#表示3秒無響應超時
nb_get_retry 3
#表示重試次數
delay_before_retry 3
#表示重試間隔
connect_port 80
#檢查80端口
}
}
real_server 192.168.12.133 80 {
#配置服務節點 2
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
在配置 Keepalived.conf 時,需要特別注意配置文件的語法格式,因為Keepalived 在啟動時並不檢測配置文件的正確性,即使沒有配置文件,Keepalived也照樣能夠啟動,所以一定要保證配置文件正確。
在默認情況下,Keepalived 在啟動時會查找/etc/Keepalived/Keepalived.conf 配置文件,如果配置文件放在了其他路徑下,可以通過“Keepalived -f”參數指定配置文件的路徑即可。
Keepalived.conf配置完畢后,將此文件復制到備用Director Server對應的路徑下,然后進行兩個簡單的修改即可。
u 將“state MASTER”更改為“state BACKUP”
u 將priority 100更改為一個較小的值,這里改為“priority 80”
3.配置Real server 節點
與heartbeat+LVS類似,Keepalived+LVS也需要為Real server節點配置VIP,抑制ARP,以達到與Director Server相互通信的目的。
4.啟動Keepalived+LVS 集群系統
在主、備 Director Server上分別啟動Keepalived 服務,可以執行如下操作:
[root@DR1 ~]#/etc/init.d/Keepalived start
接着在兩個 Real server 上執行如下腳本:
至此,Keepalived+LVS 高可用的 LVS 集群系統已經運行起來了。