- LVS基于四层,工作效率高。
- 单个Nginx承受不了压力,需要集群。
- LVS充当Nginx的集群调度者。
- Nginx接受请求来回,LVS可以只接受不响应。
LVS的四种模式:
1.LVS模式之NAT
这种模式下Real Server可以在内网中,所有的请求和返回都要经过LVS,对于高流量的场景并不适用。
2.LVS模式之 TUN
这种模式下是基于IP的隧道模式,Real Server要暴露在公网当中,并且必须存在网卡,所有请求的上行进过LVS,下行不需要经过LVS直接返回给用户, 提高了请求数和吞吐量。
3.LVS模式之DR模式(Direct Route)
这种模式下Real Server就不会处于公网之中, 是将响应总结起来然后进过vip的Router返回。避免了将Real Server暴露在公网之中。
安装LVS
现如今的centos都是集成了lvs,所以ipvs
是自带的,相当于苹果手机自带ios,我们只需要安装ipvsadm
(ipvsadm是管理集群的工具,通过ipvs可以管理集群,查看集群等操作)
yum install ipvsadm
#检查是否安装成功
ipvsadm -Ln
配置虚拟IP
注意:
- 阿里云:不支持虚拟IP
- 腾讯云:支持虚拟IP,但是需要购买,可以最多支持10个虚拟IP
配置lvs的虚拟ip:
- 找到网卡配置目录
- 拷贝并且创建子接口
cp ifcfg-ens33 ifcfg-ens33:1
- 修改子接口配置
- 重启网络服务
service network restart
- 查看结果
配置Real Server 虚拟IP
- 找到网卡配置目录,找到io(本地环回接口,用户构建虚拟网络子接口),拷贝一份新的然后进行修改
- 修改内容
- 重启网络服务
APR响应级别与通告行为的概念
- arp-ignore: ARP响应级别(处理请求)
- 0: 只要本机配置了IP,就能响应请求
- 1: 请求的目标地址到达对应的网络接口,才会响应请求 - arp-announce: ARP通告行为(返回响应)
- 0: 本机上任何网络接口都向外通告,所有的网卡都能接受通告
- 1: 尽可能避免本网卡与不匹配的目标进行通告
- 2: 只在本网卡通告
配置ARP
- 打开sysctl.conf
vim /etc/sysctl.conf
- 配置
所有网卡
、默认网卡
、lo网卡
,分别对应all
、default
、lo
# configration for lvs
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
- 刷新配置文件
- 增加一个路由,用户接受数据报文,当有请求到本机之后,会交给lo去处理
- 防止重启失效
echo "route add -host 192.168.1.150 dev lo:1" >> /etc/rc.local
使用ipvsadm去配置集群规则
- 创建lvs节点,用户访问的集群调度者
ipvsadm -A -t 192.168.1.150:80 -s rr -p 5
- -A: 添加集群
- -t: tcp协议
- ip地址: 设定集群的访问ip,也就是虚拟地址
- -s: 设置负载均衡的算法,rr 标识轮询
- -p: 设置链接持久化的时间
- 创建2台RS真实的服务器
ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.171:80 -g
ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.172:80 -g
- -a: 表示添加真实的服务器
- -t: 表示tcp协议
- -r: 表示真实的服务器地址
- -g: 设定DR模式
- 保存到规则库,否则重启失效
ipvsadm -S
- 检查集群
# 查看集群列表
ipvsadm -Ln
#查看集群状态
ipvsadm -Ln --stats
- 其他命令
# 重启ipvsadm,重启后需要重新配置
service ipvsadm restart
# 查看持久化连接
ipvsadm -Ln --persistent-conn
# 查看连接请求过期时间以及请求源ip和目标ip
ipvsadm -Lnc
# 设置tcp tcpfin udp 的过期时间(一般保持默认)
ipvsadm --set 1 1 1
# 查看过期时间
ipvsadm -Ln --timeout
- 详细的帮助文档
ipvmsadm -h
man ipvsadm
使用keepalived配置集群规则