LVS-DR+Keepalive高可用群集集
阿新 • • 發佈:2018-06-27
ML .com 可靠的 _for image Oz arp 可用 work LVS負載均衡群集其中之一:LVS-DR加上keepalive可實現穩定以及可靠的負載均衡;
實驗結構
實驗思路:
- 調度服務器區域實現接收訪問,調用節點服務器池可用服務器。實現keepalive,實現雙機熱備功能,由於調度服務器由於負載量過大出現拓機情況時,備份調度服務器可直接頂替工作,保證了服務訪問不被中斷。
- 節點服務器提供網絡服務,利用內部網絡存儲服務器提供的存儲空間,將需要提供的網絡服務搭建其中。
##實驗環境:
服務器 | 系統環境 | IP地址 | 所需服務 |
---|---|---|---|
主調度 | centos7 | 192.168.200.201 | keepalived+ipvsadm |
從調度 | centos7 | 192.168.200.202 | keepalived+ipvsadm |
節點web1 | centos7 | 外:192.168.200.221 內192.168.100.101 | httpd+NFS |
節點web2 | centos7 | 外:192.168.200.222 內192.168.100.102 | httpd+NFS |
NFS存儲 | centos7 | 192.168.100.111 | NFS |
實驗部署
1、LVS調度服務器
主從調度服務器在LVS調度服務配置基本相同,主要區別在於實現keepalive時配置有所區別,對於區別處,文中有註明。
主調度服務器
調整proc響應參數
#yum install keepalived ipvsadm -y //安裝所需軟件 #vim /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 //proc響應關閉重定向功能 #sysctl -p //對上述修改立即生效
配置虛擬IP
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-ens33 ifcfg-ens33:0 //設置虛擬網卡
#vim ifcfg-ens33:0
//刪除全部原有內容,寫入以下內容
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.200.10
NETMASK=255.255.255.0
#ifup ens33:0 //啟動虛擬網卡
配置調度服務腳本
#cd /etc/init.d/ #vim dr.sh #!/bin/bash GW=192.168.200.1 VIP=192.168.200.10 RIP1=192.168.200.221 RIP2=192.168.200.222 case "$1" in start) /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm systemctl start ipvsadm /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up /sbin/route add -host $VIP dev ens33:0 /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g echo "ipvsadm starting --------------------[ok]" ;; stop) /sbin/ipvsadm -C systemctl stop ipvsadm ifconfig ens33:0 down route del $VIP echo "ipvsamd stoped----------------------[ok]" ;; status) if [ ! -e /var/lock/subsys/ipvsadm ];then echo "ipvsadm stoped---------------" exit 1 else echo "ipvsamd Runing ---------[ok]" fi ;; *) echo "Usage: $0 {start|stop|status}" exit 1 esac exit 0 #chomd +x dr.sh //增加執行權限 #service dr.sh start //啟動調度服務 #systemctl stop firewalld.service //關閉防火墻 #setenforce 0
從調度服務器
從調度服務器配置與主調度服務器配置完全相同,只是若遇到啟動ifup ens33:0 報錯失敗的情況,只需將網卡重新啟動,然後再次ifup即可。
2、主從調度服務器keepalive配置
主調度服務器
#cd /etc/keepalived/
#vim keepalived.conf //編輯keepalive主配置文件
global_defs {
...
smtp_server 127.0.0.1 //指向本地
router_id LVS_01 //指定名稱,備份服務器不同名稱
...
}
vrrp_instance VI_1 {
state MASTER //備份服務器是BACKUP
interface ens33 //接口按照系統修改
virtual_router_id 10 //組號相同
...
auth_pass abc123 //驗證密碼
priority 100 //優先級備份小於主
...
virtual_ipaddress {
192.168.100.10 //虛擬IP地址
}
...
virtual_server 192.168.200.10 80 {
delay_loop 6
lb_algo rr
lb_kind DR //采用DR直連路由模式
persistence_timeout 50
protocol TCP
...
real_server 192.168.200.221 80 { //真實節點服務器IP地址
weight 1
TCP_CHECK { //TCP健康檢查方式
connect_port 80 //刪除URL地址部分,添加端口
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.222 80 {
weight 1
TCP_CHECK {
connect_port 80 //添加端口
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
...
#systemctl start keepalived //啟動keepalive服務
#ip addr show dev ens33:0 //查看虛擬網卡
從調度服務器
從調度服務器的keepalive配置方式同主調度服務器,需要區分的地方已經註明。
3、節點服務器
- 對於節點服務器需要利用NFS存儲服務器提供的空間來提供服務,在實際工作環境中,實際是將存儲服務器中提供的LVM動態邏輯卷或者raid磁盤掛載使用,對於掛載過程不在重復,可參見LVS-NAT負載均衡群集詳細過程。
- 節點服務器需要將網絡服務提供出去,為了使得所有節點服務器僅能被調度服務器所調度,需要和調度服務器區建立相同虛擬IP.
節點服務器web1
- 提供httpd服務
#systemctl stop firewalld.service #setenforce 0 #yum install httpd -y //安裝httpd服務 #echo "this is first web" > /var/www/html/index.html //創建首頁,為了區別,web2首頁需不同
- 建立虛擬IP
用於僅接受調度服務器所需請求。
#cd /etc/sysconfig/network-scripts
#cp ifcfg-lo ifcfg-lo:0
#vim ifcfg-lo:0
DEVICE=lo:0 //刪除原有內容,寫入以下內容
IPADDR=192.168.200.10 //虛擬IP
NETMASK=255.255.255.255
ONBOOT=yes
- 調整proc響應參數
#cd /etc/init.d/
#vim web.sh //編寫服務腳本,方便管理
#!/bin/bash
VIP=192.168.200.10
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
sysctl -p >/dev/null 2>&1
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 Stopd"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
#chmod +x /etc/init.d/web.sh
#ifup lo:0 //啟動虛擬網卡
#service web.sh start //啟動服務
節點服務器web2
配置方式同web1,唯一區別是為了實驗方便得出結論,采用不同首頁。
4、測試
- 模擬客戶端訪問,當多次請求時,客戶端得到的是不同節點服務器給予的響應回饋。
- 模擬當主調度服務器損壞無法工作是,從服務器直接頂替工作,使得服務能夠繼續訪問。
當客戶端多次請求
當主調度服務器無法工作時
這裏為了簡化操作,直接將主調度服務器關機,達到模擬主調度服務器無法工作情況。然後繼續使用客戶端訪問。
LVS-DR+Keepalive高可用群集集