一、概述
为什么需要高可用
问题:LVS可以实现负载均衡功能,但是没有健康检查机制,以及冗余机制
1、如果一台RS节点故障,LVS仍然会将请求调度至该故障RS节点服务器
2、其次LVS节点出现故障,那么整个集群就无法正常对外提供服务
解决:可以使用keepalived软件来解决如上问题
1、使用keepalived可以实现LVS的健康检查机制,RS节点故障,则自动剔除该故障的RS节点,如果RS节点恢复则自动加入集群
2、使用keepalived可以解决LVS单点故障,以此实现LVS的高可用
总结:
keepalived就是为LVS而诞生的
二、高可用配置
1、master节点配置
新的节点 172.16.1.4 需要做如下基础信息配置:
eth1:
[root@lvs02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.4
PREFIX=24
GATEWAY=172.16.1.200
[root@lvs02 ~]# ifdown eth1 && ifup eth1
2.安装软件:
yum install keepalived ipvsadm -y
3.关闭七层负载均衡的keepalived,
4.配置lvs-master的keepalived, (记得先删除lvs上的虚拟IP,以及ipvs规则)
[root@lvs01 ~]# sh lvs_ds.sh stop
[root@lvs01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb01
}
vrrp_instance VI_1 {
state MASTER
priority 200
interface eth1
virtual_router_id 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.1.100
}
}
# 配置集群地址访问的IP+Port
virtual_server 172.16.1.100 80 {
# 健康检查的时间,单位:秒
delay_loop 6
# 配置负载均衡的算法
lb_algo rr
# 设置LVS的模式 NAT|TUN|DR
lb_kind DR
# 设置协议
protocol TCP
# 负载均衡后端的真实服务节点RS-1
real_server 172.16.1.5 80 {
# 权重配比设置为1
weight 1
# 设置健康检查
TCP_CHECK {
# 检测后端80端口
connect_port 80
# 超时时间
connect_timeout 3
# 重试次数2次
nb_get_retry 2
# 间隔时间3s
delay_beefore_retry 3
}
}
# 负载均衡后端的真实服务节点RS-2
real_server 172.16.1.6 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 2
delay_beefore_retry 3
}
}
}
2、backup节点配置
[root@lvs02 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP
priority 150
interface eth1
virtual_router_id 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.1.100
}
}
# 配置集群地址访问的IP+Port
virtual_server 172.16.1.100 80 {
# 健康检查的时间,单位:秒
delay_loop 6
# 配置负载均衡的算法
lb_algo wlc
# 设置LVS的模式 NAT|TUN|DR
lb_kind DR
# 设置协议
protocol TCP
# 负载均衡后端的真实服务节点RS-1
real_server 172.16.1.5 80 {
# 权重配比设置为1
weight 1
# 设置健康检查
TCP_CHECK {
# 检测后端80端口
connect_port 80
# 超时时间
connect_timeout 3
# 重试次数2次
nb_get_retry 2
# 间隔时间3s
delay_beefore_retry 3
}
}
# 负载均衡后端的真实服务节点RS-2
real_server 172.16.1.6 80 {
# 权重配比设置为1
weight 1
# 设置健康检查
TCP_CHECK {
# 检测后端80端口
connect_port 80
# 超时时间
connect_timeout 3
# 重试次数2次
nb_get_retry 2
# 间隔时间3s
delay_beefore_retry 3
}
}
}
3、故障切换
如果realserver节点故障,是否会自动将其移除;
通过查看 systemctl status keepalived -l 会发现有移除的记录,检查ipvsadm -L -n 节点信息
如果ds服务器故障,能否切换到备用节点;
[root@lvs01 ~]# systemctl stop keepalived
[root@lvs01 ~]# ip addr |grep 172.16.1.100
[root@lvs01 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
查看备节点:
[root@lvs02 ~]# ip addr |grep 172.16.1.100
inet 172.16.1.100/32 scope global eth1
[root@lvs02 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.1.100:80 wlc
-> 172.16.1.5:80 Route 1 0 0
-> 172.16.1.6:80 Route 1 0 0
[root@client ~]# curl -HHost:lvs.qingchen.net http://10.0.0.200
Proxy01 Real Server
[root@client ~]# curl -HHost:lvs.qingchen.net http://10.0.0.200
Proxy02 Real Server
[root@client ~]# curl -HHost:lvs.qingchen.net http://10.0.0.200
Proxy01 Real Server
[root@client ~]# curl -HHost:lvs.qingchen.net http://10.0.0.200
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com