微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Centos 下面 配置LVS的DR模式

1. Lvs DR 模型原理图

wKiom1j9qB2hkpshAABnNa-pck0010.png


(a)当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
(b)PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(c)IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
(d)由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。
(e)RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP
(f)响应报文最终送达至客户端


2. LVS-DR模型的特性


  • 特点1:保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS

  • RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问

  • RS跟Director Server必须在同一个物理网络中

  • 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server

  • 不支持地址转换,也不支持端口映射

  • RS可以是大多数常见的操作系统

  • RS的网关绝不允许指向DIP(因为我们不允许他经过director)

  • RS上的lo接口配置VIP的IP地址

  • 缺陷:RS和DS必须在同一机房中

3. 特点1的解决方案:

  • 在前端路由器做静态地址路由绑定,将对于VIP的地址仅路由到Director Server

  • 存在问题:用户未必有路由操作权限,因为有可能是运营商提供的,所以这个方法未必实用

  • arptables:在arp的层次上实现在ARP解析时做防火墙规则,过滤RS响应ARP请求。这是由iptables提供的

  • 修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。

  • 4.部署实例

    实验环境

  • Director节点: (eth1 192.168.10.31 vip eth1:0 192.168.10.70)

  • Real server1: (eth1 192.168.10.32 vip lo:0 192.168.10.70)

  • Real server2: (eth1 192.168.10.34 vip lo:0 192.168.10.70)

  • 配置Director 服务器


    查看当前服务器ip 地址

    ifconfig eth1

    eth1 Link encap:Ethernet HWaddr 00:0C:29:A5:E5:14

    inet addr:192.168.10.31 Bcast:192.168.10.255 Mask:255.255.255.0

    inet6 addr: fe80::20c:29ff:fea5:e514/64 Scope:Link

    UP broADCAST RUNNING MULTICAST MTU:1500 Metric:1

    RX packets:121 errors:0 dropped:0 overruns:0 frame:0

    TX packets:88 errors:0 dropped:0 overruns:0 carrier:0

    collisions:0 txqueuelen:1000

    RX bytes:12438 (12.1 KiB) TX bytes:12833 (12.5 KiB)

    配置 vip 地址

    cp ifcfg-eth1 ifcfg-eth1:0

    cat ifcfg-eth1

    DEVICE=eth1

    HWADDR=00:0C:29:A5:E5:14

    TYPE=Ethernet

    #UUID=64dc9596-9cf7-4e94-b1d1-690109a87926

    ONBOOT=yes

    NM_CONTROLLED=yes

    BOOTPROTO=static

    IPADDR=192.168.10.31

    GATEWAY=192.168.10.1

    NETMASK=255.255.255.0


    catifcfg-eth1:0


    DEVICE=eth1:0

    NAME="eth1:0"

    TYPE=Ethernet

    ONBOOT=yes

    BOOTPROTO=static

    IPADDR=192.168.10.70

    重启网卡,查看配置是否生效


    service network restart

    wKiom1j9uDODzFb3AABFqny2fCw349.jpg

    打开路由转发


    echo 1 > /proc/sys/net/ipv4/ip_forward


    安装ipvsadm


    yum install ipvsadm -y


    配置规则 ipvs 的规则 (这里设置为轮训模式)


    ipvsadm -A -t192.168.10.70:80 -s rr


    ipvsadm -a -t192.168.10.70:80 -r 192.168.10.32 -g


    ipvsadm -a -t 192.168.10.70:80 -r 192.168.10.34 -g


    配置Real server1


    cp ifcfg-lo ifcfg-lo:1


    cat ifcfg-lo:1



    DEVICE=lo:1

    IPADDR=192.168.10.70

    NETMASK=255.255.255.255

    NETWORK=127.0.0.0

    # If you're having problems with gated making 127.0.0.0/8 a martian,

    # you can change this to something else (255.255.255.255,for example)

    broADCAST=127.255.255.255

    ONBOOT=yes

    NAME=loopback


    关闭arp 转发


    echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore 临时生效


    echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce临时生效


    arp_ignore 为:1 # - 只回答目标 IP 地址是访问本网络接口(eth0)的 ARP 查询请求。

    在设置参数的时候将 arp_ignore 设置为 1,意味着当别人的 arp 请求过来的时候,如果接收的网卡设备
    上面没有这个 ip,就不做出响应,认是 0,只要这台机器上面任何一个网卡设备上面有这个 ip,就响应
    arp 请求,并发送 mac 地址。
    arp_announce (宣告) 为 2
    2 - 对查询目标使用最适当的本地地址。例如,如果在 eth0 接口上接受到了一个 VIP 的 arp 请求包。内
    核判断这个 VIP 地址是不是 eth0 接口上的 IP 一样。如果一样,则回复这个包。如果不一样,就丢弃不回
    应。

    永久生效

    vim /etc/sysctl.conf #最后添加
    net.ipv4.conf.eth0.arp_ignore = 1
    net.ipv4.conf.eth0.arp_announce = 2

    sysctl -p


    安装http 配置测试页面


    yum install httpd -y

    echo "192.168.10.32 realserver 1"> /var/www/html/index.html

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    配置Real server2


    cp ifcfg-lo ifcfg-lo:1


    cat ifcfg-lo:1



    DEVICE=lo:1

    IPADDR=192.168.10.70

    NETMASK=255.255.255.255

    NETWORK=127.0.0.0

    # If you're having problems with gated making 127.0.0.0/8 a martian,

    # you can change this to something else (255.255.255.255,for example)

    broADCAST=127.255.255.255

    ONBOOT=yes

    NAME=loopback


    关闭arp 转发


    echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore 临时生效


    echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce临时生效


    永久生效

    vim /etc/sysctl.conf #最后添加
    net.ipv4.conf.eth0.arp_ignore = 1
    net.ipv4.conf.eth0.arp_announce = 2



    安装http 配置测试页面

    yum install httpd -y

    echo "192.168.10.34 realserver 2 "> /var/www/html/index.html

    测试 real-server1

    http://192.168.10.32


    wKiom1j9ybWR6fBSAAAcxtP8wAc412.jpg



    测试 real-server2


    http://192.168.10.34


    wKiom1j9yeLA4G5qAAAaNDABeiw335.jpg


    使用vip 测试


    wKioL1j9ykDz6Ry6AAAdDms8h5E600.jpg


    wKiom1j9ylbB6xHDAAAbuqzNt8s402.jpg

    原文地址:https://www.jb51.cc/centos/377835.html

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。