LVS

《LVS + Keepalived + DR》

  • LVS主机:192.168.2.100

  • RS主机 :192.168.2.104,192.168.2.105

  • VIP:192.168.2.110

LVS主机

1、安装ipvsadm

$ yum -y install ipvsadm

2、安装keepalived

$ yum -y install keepalived

3、配置keepalived

编辑/etc/keepalived/keepalived.conf文件,内容如下

global_defs {
    notification_email {
        acassen@firewall.loc
        failover@firewall.loc
        sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER      #备用服务器上为 BACKUP
    interface eth0    # 网卡
    virtual_router_id 110    # 注意不要和其他keepalived集群冲突
    priority 100      #优先级,数值越大优先级越高;备用服务器上为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.110
    }
}

virtual_server 192.168.2.110 80 {
    delay_loop 6            #(每隔6秒查询realserver状态,是否存活)
    lb_algo wlc                 #(加权轮询算法)
    lb_kind DR                #(DR模式)
    persistence_timeout 0    #(同一IP的连接多少秒内被分配到同一台realserver,0表示不连接)
    protocol TCP             #(用TCP协议检查realserver状态)

    real_server 192.168.2.104 80 {
        weight 100            #(权重)
        TCP_CHECK {
            connect_timeout 10     #(10秒无响应超时)
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.2.105 80 {
         weight 100
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 80
         }
    }
}

virtual_server 192.168.2.110 81 {
    delay_loop 6
    lb_algo wlc
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.2.104 81 {
        weight 100
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 81
        }
    }
    real_server 192.168.2.105 81 {
         weight 100
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 81
         }
    }
}

4、启动keepalived

$ systemctl enable keepalived && systemctl start keepalived

RS主机

编辑/etc/sysconfig/network-scripts/ifcfg-lo,内容更改为如下,把lo网卡的IP配置为VIP

DEVICE=lo
IPADDR=192.168.2.110
NETMASK=255.255.255.255
BROADCAST=192.168.2.110
ONBOOT=yes
NAME=loopback

然后添加路由(实践中发现该步骤不操作也没问题)

$ route add -host 192.168.2.110 dev lo

修改/etc/sysctl.conf,在文件尾部添加如下内容,然后执行命令

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2

然后执行以下命令生效

$ sysctl -p

Reference

Last updated