最近在研究服務器高可用集群 (HA)……
Keepalived 是用C寫的軟路由。提供負載均衡與高可用特性。
負載均衡利用IPVS技術
高可用通過VRRP協議實現
更難能的貴的是,一直到最近還在更新
最近版本 Release 1.3.5 發佈於 2017-03-19
安裝過程官方推薦從源碼編譯,當然,負載均衡部分基於LVS,所以LVS部分直接YUM安裝。
目標:
實現一個如下圖所示的高可用服務器集群。
集群由兩臺調度器(DirectorServer,DS),三臺真實服務器(RealServer,RS)構成。調度器一主一備,三臺真實服務器進行負載均衡提供服務。
配置完成後只要能保證至少一臺DS和一臺RS工作正常,即可對外提供服務。並且管理員可以在郵箱收到相關服務器啟停的郵件彙報。
準備:
服務器使用Oracle VM VirtualBox虛擬實現,虛擬機網絡使用橋接,所有虛擬機(五臺服務器)均在統一內網中,負載均衡工作在LVS的DR模式下。
虛擬機信息:
DS1 - master(CentOS-6.8-x86_64-minimal) : 192.168.0.201
DS2 - backup(CentOS-6.8-x86_64-minimal): 192.168.0.202
RS1 (CentOS-6.8-x86_64-minimal): 192.168.0.203
RS2 (CentOS-6.8-x86_64-minimal): 192.168.0.204
RS3 (CentOS-6.8-x86_64-minimal): 192.168.0.205
VIP: 192.168.0.200
keepalived編譯與安裝(兩臺DS上進行)
1)安裝依賴庫,配置防火牆開放端口。
yum install gcc openssl-devel libnl3-devel ipset-devel iptables-devel libnfnetlink-devel net-snmp-devel -y
iptables -I INPUT -i eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
iptables -I OUTPUT -o eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
service iptables save
2)獲取最近版本源代碼。
wget http://www.keepalived.org/software/keepalived-1.3.5.tar.gz
tar -zxvf keepalived-1.3.5.tar.gz
3)進入目錄,編譯。
cd keepalived-1.3.5
./configure make && make install
4)配置系統服務和開機啟動:
cp ./keepalived/etc/init.d/keepalived /etc/init.d/
cp ./keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin/
chkconfig keepalived on
service keepalived status #驗證系統服務安裝成功
5)一些清理工作:
cd ..rm -rf keepalived-1.3.5
keepalived配置
1)配置RS,提供WEB服務
三臺RS使用Nginx對外提供服務,三個RS提供服務器的端口必須一致,例如80.
為了驗證負載均衡效果,可以讓三臺服務器返回的頁面略有區別,比如返回的頁面中帶上自己的hostname
計劃配置LVS負載均衡工作在DR模式下。所以需要對RS進行ARP抑制配置。
配置腳本 realserver.sh 如下:
#!/bin/bash VIP=192.168.0.200 source /etc/rc.d/init.d/functions case "$1" in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev lo:0 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 echo "RealServer Start OK" ;; stop) ifconfig lo:0 down route del $VIP >/dev/null 2>&1 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 "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
執行時使用 /path/to/realserver.sh start
三臺RS均需要執行。
2)配置DS,實現HA與負載調度。
Keepalived的負載均衡功能直接利用了LVS,所以使用Keepalived自帶的virtual_server配置方式配置負載均衡前,需要為兩臺DS均安裝LVS:
yum install ipvsadm -y
LVS的DR模式沒有端口轉發功能。調度器對包暴漏的端口和服務器對外提供的服務使用的端口必須是一致的(本案為80端口)。
兩臺DS均需要開放80端口,以對外提供服務:
iptables -I INPUT -p tcp --dport 80 -j ACCEPTservice iptables save
在DS-Master創建keepalived配置文件:
mkdir /etc/keepalivedvi /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 #使用本地STMP服務,配置方式參考另一篇文章
(主備狀態依靠心跳維持)(是的,keepalived健康檢查也是輪詢模式)
同樣配置文件複製到 DS-BACKUP
修改3個地方(很多文章說只需要配置vrrp_instance中的 狀態 和 優先級 兩處即可,但是為了郵件提示的準確性,需要將 global_defs.route_id 配置不一樣,當然,如果沒有配置郵件提示而使用其他方式如nagios對服務器進行監控,這裡配置什麼其實無所謂)
keepalived.conf修改三個地方
1) router_id LVS_DR_DS2
2) state BACKUP
3 ) priority 50
keepalived 啟動和停止:
service keepalived start|stop
keepalived執行日誌默認位置:
tail -f /var/log/messages
測試
略…… _(:3」∠)_ -