LVS/DR工作模式介绍及配置

1.1 LVS/DR模式介绍

  • 双地址配置:所有真实服务器(RS)都需要配置两个IP地址:一个是真实服务器的IP地址(RIP),另一个是虚拟服务器的IP地址(VIP),后者与LVS上的VIP一致。

  • 二层网络要求:LVS必须与所有RS处于同一二层广播域内,这样LVS才能通过ARP协议获取到RS的IP地址和对应的MAC地址。

  • 请求转发:当用户发送请求到LVS时,LVS在转发请求到选定的RS时,保持请求报文的源和目的IP地址及端口号不变。LVS更改报文的源MAC地址为自己的MAC地址,目的MAC地址更改为RS的MAC地址。

  • MAC地址修改:LVS在DR模式下将请求报文的源MAC地址替换为自身的MAC地址,目的MAC地址替换为选定RS的MAC地址。

  • IP地址保持不变:在转发过程中,请求报文的源IP地址和目的IP地址以及端口号都保持原始客户端的值不变。

  • 响应直接返回:RS处理请求后,响应报文直接发送回客户端,不经过LVS,减轻了LVS的负荷。

  • VIP配置一致性:RS上配置的VIP需与LVS的VIP一致,以确保请求能够正确地分发到RS。

  • ARP广播禁用:为避免IP地址冲突,RS上的VIP地址相关网卡需关闭ARP广播和应答功能。

  • VIP配置位置:VIP通常配置在回环口上,这样做可以提高配置的灵活性并避免地址冲突。

  • 同一网段要求:LVS的DIP和RS的RIP需在同一网段内,这是DR模式的一个限制。

  • 端口号不支持修改:在DR模式中,LVS不支持修改请求报文的目的端口号。

  • 部署限制:由于DIP和RIP必须在同一网段,DR模式不适合用于大规模或远距离部署,限制了其在大型分布式系统中的应用。

1.2 LVS/DR模式与NAT模式对比

特性/方面 LVS/DR模式 LVS/NAT模式
工作原理 修改数据包的MAC地址,不改变IP地址 修改数据包的目的IP地址和MAC地址
请求处理 请求报文经过LVS,响应报文直接从RS返回给客户端 请求和响应报文都需要经过LVS
网络要求 LVS和RS必须在同一物理网络 LVS作为RS的网关,通常在同一网络
VIP配置 RS上的VIP配置在lo接口的别名上 VIP作为整个群集的外部IP地址
端口要求 RS和LVS的VIP提供服务的端口必须一致 支持端口映射,VIP端口可以与RS端口不同
性能效率 高性能,响应快速,因为响应不经过LVS 相对较低,因为所有流量都需经过LVS,可能成为瓶颈
适用场景 大型、高负载且对性能要求极高的场景 中小型应用,配置相对简单
扩展性 由于网络限制,不适合大规模或远距离部署 伸缩能力有限,但可以跨网络部署
安全性 较高,因为响应流量不经过LVS 由于流量均需经过LVS,可能面临更大的安全风险
地址冲突 需要注意ARP广播和应答的配置以避免冲突 无特殊地址冲突问题
RS的网关设置 RS的网关不能指向DIP RS的网关必须指向LVS的DIP

1.3 LVS/DR模式ARP抑制

  • LVS-DR模式中,ARP抑制是一个重要的配置步骤,其目的是保证网络流量正确地通过LVS调度器进行分发,同时避免因ARP广播导致网络混乱。

1.3.1 原因:

  1. 避免ARP广播导致混乱:在LVS-DR模式下,LVS调度器(Director Server)和真实服务器(Real Server, RS)都配置有相同的虚拟IP地址(VIP)。如果不进行ARP抑制,当ARP请求到达时,所有配置了该VIP的服务器都可能响应,导致网络中充斥着大量错误的MAC地址信息,从而使得流量不能正确地通过LVS进行负载均衡。

  2. 确保流量正确分发:ARP抑制确保只有LVS调度器响应ARP请求,RS不响应,这样客户端的请求将被LVS调度器接收,并根据配置的规则分发到不同的RS。

1.3.2 修改内核参数做ARP抑制

  • 在 Linux 系统中,可以通过以下两个参数来配置 ARP 抑制:

    • net.ipv4.conf.< interface >.arp_ignore = 1: 这个参数告诉内核在处理 ARP 请求时忽略 ARP 响应。当设为 1 时,内核会忽略所有的 ARP 响应,除非请求的目标 IP 地址在本地子网中。

    • net.ipv4.conf.< interface >.arp_announce = 2: 这个参数定义了在网络接口上发送的 ARP 请求包中的源 IP 地址。当设为 2 时,内核会始终使用与目标 IP 地址最匹配的本地 IP 地址作为源 IP 地址进行 ARP 请求。这样可以防止 ARP 请求被发送到不应该接收这些请求的主机。

  • 配置方法

    • 要使这些设置在系统重启后依然有效,需要将它们添加到/etc/sysctl.conf文件中。对于所有网络接口,可以设置all作为

      <interface>的值:

      net.ipv4.conf.all.arp_ignore = 1
      net.ipv4.conf.all.arp_announce = 2
    • 应用这些更改,执行命令:

      [root@rs1 ~]# sysctl -p
  • 临时修改

    • 如果需要临时修改(不重启系统),可以直接通过/proc文件系统进行设置,例如在每台RS上执行:

      [root@LVS-RS1 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
      [root@LVS-RS1 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
      [root@LVS-RS1 ~]# echo "1" > /proc/sys
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值