LVS+Keepalived

环境
  • vip:192.168.37.10

  • 前端lvs服务器
    test11:192.168.37.11 lb01
    test11:192.168.37.12 lb02

  • 后端web服务器
    test13:192.168.37.13 web01
    test14:192.168.37.14 web02

  • 系统版本:centos7.6

安装

安装keepalived:yum install -y keepalived。要详细了解keepalived可以参考我的另一往篇文章:keepalived

编辑keepalived配置文件
  • lb01:
global_defs {
    router_id test11
}

vrrp_instance VI_1 {
    state MASTER
    interface enp0s3
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.37.10/24
    }

}

virtual_server 192.168.37.10 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.37.13 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.37.14 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}
  • lb02:
global_defs {
    router_id test12
}

vrrp_instance VI_1 {
    state BACKUP
    interface enp0s3
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.37.10/24
    }

}

virtual_server 192.168.37.10 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.37.13 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.37.14 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}
  • 启动lb01,lb02的keepalived:systemctl start keepalived

  • web端设置如下脚本:

[root@test13 ~]# cat lvs-web.sh
#!/bin/bash

cat >>/etc/sysctl.conf<<EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF

sysctl -p

[root@test13 ~]# sh lvs-web.sh
keepalive健康检查功能
  • 查看lb01的状态
[root@test11 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.37.10:80 wrr persistent 50
  -> 192.168.37.13:80             Route   1      0          0  
  -> 192.168.37.14:80             Route   1      0          0
  • 模拟把web02关掉,查看lb01的状态,web02被踢除
[root@test11 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.37.10:80 wrr persistent 50
  -> 192.168.37.13:80             Route   1      0          0 
  • 再把web02启动,再看lb01的状态,web02恢复
[root@test11 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.37.10:80 wrr persistent 50
  -> 192.168.37.13:80             Route   1      0          0  
  -> 192.168.37.14:80             Route   1      0          0
文档更新时间: 2020-11-10 10:29   作者:子木