美文网首页linux
LVS系列之四:部署LVS的DR模式+KeepAlive高可用

LVS系列之四:部署LVS的DR模式+KeepAlive高可用

作者: 小六的昵称已被使用 | 来源:发表于2019-02-22 12:41 被阅读7次

    title: LVS系列之四:部署LVS的DR模式+KeepAlive高可用
    categories: Linux
    tags:
    - LVS
    timezone: Asia/Shanghai
    date: 2019-02-04


    简介

    LVS可以实现负载均衡,但是不能够进行健康检查,比如一个rs出现故障,LVS 仍然会把请求转发给故障的rs服务器,这样就会导致请求的无效性。keepalive 软件可以进行健康检查,而且能同时实现 LVS 的高可用性,解决 LVS 单点故障的问题,其实 keepalive 就是为 LVS 而生的。

    环境

    [root@centos181001 ~]# cat /etc/centos-release
    CentOS Linux release 7.6.1810 (Core) 
    
    准备4台服务器:
    Keepalived1 + lvs1(Director1):11.11.11.61
    Keepalived2 + lvs2(Director2):11.11.11.62
    Real server1:11.11.11.111
    Real server2:11.11.11.112
    VIP: 11.11.11.60
    

    第零步:关闭系统默认防火墙并设置本地YUM(by all)

    setenforce 0
    sed -i -r "/^SELINUX=/c SELINUX=disabled" /etc/selinux/config
    which systemctl && systemctl stop firewalld
    which systemctl && systemctl disable firewalld
    which systemctl && systemctl stop iptables || service iptables stop
    which systemctl && systemctl disable iptables || chkconfig iptables off
    
    mv /etc/yum.repos.d/* /home/
    
    # 配置本地yum
    mkdir /mnt/cdrom
    mount /dev/cdrom /mnt/cdrom
    cat <<EOF >/etc/yum.repos.d/local.repo
    [local]
    name=local
    baseurl=file:///mnt/cdrom
    gpgcheck=0
    enabled=1
    EOF
    
    yum clean all       #清理本地缓存
    yum clean plugins   #清理插件缓存
    yum makecache       #构建缓存
    

    第二步:配置两个Real server节点

    跟普通单Director节点设置方法完全一样

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

    1.Real server节点1:

    yum install -y httpd
    systemctl start httpd
    echo "1111111111" > /var/www/html/index.html
    

    2.Real server节点2:

    yum install -y httpd
    systemctl start httpd
    echo "2222222222" > /var/www/html/index.html
    

    3.两个Real server节点配置脚本并执行

    # 如果你的RS的外部网络接口是eth0,那么
    # echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
    # echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
    # 其实真正要执行的是:
    # echo "1">/proc/sys/net/ipv4/conf/eth0/arp_ignore
    # echo "2">/proc/sys/net/ipv4/conf/eth0/arp_announce
    # 所以我个人建议把上面两条也加到你的脚本里去,因为万一系统里上面两条默认的值不是0,那有可能是会出问题滴。
    cat <<EOF >/usr/local/sbin/lvs_dr_rs.sh
    #!/bin/bash
    vip=11.11.11.60
    # 关闭arp响应
    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
    ip route add \$vip dev lo
    ip address add \$vip/32 dev lo
    EOF
    chmod +x /usr/local/sbin/lvs_dr_rs.sh
    /usr/local/sbin/lvs_dr_rs.sh
    

    第三步:配置两个KeepAlive节点

    1. 两个KeepAlive节点安装ipvsadm和keepalived并开启转发功能

    yum install -y ipvsadm keepalived
    echo 1 > /proc/sys/net/ipv4/ip_forward
    

    2.KeepAlive节点1

    cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
    
    cat <<EOF >/etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
    
    global_defs {
       ## 唯一标识,不同机器不能一样
       router_id LVS_node1
    }
    
    vrrp_instance VI_1 {
        ## 这里只能接受MASTER和BACKUP,而且必须为大写
        state MASTER
    
        ## 绑定虚拟IP的网卡接口
        interface ens34
    
        ## 虚拟ID,同一个ID之间互相通讯,两个节点之间必须保持一致
        virtual_router_id 51
        ## 优先级(0-254),一般设置100左右,主节点要比从节点高
        priority 100
    
        ## 发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)。
        advert_int 1
    
        ## 设置验证方式,这里采用的是明文密码认证,两个节点必须保持一致
        authentication {
            auth_type PASS
            auth_pass 1111
        }
    
        ## 虚拟IP,可以设置多个
        virtual_ipaddress {
        11.11.11.60
            # 192.168.200.16
            # 192.168.200.17
            # 192.168.200.18
        }
    }
    
    
    virtual_server 11.11.11.60 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        persistence_timeout 0
        protocol TCP
    
        real_server 11.11.11.111 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 10
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
    
        real_server 11.11.11.112 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 10
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
    }
    EOF
    

    3.KeepAlive节点2

    cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
    
    # COPY节点1配置文件到节点2服务器并修改以下几项:
    vim /etc/keepalived/keepalived.conf
    router_id LVS_node1     ----->  router_id LVS_node2
    state MASTER            ----->  state BACKUP
    priority 100            ----->  priority 90
    

    4.先主后从分别启动KeepAlive

    如果配置文件有错误的话,启动程序的时候不会提示的,所以启动程序的时候一定要注意观察日志是否正常。

    keepalived -D
    

    5.查看运行状态和日志

    通过ip a可以看到11.11.11.60只绑定在MASTER节点
    inet 11.11.11.60/32 scope global eth1
    
    ps命令查看进程,yum方式安装的有3个进程,源码安装的有2个进程
    ps -ef | grep keepalived
    
    日志默认保存在/var/log/messages文件
    tail -f -n 5 /var/log/messages
    
    通过抓包软件检测
    tcpdump -i ens34 -n 'host 11.11.11.61'
    tcpdump -i ens34 -n 'host 11.11.11.62'
    

    第四步:测试(用另外节点来进行测试)

    ## 1.4台服务器均正常开机的情况下
    
    [root@rehl6801 ~]# curl http://11.11.11.60
    2222222222
    [root@rehl6801 ~]# curl http://11.11.11.60
    1111111111
    [root@rehl6801 ~]# curl http://11.11.11.60
    2222222222
    [root@rehl6801 ~]# curl http://11.11.11.60
    1111111111
    
    ## 2.关闭KeepAlive中的任意一台
    
    [root@rehl6801 ~]# curl http://11.11.11.60
    2222222222
    [root@rehl6801 ~]# curl http://11.11.11.60
    1111111111
    [root@rehl6801 ~]# curl http://11.11.11.60
    2222222222
    [root@rehl6801 ~]# curl http://11.11.11.60
    1111111111
    
    ## 3.关闭Real server中任意一台
    
    [root@rehl6801 ~]# curl http://11.11.11.60
    2222222222
    [root@rehl6801 ~]# curl http://11.11.11.60
    2222222222
    [root@rehl6801 ~]# curl http://11.11.11.60
    2222222222
    [root@rehl6801 ~]# curl http://11.11.11.60
    2222222222
    

    结论:KeepAlive和Real server均允许一台服务器宕机,并能正常对外提供服务。

    相关文章

      网友评论

        本文标题:LVS系列之四:部署LVS的DR模式+KeepAlive高可用

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