Lvs+keepalived负载均衡dr模式 fangfu的技术博客

的— layout: post title: “LVS+keepalived负载均衡DR模式TUN模式” date: 2020-04-07 12:04:59 categories: LVS tags: LVS excerpt: mathjax: true —

LVS常用的三种模式:NAT、DR、TUN

NAT模式: RealServer将自己的网关指向Director 可以运行任何支持TCP/IP的操作系统。但是扩展性有限,容易产生瓶颈。

LVS的DR模式的原理

LVS的TUN模式的原理

ipvsadm命令选项

-A        添加一个虚拟服务,使用ip地址、端口号、协议来唯一定义一个虚拟服务
-E        编辑一个虚拟服务
-D        删除一个虚拟服务
-C        清空虚拟服务列表
-R        从标准输入中还原虚拟服务列表
-S        保存虚拟服务规则至标准输出,输出规则可使用-R选项还原
-L        显示虚拟服务列表
-Z        虚拟服务器列表计数器清零(清空当前连接数)
-a        添加一台真实服务器
-e        编辑一台真实服务器
-d        减少一台真实服务器
-t        使用TCP服务,该参数后需加主机与端口信息
-u        使用UDP服务,该参数后需加主机与端口信息
-s        指定lvs的调度算法
-r        设置真实服务器IP与端口
-g        设置lvs工作模式为DR直连路由
-i        设置lvs工作模式为TUN隧道
-m        设置lvs工作模式为NAT地址转换模式
-w        指定真实服务器权重
-c        连接状态,配和-L使用
-n        数字格式显示
--stats   显示统计信息
--rate    显示速率信息
--sort    对虚拟服务器和真实服务器排序输出
--set tcp tcpfin udp
          设置ipvs连接超时值,三个参数分别代表tcp会话超时时间、收到FIN包后tcp会话超时时间、udp超时时间
--timeout
          显示tcp tcpfin udp的timeout值
--start-daemon
          启动同步守护进程
--stop-daemon
          停止同步守护进程

rr(轮循) wrr(带权轮循) lc(最小连接) wlc(权重最小连接)

DR模式环境部署: 三个节点服务器 主服务器Director Server配置: yum install -y net-tools yum install -y ipvsadm

vi Dserver.sh

#! /bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip=10.0.2.90
rs1=10.0.2.62
rs2=10.0.2.63
ifconfig enp0s8:0 down
ifconfig enp0s8:0 $vip broadcast $vip netmask 255.255.255.0 up
route add -host $vip dev enp0s8:0
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 3
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

bash Dserver.sh

两台真实服务器Real Server yum install -y net-tools yum install -y nginx 配置脚本: vi Rserver.sh

#! /bin/bash
vip=10.0.2.90
ifconfig enp0s8:0 $vip broadcast $vip netmask 255.255.255.0 up
route add -host $vip enp0s8:0
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

bash Rserver.sh

nginx配置略过。改一下index.html就可以测试。

清空策略 /sbin/ipvsadm -C 删除 ifconfig enp0s8:0 del 10.0.2.90

删除先删除主服务器策略,再删除节点服务器策略 添加先添加主服务器策略,再添加节点服务器策略


keepalived

下载 wget https://www.keepalived.org/software/keepalived-2.0.17.tar.gz

安装环境依赖包 yum install openssl-devel popt-devel libnl-devel kernel-devel gcc -y

解压编译安装 tar zxvf keepalived-2.0.17.tar.gz cd keepalived-2.0.17 ./configure –prefix=/usr/local/keepalived make && make install

mkdir -p /etc/keepalived ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

修改配置文件 cat keepalived.conf

! Configuration File for keepalived

global_defs {
#   notification_email {
#     acassen@firewall.loc
#     failover@firewall.loc
#     sysadmin@firewall.loc
#   }
#   notification_email_from Alexandre.Cassen@firewall.loc
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
   router_id LVS_DEVEL
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER   # 角色类型MASTER|BACKUP
    interface enp0s8   # 网卡名称
    virtual_router_id 51   #虚拟路由id(需要与BACKUP一致)
    priority 100   # 优先级
    advert_int 1   # 每1秒检查一次
    #nopreempt     # 非抢占模式
    authentication {
        auth_type PASS   # 认证类型
        auth_pass 1111   # 认证密码
    }
    virtual_ipaddress {
        10.0.2.99
    }
}

virtual_server 10.0.2.99 80 {
    delay_loop 6   # 健康检查时间间隔
    lb_algo wrr    # 负载调度算法
    lb_kind DR     # 负载转发规则
   # persistence_timeout 100   #保持客户端的请求在指定时间内全都发到同一rs上,默认是关闭的,启用会导致轻微的负载不均衡。
   适用于长连接的情况
    protocol TCP

    real_server 10.0.2.62 80 {
        weight 1
        TCP_CHECK {
          connect_port 80
          connect_timeout 3  # 超时时间
          nb_get_retry 3   # 失败重试次数
          delay_before_retry 3   # 失败重试间隔时间
        }
    }
    real_server 10.0.2.63 80 {
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
        }
    }
}

启动服务 systemctl start keepalived

访问VIP进行测试

通常情况,在生产环境下LVS+keepalived的架构,是需要两台主服务器(一主一备,都配置ipvsadm和keepalived),和若干台真实服务器构成。

参考链接 https://www.cnblogs.com/xucoding/p/12160086.html https://blog.csdn.net/Ki8Qzvka6Gz4n450m/article/details/79119665

FFwechat FFalipay