您的位置:首页 > 运维架构 > 网站架构

LVS-DR+Keepalive高可用群集

2018-06-26 23:44 351 查看
LVS负载均衡群集其中之一:LVS-DR加上keepalive可实现稳定以及可靠的负载均衡;

实验结构



实验思路:

调度服务器区域实现接收访问,调用节点服务器池可用服务器。实现keepalive,实现双机热备功能,由于调度服务器由于负载量过大出现拓机情况时,备份调度服务器可直接顶替工作,保证了服务访问不被中断。

节点服务器提供网络服务,利用内部网络存储服务器提供的存储空间,将需要提供的网络服务搭建其中。

##实验环境:

服务器系统环境IP地址所需服务
主调度centos7192.168.200.201keepalived+ipvsadm
从调度centos7192.168.200.202keepalived+ipvsadm
节点web1centos7外:192.168.200.221 内192.168.100.101httpd+NFS
节点web2centos7外:192.168.200.222 内192.168.100.102httpd+NFS
NFS存储centos7192.168.100.111NFS

实验部署

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、测试

模拟客户端访问,当多次请求时,客户端得到的是不同节点服务器给予的响应回馈。

模拟当主调度服务器损坏无法工作是,从服务器直接顶替工作,使得服务能够继续访问。

当客户端多次请求





当主调度服务器无法工作时

这里为了简化操作,直接将主调度服务器关机,达到模拟主调度服务器无法工作情况。然后继续使用客户端访问。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LVS-DR keepalive