项目 | Value |
---|---|
LVS1 | 192.168.99.109 |
LVS2 | 192.168.99.110 |
real server 1 | 192.168.99.120:8080 |
real server2 | 192.168.99.121:8080 |
VIP | 192.168.99.199 |
`yum install keepalived`
配置
vrrp_instance VI_1 {
state BACKUP #master实例就配置为MASTER
interface ens33 # 端口名称根据需求修改
virtual_router_id 100 #主从必须一致
priority 90 #从实例要小于主实例
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 #主从连接的默认密码
}
virtual_ipaddress {
192.168.99.199/24 dev ens33 label ens33:3 #这个ip配置在lvs的master的网卡上
}
}
realserver 192.168.99.199 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
net_mask 255.255.255.0
persistence_timeout 0 #这个是在多少秒内同一个客户端的请求都会负载到同一个服务器
protocol TCP
real_server 192.168.99.120 80 { #配置的后端服务器端口要和虚拟ip映射的端口一致,不然不能正常工作
weight 1
HTTP_GET {
url {
path /
status_code 200
}
}
real_server 192.168.99.121 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
}
}
1.安装LVS
`yum install ipvsadm`
2.关闭arp_ignore和arp_announce
因为后端服务器的lo网卡配置了vip,所以必须要将lo网卡对网络中的其他机器隐藏起来,所以要先关闭其他网卡的arp_ignore和arp_announce,不然其他网卡会泄露lo网卡的信息
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce #注意这里关闭的是realserver的ens33端口。lo网口的这个参数不能关闭
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore #同上
3.vip配置
(1)lvs的vip配置,只需要配置在主实例
上即可掩码是24位
ifconfig ens33:3 192.168.99.199 netmask 255.255.255.0
(2)后端服务器的vip配置在lo网口上,并且掩码是32位
,所有的后端服务器都要配置
ifconfig lo 192.168.99.199 netmask 255.255.255.255 #这里的掩码是32位
4.负载策略配置
ipvsadm -A -t 192.168.99.199 -s rr #配置负载均衡器,ip为vip
ipvsadm -a -t 192.168.99.199:80 -r 192.168.99.120 -g -w 1 #后端服务器起的端口要和负载均衡器的一致
ipvsadm -a -t 192.168.99.199:80 -r 192.168.99.121 -g -w 1
5.排错
(1)查看转发策略
~]# 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.99.199:80 rr
-> 192.168.99.120:80 Route 1 0 0
-> 192.168.99.121:80 Route 1 0 0
# 这里的后端服务器端口默认和负载均衡器的一致,因此,后端服务器的端口也要与负载均衡器的一致
(2)查看转发的连接
~]# ipvsadm -lnc #通常是下面这样的,连接上的或者快要断开连接的。
IPVS connection entries
pro expire state source virtual destination
TCP 01:50 FIN_WAIT 192.168.99.1:51087 192.168.99.199:80 192.168.99.120:80
TCP 14:42 ESTABLISHED 192.168.99.1:51086 192.168.99.199:80 192.168.99.121:80
如果发现大量的SYN_RECV状态的连接,说明后端服务器路由配置有问题,只是收到了SYN包,但是无法发出来。大概率是lo网口配置有问题,比如配置成了24位掩码
解决方案
1.将lo网口掩码配置成32位,防止路由出现异常
2.lo网口的ip配置为vip
本文地址:https://blog.csdn.net/weixin_42768584/article/details/107346811
如对本文有疑问, 点击进行留言回复!!
网友评论