LVS负载均衡DR模式和keepalived架构搭建
LVS负载均衡DR模式和keepalived架构搭建
一、LVS数据包流向分析
整个架构是由对外时显示一个共同的IP地址,VIP.客户端会向DR集群发送VIP请求,负载均衡器收到请求以后会根据算法会将其中的Mac地址进行修改发送给局域网中的服务器。服务器处理完请求后会根据发来数据包的原地址将其设定为目标地址直接发送过去,跳过了负载均衡器。此外如果上次发送请求的客服端有发送请求来那么负载均衡器会将请求再次发送给原来处理请求的服务器上。如果服务器宕机了,请求会转发给其他服务器进行处理。
二、DR模式的搭建
本次实验需要用到两台负载均衡服务器和两台web服务器。
1.负载均衡器的搭建。
#安装keepalived双机热备 、ipvsadm作为调度
yum install keepalived ipvsadm -y
2.开启路由功能和关闭proc响应重定向功能
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
别忘记还要sysctl -p,重启后才能生效。
3.添加虚拟网卡,因为整个群集需要在虚拟IP的基础上进行工作。
cd /etc/sysconfig/network-scripts/
#复制ens33网卡为虚拟网卡。
cp -p ifcfg-ens33 ifcfg-ens33:0
#删除虚拟网卡中的所有内容。
#加入设备名称、VIP地址和子网掩码。
DEVICE="ens33:0"
ONBOOT="yes"
IPADDR=192.168.80.10
NETMASK=255.255.255.0
4.设置负载均衡调度器启动脚本
cd /etc/init.d
#创建名称为:dr.sh的脚本文件。
vim dr.sh
#!/bin/bash
GW=192.168.80.1
VIP=192.168.80.10 #虚拟IP
RIP1=192.168.80.20 #web服务器IP
RIP2=192.168.80.30 #web服务器IP
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 ar/lock/subsys/ipvsadm ];then
echo "ipvsadm stoped--------------------"
exit 1
else
echo "ipvsamd Runing-------------[ok]"
fi
;;
esac
赋予脚本执行权限。
chmod +x /etc/init.d/dr.sh
5.重启网卡、开启虚拟端口、开启LVS服务、关闭防火墙。
systemctl restart network
ifup ens33:0
service dr.sh start
systemctl stop firewalld
setenforce 0
这样一台负载均衡器就搭建好了,第二台的搭建方式与以上方法一致。
下面进行web服务器的搭建。
1.安装web服务。
yum install httpd -y
2.创建一个网页。
echo "this is test.com" > /var/www/html/index.html
systemctl start httpd #开启httpd服务
3.复制回环网卡,并修改为虚拟网卡
#复制网卡信息
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
#删除其中内容,添加:
DEVICE=lo:0
IPADDR=192.168.80.10
NETMASK=255.255.255.0
ONBOOT=yes
4.编辑启动脚本。
cd /etc/init.d
#创建arp规则脚本。
vim web.sh
#!/bin/bash
VIP=192.168.80.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/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/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 Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
#赋予执行权限。
chmod +x web.sh
5.重启网卡、开启虚拟网卡和ARP规则、关闭防火墙
ifup lo:0
service web.sh start
systemctl stop firewalld
setenforce 0
第二台web服务器操作也是如此。
验证:能够正常访问。
两个页面不同代表LVS调度起作用了。
三、keepalived功能
修改 keepalived.conf 文件,路径为:/etc/keepalived/
vim /etc/keepalived/keepalived.conf
1.在主负载均衡器中配置:
! Configuration File for keepalived
global_defs {
notification_email {
aaa@qq.com
aaa@qq.com
aaa@qq.com
}
notification_email_from aaa@qq.com
smtp_server 127.0.0.1 #改为127.0.0.1
smtp_connect_timeout 30
router_id_01 #改为_01负载均衡器序号
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER #主要的为MASTER
interface ens33
virtual_router_id 10 #主备要在同一组之中
priority 100 #设置优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.80.10 #虚拟IP
}
}
virtual_server 192.168.80.10 80 { #修改与其相连的webIP地址
delay_loop 6
lb_algo rr #轮询模式
lb_kind DR #工作模式是DR
persistence_timeout 50
protocol TCP
real_server 192.168.80.20 80 {
weight 1
TCP_CHECK {
connetc_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.80.30 80 {
weight 1
TCP_CHECK {
connetc_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
在备用负载均衡器上配置:
#### 备用负载均衡器 ####
! Configuration File for keepalived
global_defs {
notification_email {
aaa@qq.com
aaa@qq.com
aaa@qq.com
}
notification_email_from aaa@qq.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id_02 #id号
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP #模式是备用
interface ens33
virtual_router_id 10
priority 95 #优先级要比MASTER低
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.80.10
}
}
virtual_server 192.168.80.10 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.80.20 80 {
weight 1
TCP_CHECK {
connetc_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.80.30 80 {
weight 1
TCP_CHECK {
connetc_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
模拟故障关闭主要负载均衡器的网络,备用开始发挥作用。
此地址依旧可以访问。
那么LVS负载均衡DR模式和keepalived架构就搭建成功了。
上一篇: LVS负载均衡DR模式的搭建过程(不用keepalived)
下一篇: sqlserver问题