LVS-DR模式,也是最常用的lvs负载方式,DR DIRECT ORUTING 直接路由模式
负载均衡器lvs调度器,只负责请求和转发到后端的真是服务器,但是响应结果,由后端服务器直接转发给客户端,不需要经过调度器的处理,减轻LVS调度器的负担,提高了性能和稳定
LVS-DR模式的工作原理
|---|--------------------------------------------------------------------------------|
| 1 | 客户端发送请求到vip(代理) |
| 2 | LVS的调度器接收到请求之后,根据算法选择一台后端的真实服务器,请求转发到后端RS,请求的报文的目的MAC地址,修改成真实服务器的mac地址,然后转发 |
| 3 | 后端真实服务器接收请求处理完成之后,由于后端服务器直接把响应结果转发给客户端,响应报文中的目的mac地址修改成客户端的mac地址,直接把响应报文转发到客户端 |
| 4 | 调度器,后端真实服务器都有vip地址,调度的地址和后端真实服务器在同一网段 |
DR模式的特点
|---|---------------------------------------------------------|
| 1 | 调度器的IP和真实服务器的ip必须在同一物理网络中(在同一网段) |
| 2 | 真实服务器的ip地址可以是私有地址,也可以施工有嗲只,如果配置的是公网,通过互联网可以直接访问RIP(rip) |
| 3 | 调度器只作为入口,但是不做网关,要把服务器的转发功能关闭 |
| 4 | 后端真实服务器的网关也不能指向调度器,真实服务器的数据包是不允许经过调度器的 |
| 5 | 后端真实服务器上,基于lo接口配置vip的ip地址 |
ARP协议:网络层协议,将ip地址解析为物理MAC地址
ARP请求:主机A和主机B
ARP解决局域网内的通信,ip地址可mac地址映射
DR模式的调度器和后端服务器都在一个网段中,通过ARP请求实现局域网内部通信
LVS-DR缺点问题
|-----|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 问题一 | 由于调度器和后端真实服务器的都有相同的VIP地址,导致响应冲突,ARP通信紊乱 解决办法:对真实服务器进行处理,真实服务器不响应针对VIP的ARP请求 具体操作:arp_ignore=1 #Vip地址使用的LO的虚拟地址 后端真实服务器只响应目的ip为本地ip,也就是RIP,后端服务器的真正的ip地址,ens33网卡提供的地址 |
| 问题二 | 返回报文使用的源地址还是vip地址,调度器也是vip,怎么把响应返回到客户端不经过调度器? 解决办法:对后端真实服务器做一个内核参数的优化 具体操作:arp_announce=2 #系统不使用ip数据包的源地址,来设置ARP的请求真实的物理网卡的地址 |
如何实现DR模式的负载均衡
排错:防火墙有个很经典的报错
|-------------------|----------------------------|
| No route to hosts | 没有到主机的连接 90%可能是防火墙问题,没关防火墙 |
调度器的内核优化
|--------------------------------------------------------------------------|
| net.ipv4.ip_forward = 0 #关闭服务器作为网关的转发功能 |
| net.ipv4.conf.all.send_redirects = 0 #控制是否发送ICMP的重定向消息,禁止重定向 |
| net.ipv4.conf.default.send_redirects = 0 #禁止默认网络接口,就是调度器的网卡,发送icmp的重定向消息 |
| net.ipv4.conf.ens33.send_redirects = 0 #指明网卡设备,ens33不发送重定向消息 |
内核优化
|----------------------------------------------------------------------------|
| 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请求全部忽略 |
DR模式核心
|---|----------------------------------------------------------------------|
| 1 | 就是响应客户端由后端的真实服务器完成,不需要经过调度器 |
| 2 | vip地址,调度器和后端服务器都要有vip地址 |
| 3 | vip地址,暴露访问地址 调度器转发请求的标识 调度器和后端服务器之间进行通信 高可用(DR模式的高可用) 其他所有的请求和响应都是禁用 |
修改VIP的调度算法:
ipvsadm -E -t 192.168.233.100:80 -s wrr
修改策略的轮询权重:
ipvsadm -e -t 192.168.233.100:80 -r 192.168.233.20:80 -w 3
面试题
LVS负载均衡的工作方式有几种,以及优缺点
|-----|----|-----|
| NAT | DR | TUN |
最常用的就是DR模式
NAT模式
|----|----------------------------------------------------|
| 优点 | 配置简单 |
| 缺点 | 有性能瓶颈 真实服务器ANY 支持的网络模式是私网 后端服务器数量是最少得 low 只有10到20台 |
DR模式
|----|---------------------------------------------------------------------------------|
| 优点 | 性能好 |
| 缺点 | 调度服务器和后端真实服务器不能跨网段 真实服务器:NO-ARP(请求只能到真实服务器) 支持的网络:后端服务器可以使内网也可以是公网 真实服务器数量有100台 |
Tun模式
没人用的垃圾,公司不用
LVS:调度器种常用的算法:负载均衡策略
Rr ,Wrr ,Dh ,Sh
动态
Wlc ,Lc ,Lblc
工作原理:NAT和DR的工作原理