Keepalived的设计目标就是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。使用Keepalived构建LVS群集更加简便易用,主要优势体现在,对LVS负载调度器实现热备切换、提高可用性,对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。
在基于LVS(DR模式)+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本次实验以DR模式的LVS群集为基础,增加一台负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建兼有负载均衡、高可用两种能力的LVS网站群集平台,实验拓补如图:
由于实验环境,所以就搭建两台Web站点服务器,NFS共享存储跟调度器、Web节点在同一网段上,简化实验步骤。实际生产环境中,正常情况下,共享存储不能跟调度器、Web节点在同一网段上,需要用交换机隔离出来,以增加对共享存储的读写操作。实际环境中,调度器、Web节点都至少需要两个网卡,便于跟共享存储通信。实验环境,简化了一下,大家多多体谅!
使用Keepalived构建LVS群集时,也需要用到ipvsadm管理工具(查看负载调度效果时使用),大部分工作由Keepalived自动完成,不需要手动执行ipvsadm(除了查看和监控群集外)。关于如何搭建NFS共享存储,搭建NFS共享存储特别简单!本次实验就不做了,对NFS群集不清楚的朋友可以参考博文:LVS负载均衡群集之构建NAT模式,可跟做!!!
实验步骤:
一、配置主调度器
1.全局配置、热备配置
首先为主、从调度器实现热备功能,漂移地址使用LVS群集的VIP地址。
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
//关闭防火墙和SELinux
[[email protected] ~]# yum -y install keepalived ipvsadm
//安装相应的服务、工具
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
//编辑Keepalived服务的配置文件
//配置文件少了许多没必要的东西,比如关于邮件的内容,为了更加简便的理解其配置文件内容
global_defs {
router_id LVS_DEVEL1 //主调度器名称
}
vrrp_instance VI_1 {
state MASTER //主调度器的热备状态
interface ens33
virtual_router_id 1
priority 100 //主调度器的优先级
advert_int 1
authentication { //主、从热备认证信息
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { //指定群集VIP地址(可以有多个)
192.168.1.254
}
}
关于Keepalived服务的配置文件详细介绍可以参考博文:利用Keepalived实现双机热备详解
2.Keepalived配置文件中Web服务池配置
在Keepalived的热备配置基础上添加“Virtual_server VIP 端口 {...}”区域来配置虚拟服务器,主要包括对负载调度器算法、群集工作模式、健康检查间隔、真实服务器地址等参数的设置。
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
……………………………………
//省略Keepalived配置文件的全局配置、热备配置
virtual_server 192.168.1.254 80 { //虚拟服务器地址(VIP)、端口
delay_loop 15 //健康检查的间隔时间(秒)
lb_algo rr //轮询(rr)调度算法
lb_kind DR //直接路由(DR)群集工作模式
! persistence_timeout 50
//连接保持时间(秒),“!”表示不启用的意思,为了验证效果,建议禁用。
protocol TCP //应用服务采用的是TCP协议
real_server 192.168.1.3 80 { //第一个Web节点的地址
weight 1 //节点的权重
TCP_CHECK { //健康检查方式
connect_port 80 //检查的目标端口
connect_timeout 3 //连接超时(秒)
nb_get_retry 3 //重试次数
delay_before_retry 4 //重试间隔
}
}
real_server 192.168.1.4 80 { //第二个Web节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
//如果有多个Web节点服务器,依次添加即可!
}
//注意配置文件的“{}”,较多,小心修改
[[email protected] ~]# systemctl start keepalived
//启动Keepalived服务
二、配置从调度器
从调度器的配置与主调度器基本相同,包括全局配置、热备配置、服务器池配置,只需修改全局配置中:路由器名称(router_id)、热备状态(state)、优先级(priority)。
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
//关闭防火墙和SELinux
[[email protected] ~]# yum -y install keepalived ipvsadm
//安装相应服务、工具
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
//编辑Keepalived服务的配置文件
global_defs {
router_id LVS_DEVEL2 //从调度器名称
}
vrrp_instance VI_1 {
state BACKUP //热备状态(备用)
interface ens33
virtual_router_id 1
priority 99 //从调度器的优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.254
}
}
virtual_server 192.168.1.254 80 {
delay_loop 15
lb_algo rr
lb_kind DR
! persistence_timeout 50
protocol TCP
real_server 192.168.1.3 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.1.4 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
除了上述标记的地方,剩下的地方跟主调度器一样(必须一样)!
[[email protected] ~]# systemctl start keepalived
//启动Keepalived服务
三、配置Web节点服务器
、
根据所选择的群集工作模式不同(DR或NAT),节点服务器的配置也有所差异。本次实验以DR模式为例,除了需要调整/proc系统的ARP响应参数外,还需要为虚拟接口(lo:0)配置VIP地址,并添加一条到VIP的本地路由。关于DR模式如何搭建Web节点服务器可以参考博文:LVS负载均衡群集之构建DR模式,可跟做!!!
大致步骤如下:
[[email protected] ~]# systemctl stop firewalld
s[[email protected] ~]# setenforce 0
//关闭防火墙与SELinux
[[email protected] ~]# yum -y install httpd
//安装http服务
[[email protected] ~]# echo qqqqq > /var/www/html/index.html
[[email protected] ~]# systemctl start httpd
//修改Web节点服务器的主页内容,并启动http服务
[[email protected] ~]# vim /etc/sysctl.conf
//修改内核参数,添加以下内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[[email protected] ~]# sysctl -p
//加载内核参数
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# cp ifcfg-lo ifcfg-lo:0
[[email protected] network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.254
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0
[[email protected] network-scripts]# ifup lo
[[email protected] network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.1.254 netmask 255.255.255.255
loop txqueuelen 1 (Local Loopback)
//为本机(lo)网卡添加虚拟IP
[[email protected] ~]# route add -host 192.168.1.254 dev lo:0
//添加一条到VIP的本地路由
不管几台Web节点服务器,都是同样的配置!
建议,两台Web节点服务器的主页不要一样,用于测试!在实际生产环境中,会搭建NFS共享存储(关于如何搭建NFS共享存储在博文开头已经提到)来自动同步Web节点服务器的主页内容!
四、测试LVS(DR模式)+Keepalived高可用群集
在客户机的浏览器中,能够通过LVS(DR模式)+Keepalived群集的VIP地址(192.168.1.254)正常访问Web页面内容,当主、从调度器任何一个失效时,Web站点依然可以访问(可能需要刷新几次或者重新打开浏览器);只要服务器池有两台或两台以上的真实Web节点服务器可用,就可以实现访问量的负载均衡(而且负载均衡效果比LVS负载均衡效果要明显)!自行验证!
在主、从调度器上可以根据/var/log/messages日志文件,跟踪故障切换过程。若要查看负载分配情况,可以在主调度器上,执行以下命令:
[[email protected] ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.254:80 rr
-> 192.168.1.3:80 Route 1 1 0
-> 192.168.1.4:80 Route 1 1 0
这就是为什么要安装ipvsadm工具。
最终可以验证LVS(DR模式)+Keepalived高可用负载均衡群集的健壮性!
建议搭建NFS共享存储,来保证Web节点服务内容一致(实际环境中肯定是这样做的)!
———————— 本文至此结束,感谢阅读 ————————
原文地址:https://blog.51cto.com/14157628/2439181