功能:
lvs+keepalived高可用負載均衡集羣中:
·keepalived負責後端real server健康狀態檢查
如果一臺real server服務出現故障,則會從集羣服務中剔除,等恢復之後再自動加入到集羣。
·keepalived負責負載均衡器(directory server)高可用
A和B兩臺虛擬機裝lvs+keepalived(主)和lvs+keepalived(備),但是對外表現爲一個虛擬IP,主服務器會發送消息給備服務器,當備服務器收不到消息的時候,認爲主出現故障,然後接管虛擬IP繼續提供服務,如果主節點恢復,則再次接管虛擬IP,提供服務。
原理:
·使用layer3工作時,keepalived定期向服務器羣組中發送icmp的數據包,如果某臺服務器IP地址沒有激活,則認爲失效,並剔除(典型例子就是 這臺服務器被非法關機)
·使用layer4工作時,比如是web 80端口的負載均衡,keepalived檢測後端服務器羣組中的80端口有沒有啓動,如果沒有,則認爲失效,並剔除
·使用layer7工作時,根據用戶設定,如果與用戶設定的不符,則認爲失效,並剔除
三個模塊:
·core:負責主進程的啓動、維護,全局配置文件的加載和解析
·health_check:負載健康狀態檢查
·vrrp:實現vrrp協議
實驗:
·主節點和備節點把keepalived啓動,web1和web2啓動httpd,
架構設計:
利用keepalived來實現lvs的Directory server的高可用,再利用lvs和keepalived的高可用,來實現Web服務的負載均衡!架構圖如下
本文中的keepalived是檢測Real server的健康狀態以及負載均衡器的主和備之間的故障轉移。
檢測real server健康狀態:如果有一臺web服務器宕機或者出現故障,keepalived會檢測到,並從集羣羣組中剔除,等恢復後,再自動添加進來
負載均衡器故障轉移:一個web服務器至少需要兩臺keepalived,一臺爲主節點(Master),一臺爲備節點(backup),但對外表現爲一個虛擬IP,主服務器會發送組播,如果備服務器收不到vrrp包就認定主服務器出現故障,就會接管虛擬IP,繼續對外提供服務,從而保證了高可用性。
搭建:
重點 時間同步
各個節點能互相解析
(1)準備環境
1.主備節點都裝lvs和keepalived
2.web1和web2都裝httpd
3.關閉防火牆
4.關閉SELinux
5.web1和web2都要抑制ARP
(2)主節點
安裝ipvsadm和keepalived yum -y install keepalived ipvsadm 關閉防火牆 service iptables stop 關閉SELinux setenforce 0
修改keepalived配置文件 vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 { state MASTER #備用服務器上爲 BACKUP interface eth0 virtual_router_id 51 priority 100 #備用服務器上爲90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.7.5 } } virtual_server 172.16.7.5 80 { delay_loop 6 #每隔6秒查詢realserver狀態 lb_algo wrr #lvs 算法 lb_kind DR #lvs 模式 persistence_timeout 60 #同一IP的連接60秒內被分配到同一臺realserver protocol TCP #指定轉發協議類型,有TCP和UDP兩種 real_server 172.16.7.3 80 { weight 3 #權重 TCP_CHECK { connect_timeout 3 #表示3秒無響應,則超時 nb_get_retry 3 #表示重試次數 delay_before_retry 3 #表示重試間隔 connect_port 80 #端口爲80 } } real_server 172.16.7.4 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
(3)備節點
安裝ipvsadm和keepalived yum -y install keepalived ipvsadm 關閉防火牆 service iptables stop 關閉SELinux setenforce 0
修改keepalived配置文件 vim /etc/keepalived/keepalived.conf
只需要修改兩處:
NO.1 “state MASTER” 修改爲 “state BACKUP”
NO.2 “priority 100” 修改爲 “priority 99”
(4)web1和web2
安裝ipvsadm和keepalived yum -y install keepalived ipvsadm 關閉防火牆 service iptables stop 關閉SELinux setenforce 0 安裝httpd yum -y install httpd 抑制ARP echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore 添加VIP ifconfig lo:0 192.168.1.10 broadcast 192.168.1.10 netmask 255.255.255.255 添加路由 route add -host 192.168.1.10 dev lo:0
測試
測試健康檢查:主節點和備節點啓動keepalived,web1和web2啓動httpd,主節點上查看ipvs規則,能看到web1和web2,ip addr 查看主節點vip,停止web1的httpd服務,主節點上再次查看ipvs規則,web1規則消失,測試成功
測試故障轉移:主節點和備節點啓動keepalived,web1和web2啓動httpd。停止主節點上的keepalived,查看備節點是否接管VIP,繼續提供web服務,如果能,測試成功
測試故障恢復:主節點出現故障,keepalived出現故障停止,備節點接管VIP,繼續提供web服務。如果主節點恢復,重新啓動keepalived,查看vip是否漂移回來,主節點接管備節點服務,繼續提供服務。