(实验)LVS-DR

作者: Gswu | 来源:发表于2019-03-19 18:03 被阅读2次

    1、实验环境

    (在实际虚拟机中eth0 为enp0s3)
    三台机器:

    Director节点: (eth0 192.168.56.103 vip eth0:0 192.168.56.111)
    Real server1: (eth0 192.168.56.201 vip lo:0 192.168.56.111)
    Real server2: (eth0 192.168.56.202 vip lo:0 192.168.56.111)

    2、安装

    所有机器上安装net-tools(ifconfig、route等命令才好用)

    # yum install -y net-tools
    

    两个 real server 上都安装 nginx 服务

    # yum install -y nginx
    

    Director 上安装 ipvsadm

    # yum install -y ipvsadm
    

    3、Director 上配置脚本

    # vim /usr/local/sbin/lvs_dr.sh
    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发,0为不转发
    ipv=/sbin/ipvsadm
    vip=192.168.56.111
    rs1=192.168.56.201
    rs2=192.168.56.202
    ifconfig eth0:0 down
    ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up
    route add -host $vip dev eth0:0
    $ipv -C
    $ipv -A -t $vip:80 -s wrr #定义一个集群服务,策略为wrr
    $ipv -a -t $vip:80 -r $rs1:80 -g -w 3 #
    $ipv -a -t $vip:80 -r $rs2:80 -g -w 1
    

    -A:规定发往本机哪个IP:PORT的报文是需要被调度的
    -a:为某个调度规则添加Real Server
    -t:tcp协议请求
    -s:定义调度规则
    -m:表示采用lvs-nat工作模式,默认为lvs-dr工作模式
    -w:调度规则是wrr(带权重的轮询)用-w 定义Real Server的权重

    执行脚本:

    # bash /usr/local/sbin/lvs_dr.sh
    

    4、在2台 rs 上配置脚本:

    # vim /usr/local/sbin/lvs_dr_rs.sh
    #! /bin/bash
    vip=192.168.56.111
    ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
    route add -host $vip lo:0  #貌似这个命令有问题
    #ip route add $vip/32 dev lo:0 #加路由也可使用这条命令
    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:

    定义对目标地址为本地IP的ARP询问不同的应答模式0
    0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求
    1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求
    2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
    3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
    4-7 - 保留未使用
    8 -不回应所有(本地地址)的arp查询

    arp_announce:

    对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制: 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口
    0 - (默认) 在任意网络接口(eth0,eth1,lo)上的任何本地地址
    1 -尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
    2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
    rs 上分别执行脚本:

    bash /usr/local/sbin/lvs_dr_rs.sh
    
    # ipvsadm -L -n #查看ipvs定义的规则列表
    # cat /proc/sys/net/ipv4/ip_forward #查看Linux是否开启路由转发功能
     0
    # echo 1 > /proc/sys/net/ipv4/ip_forward #启动Linux的路由转发功能
    # cat /proc/sys/net/ipv4/ip_forward 
    另外,# sysctl -w net.ipv4.ip_forward = 1   也是开启转发的命令
    ip route show 查看路由添加情况
    

    5、实验测试
    测试方式同上,浏览器访问 http://192.168.56.111

    注意:在 DR 模式下,2台 rs 节点的 gateway 不需要设置成 dir 节点的 IP 。

    相关文章

      网友评论

        本文标题:(实验)LVS-DR

        本文链接:https://www.haomeiwen.com/subject/ahmnmqtx.html