LVS负载均衡群集其中之一:LVS-DR加上keepalive可实现稳定以及可靠的负载均衡;
实验结构
实验思路:
- 调度服务器区域实现接收访问,调用节点服务器池可用服务器。实现keepalive,实现双机热备功能,由于调度服务器由于负载量过大出现拓机情况时,备份调度服务器可直接顶替工作,保证了服务访问不被中断。
- 节点服务器提供网络服务,利用内部网络存储服务器提供的存储空间,将需要提供的网络服务搭建其中。
##实验环境:
服务器 | 系统环境 | IP地址 | 所需服务 |
---|---|---|---|
主调度 | centos7 | 192.168.200.201 | keepalived+ipvsadm |
从调度 | centos7 | 192.168.200.202 | keepalived+ipvsadm |
节点web1 | centos7 | 外:192.168.200.221 内192.168.100.101 | httpd+NFS |
节点web2 | centos7 | 外:192.168.200.222 内192.168.100.102 | httpd+NFS |
NFS存储 | centos7 | 192.168.100.111 | NFS |
实验部署
1、LVS调度服务器
主从调度服务器在LVS调度服务配置基本相同,主要区别在于实现keepalive时配置有所区别,对于区别处,文中有注明。
主调度服务器
调整proc响应参数
#yum install keepalived ipvsadm -y //安装所需软件
#vim /etc/sysctl.conf
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
//proc响应关闭重定向功能
#sysctl -p //对上述修改立即生效
配置虚拟IP
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-ens33 ifcfg-ens33:0 //设置虚拟网卡
#vim ifcfg-ens33:0
//删除全部原有内容,写入以下内容
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.200.10
NETMASK=255.255.255.0
#ifup ens33:0 //启动虚拟网卡
配置调度服务脚本
#cd /etc/init.d/
#vim dr.sh
#!/bin/bash
GW=192.168.200.1
VIP=192.168.200.10
RIP1=192.168.200.221
RIP2=192.168.200.222
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 /var/lock/subsys/ipvsadm ];then
echo "ipvsadm stoped---------------"
exit 1
else
echo "ipvsamd Runing ---------[ok]"
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
#chomd +x dr.sh //增加执行权限
#service dr.sh start //启动调度服务
#systemctl stop firewalld.service //关闭防火墙
#setenforce 0
从调度服务器
从调度服务器配置与主调度服务器配置完全相同,只是若遇到启动ifup ens33:0 报错失败的情况,只需将网卡重新启动,然后再次ifup即可。
2、主从调度服务器keepalive配置
主调度服务器
#cd /etc/keepalived/
#vim keepalived.conf //编辑keepalive主配置文件
global_defs {
...
smtp_server 127.0.0.1 //指向本地
router_id LVS_01 //指定名称,备份服务器不同名称
...
}
vrrp_instance VI_1 {
state MASTER //备份服务器是BACKUP
interface ens33 //接口按照系统修改
virtual_router_id 10 //组号相同
...
auth_pass abc123 //验证密码
priority 100 //优先级备份小于主
...
virtual_ipaddress {
192.168.100.10 //虚拟IP地址
}
...
virtual_server 192.168.200.10 80 {
delay_loop 6
lb_algo rr
lb_kind DR //采用DR直连路由模式
persistence_timeout 50
protocol TCP
...
real_server 192.168.200.221 80 { //真实节点服务器IP地址
weight 1
TCP_CHECK { //TCP健康检查方式
connect_port 80 //删除URL地址部分,添加端口
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.222 80 {
weight 1
TCP_CHECK {
connect_port 80 //添加端口
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
...
#systemctl start keepalived //启动keepalive服务
#ip addr show dev ens33:0 //查看虚拟网卡
从调度服务器
从调度服务器的keepalive配置方式同主调度服务器,需要区分的地方已经注明。
3、节点服务器
- 对于节点服务器需要利用NFS存储服务器提供的空间来提供服务,在实际工作环境中,实际是将存储服务器中提供的LVM动态逻辑卷或者raid磁盘挂载使用,对于挂载过程不在重复,可参见LVS-NAT负载均衡群集详细过程。
- 节点服务器需要将网络服务提供出去,为了使得所有节点服务器仅能被调度服务器所调度,需要和调度服务器区建立相同虚拟IP.
节点服务器web1
- 提供httpd服务
#systemctl stop firewalld.service
#setenforce 0
#yum install httpd -y //安装httpd服务
#echo "this is first web" > /var/www/html/index.html //创建首页,为了区别,web2首页需不同
- 建立虚拟IP
用于仅接受调度服务器所需请求。
#cd /etc/sysconfig/network-scripts
#cp ifcfg-lo ifcfg-lo:0
#vim ifcfg-lo:0
DEVICE=lo:0 //删除原有内容,写入以下内容
IPADDR=192.168.200.10 //虚拟IP
NETMASK=255.255.255.255
ONBOOT=yes
- 调整proc响应参数
#cd /etc/init.d/
#vim web.sh //编写服务脚本,方便管理
#!/bin/bash
VIP=192.168.200.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/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/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 Stopd"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
#chmod +x /etc/init.d/web.sh
#ifup lo:0 //启动虚拟网卡
#service web.sh start //启动服务
节点服务器web2
配置方式同web1,唯一区别是为了实验方便得出结论,采用不同首页。
4、测试
- 模拟客户端访问,当多次请求时,客户端得到的是不同节点服务器给予的响应回馈。
- 模拟当主调度服务器损坏无法工作是,从服务器直接顶替工作,使得服务能够继续访问。
当客户端多次请求
当主调度服务器无法工作时
这里为了简化操作,直接将主调度服务器关机,达到模拟主调度服务器无法工作情况。然后继续使用客户端访问。