背景
实现高可用,防止单点发生故障导致服务下线影响业务正常进行
Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。(当一个节点挂掉,走另外一个节点)
搭建 1.下载keepalived
https://www.keepalived.org/index.html
1 2 3 4 5 6 7 8 9 10 wget https://www.keepalived.org/software/keepalived-2.2.7.tar.gz --no-check-certificate tar -xzvf keepalived-2.2.7.tar.gzmv keepalived-2.2.7 keepalivedcd keepalived yum -y install gcc openssl openssl-devel ./configure --prefix=/usr/local/keepalived make installecho 'export PATH=$PATH:/usr/local/keepalived/sbin/' >> ~/.bash_profile keepalived -v keepalived -h
2.下载nginx
http://nginx.org/
1 2 3 4 5 6 7 8 9 wget https://nginx.org/download/nginx-1.22.1.tar.gz --no-check-certificate tar zxvf nginx-1.22.1.tar.gz cd nginx-1.22.1/./configure --prefix=/usr/local/nginx make make install./nginx -vecho 'export PATH=$PATH:/usr/local/nginx/sbin/ ' >> ~/.bash_profile nginx
机器配置
关闭防火墙和enforce
1 2 setenforce 0 systemctl disable --now firewalld
3.配置keepalived
1 vim /usr/ local/etc/ keepalived/keepalived.conf
主服务器
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 global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface ens160 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168 .100 .100 } } virtual_server 192.168 .100 .100 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168 .100 .21 80 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 192.168 .100 .22 80 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } }
备服务器
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 global_defs { router_id LVS_DEVEL_SALVE } vrrp_instance VI_1 { state MASTER interface ens160 virtual_router_id 51 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168 .100 .100 } } virtual_server 192.168 .100 .100 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168 .100 .21 80 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 192.168 .100 .22 80 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } }
启动keepalived
查看vip
我们配置的vip
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 1 : lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link /loopback 00 :00 :00 :00 :00 :00 brd 00 :00 :00 :00 :00 :00 inet 127.0.0.1 /8 scope host lo valid_lft forever preferred_lft forever inet6 ::1 /128 scope host valid_lft forever preferred_lft forever2 : ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link /ether 00 :0 c:29 :c2:de:91 brd ff:ff:ff:ff:ff:ff inet 192.168.100.21 /24 brd 192.168.100.255 scope global noprefixroute ens160 valid_lft forever preferred_lft forever inet 192.168.100.100 /32 scope global ens160 (VIP) valid_lft forever preferred_lft forever inet6 fe80::20 c:29 ff:fec2:de91/64 scope link noprefixroute valid_lft forever preferred_lft forever3 : tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000 link /ipip 0.0.0.0 brd 0.0.0.0 4 : dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000 link /ether e2:d1:8 c:f6:aa:e8 brd ff:ff:ff:ff:ff:ff5 : kube-ipvs0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default link /ether 0 a:bd:4 c:73 :69 :b2 brd ff:ff:ff:ff:ff:ff inet 10.98.13.147 /32 scope global kube-ipvs0 valid_lft forever preferred_lft forever inet 10.98.126.203 /32 scope global kube-ipvs0 valid_lft forever preferred_lft forever inet 10.108.37.26 /32 scope global kube-ipvs0 valid_lft forever preferred_lft forever inet 10.96.0.1 /32 scope global kube-ipvs0 valid_lft forever preferred_lft forever inet 10.96.0.10 /32 scope global kube-ipvs0 valid_lft forever preferred_lft forever inet 10.109.253.213 /32 scope global kube-ipvs0 valid_lft forever preferred_lft forever inet 10.100.200.149 /32 scope global kube-ipvs0 valid_lft forever preferred_lft forever inet 10.105.133.95 /32 scope global kube-ipvs0 valid_lft forever preferred_lft forever inet 10.109.192.172 /32 scope global kube-ipvs0 valid_lft forever preferred_lft forever
测试
默认正常走master节点
down掉master节点,VIP会飘到salve节点
重启master节点后VIP会飘会master节点
资料 官网:https://www.keepalived.org/ github:https://github.com/acassen/keepalived