LVS/DR模式原理剖析(FAQs)

系统 Linux
LVS有LVS-DR,LVS-NAT,LVS-TUN三种模式,本文介绍了有关LVS-DR模式的相关原理,以FAQs的方式呈现。在DR模式下,调度器与实际服务器都有一块网卡连在同一物理网段上。vs/dr本身不会关心IP层以上的信息,即使是端口号也是tcp/ip协议栈去判断是否正确。

之前一篇LVS-DR模式原理图文详解介绍了该模式的工作原理,以下的FAQs解答了有关LVS/DR模式工作原理的常见问题。

 

1. LVS/DR如何处理请求报文的,会修改IP包内容吗?

1.1 vs/dr本身不会关心IP层以上的信息,即使是端口号也是tcp/ip协议栈去判断是否正确,vs/dr本身主要做这么几个事:

1)接收client的请求,根据你设定的负载均衡算法选取一台realserver的ip;

2)以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RS;

3)在hash table中记录连接信息。

vs/dr做的事情很少,也很简单,所以它的效率很高,不比硬件负载均衡设备差多少。

数据包、数据帧的大致流向是这样的:client --> VS --> RS --> client

1.2 前面已作了回答,vs/dr不会修改IP包的内容.

2. RealServer为什么要在lo接口上配置VIP?在出口网卡上配置VIP可以吗?

2.1 既然要让RS能够处理目标地址为vip的IP包,首先必须要让RS能接收到这个包。

在lo上配置vip能够完成接收包并将结果返回client。

2.2 答案是不可以将VIP设置在出口网卡上,否则会响应客户端的arp request,造成client/gateway arp table紊乱,以至于整个load balance都不能正常工作。

3. RealServer为什么要抑制arp帧?

这个问题在上一问题中已经作了说明,这里结合实施命令进一步阐述。我们在具体实施部署的时候都会作如下调整:

       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

我相信很多人都不会弄懂它们的作用是什么,只知道一定得有。我这里也不打算拿出来详细讨论,只是作几点说明,就当是补充吧。

3.1

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

这两条是可以不用的,因为arp对逻辑接口没有意义。

3.2 如果你的RS的外部网络接口是eth0,那么

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

其实真正要执行的是:

echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce

所以我个人建议把上面两条也加到你的脚本里去,因为万一系统里上面两条默认的值不是0,那有可能是会出问题滴。

4. LVS/DR load balancer(director)与RS为什么要在同一网段中?

从第一个问题中大家应该明白vs/dr是如何将请求转发给RS的了吧?它是在数据链路层来实现的,所以director必须和RS在同一网段里面。

5. 为什么director上eth0接口除了VIP另外还要配一个ip(即DIP)?

5.1 如果是用了keepalived等工具做HA或者Load Balance,则在健康检查时需要用到DIP。

5.2 没有健康检查机制的HA或者Load Balance则没有存在的实际意义。

6. LVS/DR ip_forward需要开启吗?

不需要。因为director跟realserver是同一个网段,无需开启转发。

7. director的vip的netmask一定要是255.255.255.255吗?

lvs/dr里,director的vip的netmask 没必要设置为255.255.255.255,也不需要再去

route add -host $VIP dev eth0:0

director的vip本来就是要像正常的ip地址一样对外通告的,不要搞得这么特殊.

8. LVS/DR如何进行tcp的三次握手?

应该不用再多说的,有兴趣单独交流吧。

 

【编辑推荐】

  1. Linux集群服务LVS概述与安装配置详解
  2. 企业级WEB的负载均衡高可用之LVS+Keepalived
  3. 大流量、高负载LVS系统优化注意事项

 

责任编辑:yangsai 来源: 51CTO.com
相关推荐

2011-05-25 11:26:46

LVS-DRLVS

2010-12-17 10:45:13

ldirectordLVS负载平衡

2011-06-07 15:51:24

puppet

2024-04-29 08:06:19

Redis分布式系统

2016-12-19 14:35:32

Spark Strea原理剖析数据

2009-09-14 10:35:15

Linq内部执行原理

2020-09-16 10:31:58

SMTP网络电子邮件

2010-06-17 14:35:03

设计模式 UML

2024-03-12 12:57:07

Redis主从架构

2014-02-12 10:07:07

三层交换原理

2012-02-08 10:37:42

Java反射

2010-09-06 12:50:09

PPP链路

2009-03-26 10:33:34

Oracle数据块数据库

2009-11-16 11:41:19

PHP上传大文件

2009-03-06 16:48:23

数据块原理Oracle

2010-04-22 11:19:11

LVS负载均衡

2019-12-05 15:45:51

SpringSecur权限系统

2022-09-05 22:22:00

Stream操作对象

2010-09-17 15:32:52

JVM工作原理

2009-11-02 16:22:16

VB.NET面向对象
点赞
收藏

51CTO技术栈公众号