构建 LVS 负载均衡群集--直接路由模式(LVS-DR)


一、LVS-DR 数据包流向分析

为方便进行原理分析,将 Client 与群集机器放在同一网络中,数据包流经的路线为 1-2-3-4
mark

  1. Client 向目标 VIP 发出请求,Director(负载均衡器)接收
    • 此时源 MAC 地址为 Client 的 MAC 地址
    • 目标 MAC 地址为调度器 Director 的 MAC 地址
  1. Director 根据负载均衡算法选择 RealServer
    • 不修改也不封装 IP 报文,而是将数据帧的 MAC 地址改为 RealServer 的 MAC 地址,然后在局域网上发送
    • 此时源 MAC 地址为 Director 的 MAC 地址,目的 MAC 地址为 RealServer 的 MAC 地址
  1. RealServer 收到这个帧
    • 解封装后发现目标 IP 与本机匹配(RealServer 事先绑定了 VIP),于是处理这个报文
    • 随后重新封装报文,将响应报文通过 lo 接口传送给物理网卡然后向外发出
    • 此时源 MAC 地址为 RealServer 的 MAC 地址,目的 MAC 地址为 Client 的 MAC 地址
  1. Client 将收到回复的报文
    • Client 认为得到正常的服务,而不会知道是哪一台服务器处理的
    • 注意:如果跨网段,则报文通过路由器会经由 Internet 返回给用户

二、LVS-DR 中的 ARP 问题

在LVS-DR负载均衡集群中,负载均衡与节点服务器都要配置相同的VIP地址
mark

  • 但在局域网中具有相同的 IP 地址,势必会造成各服务器 ARP 通信的紊乱:
    • 当 ARP 广播发送到 LVS-DR 集群时,因为负载均衡器和节点服务器都是连接到相同网络上,它们都会接收到 ARP 广播
    • 只有前端的负载均衡器进行响应,其他节点服务器不应该响应 ARP 广播
  • 这时,我们可以对节点服务器进行处理,使其不响应针对 VIP 的 ARP 请求:
    • 使用虚接口 lo:0 承载 VIP 地址
    • 设置内核参数 arp_ignore=1(系统只响应目的 IP 为本地 IP 的 ARP 请求)
  • RealServer 返回报文(源 IP 是 VIP)经路由器转发,重新封装报文时,需要先获取路由器的 MAC 地址
  • 且发送 ARP 请求时,Linux 默认使用 IP 包的源 IP 地址(即 VIP)作为 ARP 请求包中的源 IP 地址,而不使用发送接口的 IP 地址
  • 路由器收到 ARP 请求后,将更新 ARP 表项
  • 原有的 VIP 对应 Director 的 MAC 地址会被更新为 VIP 对应 RealServer 的 MAC 地址
    而路由器根据 ARP 表项,会将新来的请求报文转发给 RealServer,导致 Director 的 VIP 失效

上述问题的解决方法:
对节点服务器进行处理,设置内核参数 arp_announce=2(系统不使用 IP 包的源地址来设置 ARP 请求的源地址,而选择发送接口的 IP 地址)

  • 解决ARP的两个问题的方法
#修改 /etc/sysctl.conf 文件

net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

三、LVS 负载均衡群集-DR模式

1.数据包流量分析

  1. 客户端发送请求到 Director Server (负载均衡器),请求的数据报文(源 IP 是 CIP, 目标IP是 VIP)到达内核空间
  2. Di
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xucf1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值