1. 程式人生 > 其它 >叢集高可用之lvs+keepalive

叢集高可用之lvs+keepalive

叢集高可用之lvs+keepalive

keepalive簡介:

負載均衡架構依賴於知名的IPVS核心模組,keepalive由一組檢查器根據伺服器的健康情況動態維護和管理伺服器池。keepalive通過VRRP協議實現高可用架構。VRRP是路由災備的實現基礎。

LVS核心是排程器,所有的資料請求需要經過排程器進行排程轉發。萬一排程器發生故障,整個集群系統全部崩潰,所以需要keepalive實現集群系統的高可用。

部署兩臺或多臺lvs排程器,僅有一臺排程器做主伺服器,其他為備用。當主發生故障後,keepalive可以自動將備用排程器作為主,實現整個集群系統的高負載,高可用

VRRP協議介紹:

VRRP協議是為消除在靜態預設路由環境下的預設路由器單點故障引起的網路失效而設計的主備模式的協議,使得在發生故障而進行裝置功能切換時可以不影響內外資料通訊,不需要再修改內部網路的網路引數。VRRP協議需要具有IP地址備份,優先路由選擇,減少不必要的路由器間通訊等功能。

VRRP協議將兩臺或多臺路由器裝置虛擬成一個裝置,對外提供虛擬路由器IP(一個或多個),而在路由器組內部,如果實際擁有這個對外IP的路由器如果工作正常的話就是MASTER,或者是通過演算法選舉產生,MASTER實現針對虛擬路由器IP的各種網路功能,如ARP請求,ICMP,以及資料的轉發等;其他裝置不擁有該IP,狀態是BACKUP,除了接收MASTER的VRRP狀態通告資訊外,不執行對外的網路功能。當主機失效時,BACKUP將接管原先MASTER的網路功能。

配置VRRP協議時需要配置每個路由器的虛擬路由器ID(VRID)和優先權值,使用VRID將路由器進行分組,具有相同VRID值的路由器為同一個組,VRID是一個0~255的正整數;同一組中的路由器通過使用優先權值來選舉MASTER,優先權大者為MASTER,優先權也是一個0~255的正整數。

有一種特殊情況,將虛擬路由IP地址設定為多臺路由裝置中某臺裝置的真實ip地址,該路由裝置將永遠處於主裝置狀態。

本例用centos7伺服器

keepalived 搭建

yum -y install gcc openssl-devel popt-devel libnl libnl-devel kernel-devel ipvsadm cd /usr/local/src wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz tar -xzf keepalived-1.2.7.tar.gz cd keepalived-1.2.7/
./configure make && make install ln -s /usr/local/etc/keepalived/ /etc ln -s /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/ ln -s /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ ln -s /usr/local/sbin/keepalived /usr/sbin/

配置圖如上:

配置如下:

web1,web2 的操作

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 nginx1的操作 vim /etc/sysconfig/network-scripts/ifcfg-eno16 DEVICE=eno16 BOOTPROTO=statci ONBOOT=yes TYPE=Ethernet IPADDR=192.168.1.30 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 vim /etc/sysconfig/network-scripts/ifcfg-lo:0 DEVICE=lo:0 BOOTPROTO=statci ONBOOT=yes TYPE=Ethernet IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 vim /etc/sysctl.conf net.ipv4.conf.eno16.arp_ignore = 1 net.ipv4.conf.eno16.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce =2 sysctl -p systemctl restart network echo"192.168.1.100"> /usr/local/nginx/conf/html/index.html firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload nginx2的操作 vim /etc/sysconfig/network-scripts/ifcfg-eno16 DEVICE=eno16 BOOTPROTO=statci ONBOOT=yes TYPE=Ethernet IPADDR=192.168.1.40 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 vim /etc/sysconfig/network-scripts/ifcfg-lo:0 DEVICE=lo:0 BOOTPROTO=statci ONBOOT=yes TYPE=Ethernet IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 vim /etc/sysctl.conf net.ipv4.conf.eno16.arp_ignore = 1 net.ipv4.conf.eno16.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce =2 sysctl -p systemctl restart network echo"192.168.1.40"> /usr/local/nginx/conf/html/index.html firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload

排程器lvs1和lvs2的配置

lvs1的配置
vim /etc/sysconfig/network-scripts/ifcfg-eno16 DEVICE=eno16 BOOTPROTO=statci ONBOOT=yes TYPE=Ethernet IPADDR=192.168.1.10 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 systemctl restart network yum -y install keepalived ipvsadm
將lvs1設定為主,lvs2設定為備,保證其中一臺排程器出現故障後,另一臺可以及時。
自動啟用替換損壞的故障裝置。在該配置檔案中新增虛擬服務,
併為該虛擬服務新增後端真實web伺服器組和相應的排程演算法。
vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { [email protected] } notification_email_from root@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id lvs1 } vrrp_instance LVS_HA { state MASTER #lvs_2為備用 interface eno16 virtual_router_id 60 #lvs_2的VRID必須與lvs_1相同 priority 100 #在相同的VRID組中優先順序高者為主裝置 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.0.1/24 } } virtual_server 192.168.0.1 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP real_server 192.168.1.30 80 { weight 1 TCP_CHECK { connetct_timeout 20 connect_port 80 nb_get_retry 3 } } real_server 192.168.1.40 80 { weight 1 TCP_CHECK { connetct_timeout 20 connect_port 80 nb_get_retry 3 } }
}
systemctl start keepalived
systemctl enable keepalived
ip addr show
ipvsadm -Ln
firewall-cmd --set-default-zone=trusted

同理在上面配置lvs2

更改下網絡卡資訊

vim /etc/keepalived/keepalived.conf

router_id lvs_2和priority 50

在軟路由上配置ip省略。

省略ip的配置
systemctl restart  network
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
因為使用的是Linux的軟路由,下面需要使用iptables實現NAT地址轉發功能,
實現內網和外網的資料通訊
iptables -t nat -I PREPOUTING -d 124.126.147.168 -p tcp \
-dport 80 \ -j DNAT --to-destination 192.168.1.100:80

iptables -t nat -I POSTROUTING -S 192.168.1.0/24 -P tcp \
-j SNAT --to-source 124.126.147.168

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -p
客戶端驗證:http://124.126.147.168,可以得到不同real server的響應資料包

https://www.cnblogs.com/fengzhongzhuzu/p/9047603.html