LVS DR模式搭建与keepalived+LVS

时间:2023-02-03 21:53:56

LVS DR模式搭建

  • 在生产环境中,使用较多的是DR模式,网站服务器在10台之内的可以使用NAT模式,好处在于节省公网IP资源。DR模式可以搭建内部的LVS,全部使用内网,只使用一个公网IP,做一个端口映射即可(公网的IP 的80端口映射到内网vip上的80端口)
  • 准备工作
    1 . 需要3台机器,都需要有“公网”IP,但在这种模式下又多了一个vip.
    例如:
    分发器,也叫调度器(简称dir) 244.136
    服务器rs1 :244.135
    服务器rs2: 244.137
    vip :244.200
    2 .将之前修改的2台rs服务器的网关修改成原来的状态,并重启网络服务。如果没有修改过,请忽略这一步。

3 .在分发器(dir)上编辑一个shell脚本

vim  /usr/local/sbin/lvs_dr.sh  //写入一下内容
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward   //打开端口转发
ipv=/usr/sbin/ipvsadm
vip=192.168.244.200
rs1=192.168.244.135
rs2=192.168.244.137
#注意这里的网卡名字
ifdown ens33
ifup ens33 
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:2 //添加网关
$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

4 . 2台rs上也编写脚本

vim /usr/local/sbin/lvs_rs.sh //写入以下内容
#/bin/bash
vip=192.168.244.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifdown lo 
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
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

5 . 测试
在浏览器中访问192.168.244.200,可以看到显示的内容有变化,说明配置成功

但是不能再在dir用curl命令测试了,因为vip在三台机器上都有设置,直接curl去访问VIP的话不可能成功,就只能使用浏览器来测试了。


keepalived lvs ##

  • lvs架构中,不管是NAT模式还是DR模式,当后端的rs宕机后,调度器依然会把请求转发到宕掉的rs上,这样肯定是不是想要的结果。其实,keepalived加入lvs就可以解决该问题,它不仅有高可用的功能,还有负载均衡的功能。在dir上安装keepalived后,就不用再安装ipvsadm,也不用去编写Lvs相关的脚本了。
  • 完整的keepalived+LVS架构需要有2台调度器分别安装keepalived来实现高可用,提供调度服务的只需要1台,另外一台作为备用。
  • 实验只安装一台keepalived
    1 . 三台机器
    dir(安装keepalived)244.136
    rs1 244.135
    rs2 244.137
    vip 200
    2 . 编辑配置文件/etc/keepalived/keepalived.conf /写入以下内容
vrrp_instance VI_1 {
    #备用服务器上为 BACKUP
    state MASTER
    #绑定vip的网卡为ens33
    interface ens33
    virtual_router_id 51
    #备用服务器上为90
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux
    }
    virtual_ipaddress {
        192.168.244.200
    }
}
virtual_server 192.168.244.200 80 {
    #(每隔10秒查询realserver状态)
    delay_loop 10
    #(lvs 算法)
    lb_algo wlc
    #(DR模式)
    lb_kind DR
    #(同一IP的连接60秒内被分配到同一台realserver)
    persistence_timeout 0
    #(用TCP协议检查realserver状态)
    protocol TCP
    real_server 192.168.244.135 80 {
        #(权重)
        weight 100
        TCP_CHECK {
        #(10秒无响应超时)
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.244.137 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

3 启动keepalived

systemctl start keepalived

4 . 查看链接数

ipvsadm -ln 

如果关闭了rs2 ,那么是没有244.137的,但是当打开rs2后,那么就又可以看到链接数的变化,那就说明配置成功。