keepalived配置LVS

NAT模式

主机名 ip(NAT) ip(LAN区段) 角色
Centos8 192.168.159.105 192.168.160.105 keepalived
Centos8-1 192.168.159.106(禁掉) 192.168.160.106 nginx1
Centos8-2 192.168.159.107(禁掉) 192.168.160.107 nginx2
192.168.160.200 vip

准备工作

配置新网卡、关闭防火墙、两台机器都安装nginx、将02和03两个节点上的nginx都监听8080端口

安装配置keepalived(Centos8上)

yum安装keepalived

yum install -y keepalived

编辑配置文件

vi /etc/keepalived/keepalived.conf ##写入如下配置

global_defs {
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface ens224
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass amingLi
    }
    virtual_ipaddress {
        192.168.160.200
    }
}

virtual_server 192.168.160.200 80 {
    delay_loop 6
    ## 算法为wrr
    lb_algo wrr
    ## LVS模式为NAT模式
    lb_kind NAT
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.160.106 80 {
        weight 3
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.160.107 80 {
        weight 1
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

打开路由转发

echo  "net.ipv4.ip_forward=1"  >>  /etc/sysctl.conf
sysctl -p

启动keepalived

systemctl start keepalived

另外两个节点上配置默认路由

route add default gw  192.168.159.105

测试(01节点上)

curl 192.168.160.200

DR模式

主机名 ip(NAT) 角色
Centos8 192.168.159.105 keepalived
Centos8-1 192.168.159.106 nginx1
Centos8-2 192.168.159.107 nginx2
192.168.160.200 vip

准备工作

关闭防火墙、三台机器都安装nginx、将Centos8-1和Centos8-2的nginx都监听80端口 如果做过上面的NAT实验,还需要恢复01和02上的第一块网卡,删除掉刚才配置的默认路由,01节点上的ip转发要关掉

安装配置keepalived(Centos8上)

yum安装keepalived

yum install -y keepalived

编辑配置文件

vi /etc/keepalived/keepalived.conf ##写入如下配置

global_defs {
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass amingLi
    }
    virtual_ipaddress {
        192.168.160.200
    }
}

virtual_server 192.168.160.200 80 {
    delay_loop 6
    ## 算法为wrr
    lb_algo wrr
    ## LVS模式为DR模式
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.159.106 80 {
        weight 3
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.159.107 80 {
        weight 1
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

启动服务

systemctl start keepalived

另外两个节点上编辑脚本

vi /usr/local/sbin/lvs_rs.sh  ##内容如下
#/bin/bash
vip=192.168.222.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
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

执行脚本

sh  /usr/local/sbin/lvs_rs.sh

测试

浏览器访问vip 或者 再开启一台虚拟机访问