LVS之二:DR模型工作原理_工作原理

1.当客户端访问集群中的服务(例如web),源IP(定义为A)和目标IP(定义为B)如上图所示,发送数据报文到调度器上

    <1>客户端发送报文必须到调度器上,不能到Rearserver上,不然无法实现调度

        实现原理:虽然RS上的lo口也配置VIP,但是却无法相应,通过如下配置在RS上实现

            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

        arp_ignore(接受到arp请求时的响应级别,默认0)

            1) 0:只要本地配置有相应的地址,给予响应

            2) 1:仅在请求的目标地址配置请求到达的接口上的时候,才给于响应

        arp_announce(将自己地址向外通告时的通告级别,默认0)

            1) 0:将本地任何接口上的任何地址向外通告

            2) 1:试图仅向目标网络通告语气网络匹配的地址

            3) 2:仅向与本地接口上地址匹配的网络进行通告

2.调度器收到报文后查询ipvsadm规则,符合集群服务后发送报文到RS上,源目IP地址不变,是通过修改MAC地址发送到RS上的,

        <1>调度器规则

            ipvsadm -A -t 192.168.11.100:80 -s wrr

            ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.12 -g -w 2

            ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.13 -g -w 4

3.RS收到报文后,发现目标IP为自己的VIP(lo:0上配置,不对外响应,只做回报的源IP),用自己的VIP作为源地址发送报文

        <1>如何实现发送报文时,源IP为自己的lo:0上的VIP,默认linux报文从哪个接口出源IP为那个接口

        实现原理:ifconfig lo:1 192.168.11.100 netmask 255.255.255.255 up  (配置RS的VIP,不对外响应)

                  route add -h 192.168.11.100 dev lo:0   (增加路由,报文目标IP为192.168.11.100的接口为lo:0,

                这样回报也是通过lo:0回报,确保报文源IP为VIP)

<2>确保调度器上的发包正确,增加如下配置

 ifconfig eth:0 192.168.11.100 netmask 255.255.255.255 up  (添加VIP地址)

 route add -h 192.168.11.100 dev eth:0 

4.客户端收到后源IP为VIP,目的IP为客户端的IP,

报文的封装为:RS通过自己的lo:0回应报文,源IP则为VIP,目标IP则为客户端IP