一、实验准备

  1. 设置两个不同网段,关闭防火墙,设置路由
    2. 调度器开启中继模式
    LVS集群服务配置 - 图1
    3. Web服务器安装httpd,并编写测试页
    LVS集群服务配置 - 图2
    LVS集群服务配置 - 图3
    4. 外网客户机访问测试页
    LVS集群服务配置 - 图4
    5. 安装ipvsadm软件包
    LVS集群服务配置 - 图5
    6. 装载LVS模块
    LVS集群服务配置 - 图6

    二、LVS-NAT配置

    LVS集群服务配置 - 图7
    l ipvsadm 命令
新增和修改集群 ipvsadm -A|E -t|u|f service-address [-s scheduler]
-A:添加 -E:修改
-D:删除 -C:清空
-t:指定tcp -u:指定udp
-s:指定调度算法
默认是wlc
RR(轮询)
WRR(加权轮询)
SH(源地址hash,实现session保持)
DH(目的地址hash)
LC(最小连接数)
WLC(加权最小连接) SED(最短期望延迟) NQ(永不排队)
管理服务器池中的RS ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
-a:添加可调度的服务器节点 -e:修改添加的服务器节点
-d:删除服务器节点 -r:指定节点服务器IP地址(RIP)
-g:使用DR模型 -i:TUN模型 -m:NAT模型 (默认是DR模型)
-w:权重
  1. 添加集群
    LVS集群服务配置 - 图8
    2. 添加服务器中的RS
    LVS集群服务配置 - 图9
    3. 访问验证结果
    LVS集群服务配置 - 图10

    三、LVS-DR配置

    LVS集群服务配置 - 图11
    LVS集群服务配置 - 图12
    1. 在调度器上配置客户端能访问的VIP
    LVS集群服务配置 - 图13
    2. 配置VIP到调度器的路由
    LVS集群服务配置 - 图14
    3. 调整web服务器内核参数,抑制ARP响应
    LVS集群服务配置 - 图15
    LVS集群服务配置 - 图16
    4. 在web服务器自身网卡的回环地址子接口上配置VIP
    LVS集群服务配置 - 图17
    LVS集群服务配置 - 图18
    5. Web服务器上配置VIP的路由
    LVS集群服务配置 - 图19
    LVS集群服务配置 - 图20
    6. 用客户机ping VIP,检查连通性
    LVS集群服务配置 - 图21
    LVS集群服务配置 - 图22
    7. 配置调度器的调度规则
    LVS集群服务配置 - 图23
    8. 浏览器验证LVS-DR集群结果
    LVS集群服务配置 - 图24
    9. arp_ignore和arp_announce参数示例
    LVS集群服务配置 - 图25

    (1)当arp_ignore参数配置为0时,eth1网卡上收到目的IP为环回网卡IP的arp请求,但是eth1也会返回arp响应,把自己的mac地址告诉对端。
    LVS集群服务配置 - 图26
    (2)当arp_ignore参数配置为1时,eth1网卡上收到目的IP为环回网卡IP的arp请求,发现请求的IP不是自己网卡上的IP,不会回arp响应。
    LVS集群服务配置 - 图27
    (3)当arp_announce参数配置为0时,系统要发送的IP包源地址为eth1的地址,IP包目的地址根据路由表查询判断需要从eth2网卡发出,这时会先从eth2网卡发起一个arp请求,用于获取目的IP地址的MAC地址。该arp请求的源MAC自然是eth2网卡的MAC地址,但是源IP地址会选择eth1网卡的地址。
    LVS集群服务配置 - 图28
    (4)当arp_announce参数配置为2时,eth2网卡发起arp请求时,源IP地址会选择eth2网卡自身的IP地址。
    10. arp_ignore和arp_announce参数在DR模式下的作用
    (1)arp_ignore
      因为DR模式下,每个真实服务器节点都要在环回网卡上绑定虚拟服务IP。这时候,如果客户端对于虚拟服务IP的arp请求广播到了各个真实服务器节点,如果arp_ignore参数配置为0,则各个真实服务器节点都会响应该arp请求,此时客户端就无法正确获取LVS节点上正确的虚拟服务IP所在网卡的MAC地址。假如某个真实服务器节点A的网卡eth1响应了该arp请求,客户端把A节点的eth1网卡的MAC地址误认为是LVS节点的虚拟服务IP所在网卡的MAC,从而将业务请求消息直接发到了A节点的eth1网卡。这时候虽然因为A节点在环回网卡上也绑定了虚拟服务IP,所以A节点也能正常处理请求,业务暂时不会受到影响。但时此时由于客户端请求没有发到LVS的虚拟服务IP上,所以LVS的负载均衡能力没有生效。造成的后果就是,A节点一直在单节点运行,业务量过大时可能会出现性能瓶颈。
      所以DR模式下要求arp_ignore参数要求配置为1。
     (2)arp_announce
      每个机器或者交换机中都有一张arp表,该表用于存储对端通信节点IP地址和MAC地址的对应关系。当收到一个未知IP地址的arp请求,就会再本机的arp表中新增对端的IP和MAC记录;当收到一个已知IP地址(arp表中已有记录的地址)的arp请求,则会根据arp请求中的源MAC刷新自己的arp表。
      如果arp_announce参数配置为0,则网卡在发送arp请求时,可能选择的源IP地址并不是该网卡自身的IP地址,这时候收到该arp请求的其他节点或者交换机上的arp表中记录的该网卡IP和MAC的对应关系就不正确,可能会引发一些未知的网络问题,存在安全隐患。
    所以DR模式下要求arp_announce参数要求配置为2。

    四、LVS持久连接

    LVS集群服务配置 - 图29
    1. PPC:Persitens Port connection
    同一客户端IP同一端口始终在一定时间内调度到同一RS上
    LVS集群服务配置 - 图30
    2. PCC:Persitens Client connection
    同一客户端IP始终在一定时间内调度到同一RS上(不管请求什么端口服务)
    LVS集群服务配置 - 图31
    3. PNMPP:防火墙规则标记
    把多个目标端口标记为同一个标记mark(1~99)
    先对某一特定类型的数据包打上标记,然后再将基于某一类标记的服务送到后台的Real Server上去,后台的Real Server 并不识别这些标记。将持久和防火墙标记结合起来就能够实现端口姻亲功能,只要是来自某一客户端的对某一特定服务(需要不同的端口)的访问都定义到同一台Real Server上去。
    案例:一个用户在访问购物网站时同时使用HTTP(80)和HTTPS(443)两种协议,我们需要将其定义到同一台Real Server上,而其他的服务不受限制。
    LVS集群服务配置 - 图32