①客户端发送请求到VIP
②LVS调度器接收请求后,根据算法选择一台后端的真实服务器,转发到RS,此时请求的报文的目的MAC地址修改成后端真实服务器的MAC地址转发
③后端真实服务器接收请求处理完成,由于后端服务器直接把响应结果转发给客户端,响应报文中的目的MAC地址修改成客户端的MAC地址,直接把响应报文转发到客户端
④调度器、后端真实服务器都有VIP地址,调度器的地址和后端真实服务器的地址以及VIP在同一网段
①标识后端的真实服务器
②保证调度器和后端服务器之间的通信,保证请求可以正确的转发到后端服务器
③实现高可用和故障转移
①由于调度器和后端服务器有相同的VIP地址,导致响应冲突——ARP通信紊乱
解决方法:对真实服务器进行处理,让真实服务器不响应针对VIP的ARP请求(只让RIP响应)——避免后端真实服务器的VIP地址响应
具体操作:VIP地址使用lo虚拟地址,内核参数优化
arp_ignore=1 #后端真实服务器只响应目的IP为本地IP(物理网卡的真实地址——RIP)
②返回报文使用的源地址还是VIP地址,调度器也是VIP地址,怎么把响应返回到客户端不经过调度器?
解决方法:对后端真实服务器做内核参数优化
arp_announce=2 #系统不使用IP数据包的源地址来设置ARP的请求,使用真实的物理网卡地址来响应
①调度器的ip和真实服务器的ip必须在同一个物理网络中
②真实服务器的ip地址,可以是私有地址(常用),也可以是公网地址。如果配置公网地址,可以通过互联网直接访问RIP(很少用)
③调度器只作为访问入口,不做网关服务器,要把服务器的转发功能关闭
网关服务器——路由服务器——转发
④后端真实服务器的网关也不能指向调度器,真实服务器的数据包不允许经过调度器
⑤后端真实服务器上,基于lo回环接口配置VIP地址
LVS负载均衡的工作方式
(1)NAT模式——地址转换
优点:配置简单
缺点:性能瓶颈
真实服务器:所有
真实服务器支持的网络模式:私网
真实服务器数量:10-20台
(2)DR模式——直接路由(最常用)
优点:性能最好
缺点:调度服务器和后端真实服务器不能跨网段,只能在一个网段中
真实服务器:不能支持ARP响应NO-ARP,请求只能到真实服务器
真实服务器支持的网络模式:公网、私网
真实服务器数量:100台
(3)TUN模式——公司不用
LVS调度器中常用的算法(负载均衡策略)
rr、wrr、dh、sh、wlc、lc、lblc
实验条件:
DS——20.0.0.11——调度器
RS1——20.0.0.10——集群1
RS2——20.0.0.20——集群2
nginx2——20.0.0.21——共享目录
调度器和真实服务器的IP地址以及VIP地址必须在同一网段
实验步骤:
1、配置共享服务nginx2
(1)设置20.0.0网段可以访问共享目录
(2)共享目录赋权
(3)发布共享服务
(4)在共享服务中写入内容
2、配置调度器nginx1
(1)下载ipvsadm工具包
(2)配置VIP地址
ifconfig ens33:0 20.0.0.100/24
(3)保存配置文件,启动ipvsadm服务(不保存无法启动服务)
ipvsadm-save > /etc/sysconfig/ipvsadm
(4)调度器内核参数优化
重定向会有回显消息,禁止重定向,没有回显消息
(5)配置策略
配置策略后记得保存配置文件ipvsadm-save > /etc/sysconfig/ipvsadm
3、集群1test1
(1)安装nginx服务
(2)挂载共享目录
(3)测试
(4)设置回环接口
把VIP地址绑定到lo:0,作为LVS的VIP地址,作为标识,告诉调度器进行转发请求的IP地址寻址
(5)内核参数优化
4、集群2test2
(1)安装nginx服务
(2)挂载共享目录
(3)设置回环接口
把vip地址绑定到lo:0,作为LVS的vip地址,标识,告诉调度器进行转发请求的IP地址寻址
内核参数优化
net.ipv4.conf.lo.arp ignore = 1
#设置lo接口忽略来自任何接口的ARP请求
net.ipv4.conf.lo.arp announce = 2
#设置lo接口仅响应本地的ip地址,其他的接口ARP请求全部忽略
net.ipv4.conf.all.arp ignore = 1
#所有接口忽略来自任务接口的ARP请求
net .ipv4.conf.all.arp announce = 2
#所有接口仅响应本地的ip地址的ARP请求,其他街交口的ARP请求全部忽略
5、测试