LVS+Keepalived 实现高可用负载均衡

一、演示环境

      IP           操作系统       主机名   部署服务       
192.168.11.81 Centos 7.6  

LB01

keepalived、ipvsadm  
192.168.11.82 Centos 7.6

LB02

keepalived、ipvsadm

192.168.11.83

Centos 7.6 web01 httpd

192.168.11.84

Centos 7.6 web02 httpd

       VIP:192.168.11.85  

(1)各节点通过chrony服务同步时间

(2)各节点关闭firewalld和SELinux

(3)两台DR主机实现互通

# vim /etc/hosts
192.168.11.81  LB01
192.168.11.82  LB02

(4)确保配置keepalived服务的node1和node2用于集群服务的接口支持MULTICAST(多播或组播)通信:

 备注:网卡没有开启多播功能,可通过命令# ip link set multicast on dev ens33 开启

 

二、两台WEB服务器部署httpd

(1) web01安装部署httpd:

# yum -y install httpd
# vim /var/www/html/index.html --> <h1>web1</h1>
# systemctl start httpd.service
# ss -tunlp | grep -w :80
# systemctl enable httpd.service

(2) web02安装部署httpd:

# yum -y install httpd
# vim /var/www/html/index.html --> <h1>web2</h1>
# systemctl start httpd.service
# ss -tunlp | grep -w :80
# systemctl enable httpd.service

(3)用LB01访问(web01和web02)

[root@LB01 ~]# curl http://192.168.11.83

[root@LB01 ~]# curl http://192.168.11.84

(4)Real server节点2台配置脚本:(web01和web02)

# vim /usr/local/sbin/lvs_rs.sh
#! /bin/bash
vip=192.168.11.85
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
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
2节点rs 上分别执行脚本:
bash /usr/local/sbin/lvs_rs.sh

以上是利用脚本配置,现在我们手动配置(web01和web02)

# vim /etc/sysctl.conf   (关闭真实服务器)
net.ipv4.conf.all.arp_ignore
= 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2
[root@web01 ~]# sysctl -p #立即生效
[root@web01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo{,:1}
[root@web01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:1
 DEVICE=lo:1
 IPADDR=192.168.11.85       #VIP地址
 NETMASK=255.255.255.255
 ONBOOT=yes
 NAME=loopback

 

三、Director 上配置脚本(LB01和LB02)

[root@LB01 ~]# yum -y install ipvsadm    #安装ipvsadm

# vim /usr/local/sbin/lvs_dr.sh
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward #开启转发功能
ipv=/usr/sbin/ipvsadm
vip=192.168.11.85
rs1=192.168.11.83
rs2=192.168.11.84
ifconfig ens33:0 down
ifconfig ens33:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:0
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

执行脚本:

# bash /usr/local/sbin/lvs_dr.sh

以上为脚本配置文件,现在我们手动进行配置更改(LB01和LB02)

[root@LB01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33{,:1}
[root@LB01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33:1  //修改以下参数
NAME="ens33:1"
DEVICE="ens33:1"
IPADDR="192.168.11.85"
GATEWAY="192.168.11.1"  //指向路由IP
//如果存在HWADDR,那么ens33和ens33:1两者不必须一致。
[root@LB01 ~]# systemctl restart network
[root@LB01 ~]# ipvsadm -A -t 192.168.11.85:80 -s wrr
[root@LB01 ~]# ipvsadm -a -t 192.168.11.85:80 -r 192.168.11.83:80 -g -w 1
[root@LB01 ~]# ipvsadm -a -t 192.168.11.85:80 -r 192.168.11.84:80 -g -w 1
[root@LB01 ~]# ipvsadm -Ln
[root@LB01 ~]#
echo 1 > /proc/sys/net/ipv4/ip_forward

到此为止利用ipvsadm配置LVS(负载均衡)已经完成,测试正常。

 

下面是 LVS+Keepalived 实现高可用负载均衡

注意:此处只安装ipvsadm,不生成规则,也不需要启动,只需要启动Keepalived。

四、keepalived节点配置(2节点):

安装keepalived
[root@LB01 ~]# yum -y install keepalived

主节点( MASTER )配置文件
[root@LB01 ~]# vim /etc/keepalived/keepalived.conf vrrp_instance VI_1 { state MASTER #主服务器 interface ens33 #绑定的网卡名 virtual_router_id 51 priority 100 #启动优先级设置 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.11.85 #虚拟IP设置 } } virtual_server 192.168.11.85 80 { delay_loop 6 #每隔6秒查询realserver状态 lb_algo wrr #轮询调度算法 lb_kind DR #DR模式 persistence_timeout 0 #同一个IP的连接60秒内被分配到同一台realserver服务器 protocol TCP #用TCP协检查realserver状态 real_server 192.168.11.83 80 { weight 1 #权重 TCP_CHECK { connect_timeout 10 #10秒无响应超时 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.11.84 80 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }

从节点( BACKUP )配置文件

拷贝主节点的配置文件keepalived.conf,然后修改如下内容:

state MASTER -> state BACKUP
priority 100 -> priority 90

五、keepalived的2个节点执行如下命令,开启转发功能:

# echo 1 > /proc/sys/net/ipv4/ip_forward

六、在两台realserver服务器上,运行脚本

bash /usr/local/sbin/lvs_rs.sh

七、启动keepalive

先主后从分别启动keepalive
systemctl start keepalived

八、查看ipvsadm情况

[root@LB01 ~]# watch -n1 ipvsadm -Ln

九、查看Keepalived的情况

[root@LB01 ~]# ip a l 
未关闭LB01上的keepalived时,VIP地址会保留在LB01上面。 [root@LB02
~]# ip addr
关闭LB01的keepalived后,VIP地址会切到LB02上面。

十、进行测试

高可用与负载均衡正常。

posted @ 2019-12-25 09:21  区域管理员  阅读(281)  评论(0编辑  收藏  举报