9 Kong LVS 均衡负载

本文介绍了LVS负载均衡器的工作原理和模式,强调了其高可用性,并通过NAT、DR、TUN模式对比。同时,详细阐述了LVS虚拟IP的配置以及在Kong后端服务器健康监测中的应用,利用keepalived实现主备切换,确保系统稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图片不清晰可以去看word文档:word文档地址:https://github.com/IceEmblem/LearningDocuments/tree/master/%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99/%E5%B9%B3%E5%8F%B0%E6%97%A0%E5%85%B3/Kong%20%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0

LVS介绍

我们熟知的均衡负载(如nginx、kong等)都是1对多,如
在这里插入图片描述

如果均衡负载器A出现问题,那么将导致整个系统都不可用,LVS中加入了均衡负载器B,其作用为在均衡负载器A出现问题时均衡负载器B将接收A的数据,均衡负载到后端服务器,在负载器A正常运行时,负载器B作为备选服务器可以不运行,也可以加入到均衡负载中(前提是要给B一个独立的IP)
在这里插入图片描述

LVS负载模式

先了解下如下术语
DS:LVS均衡负载服务器
RS:后端服务器
VIP:DS暴露的虚拟IP
DIP:DS和后端服务器通信的IP
RIP:后端服务器的IP
CIP:客户端IP

1.NAT模式
NAT模式在接收和返回请求时都需要经过DS进行处理,即DS可能成为性能颈瓶
在这里插入图片描述

2.DR模式
DR模式返回时不需要经过DS,可以减轻DS的压力
在这里插入图片描述

3.TUN模式
TUN模式主要是应用在2个局域网之间,详情去百度
在这里插入图片描述

LVS虚拟IP(VIP)

VIP就是和DS的IP在同一网段内的IP,如果不在同一网段内,路由器不会转发收到的消息,DS自然无法接收到该消息,VIP可以是DS的IP或者是其他没有被占用的IP

准备工作

我们需要新增2台虚拟机,如下,129(主服务器MASTER)和130(备用服务器BACKUP)作为LVS均衡负载器,128上面运行着2个kong的服务器(就是我们前面教程示例的站点)
在这里插入图片描述

安装keepalived

我们在129和130上面安装keepalived

# sudo apt install keepalived

1.主均衡负载器
1)编辑/etc/keepalived/keepalived.conf配置文件

global_defs {
   notification_email {         //定义邮件服务的
        root@localhost          //定义收件人,这里改为本机,只是测试使用 
   }
   notification_email_from kaadmin@localhost    //定义发件人,
   smtp_server 127.0.0.1        //定义邮件服务器,一定不能使用外部地址
   smtp_connect_timeout 30      //超时时间
   router_id  LVS1              //LVS的ID
}

vrrp_instance VI_1 {            //定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
    state MASTER                //标识本keepalived为主服务器,备用服务器请使用BACKUP
    interface ens33             //使用的网卡名,不同机器网卡名可能不一致,请注意
    virtual_router_id 7         //虚拟路由的ID,主备需要一致
    priority 100                //初始优先级,主服务器比备用服务器高
    advert_int 1                //主备之间同步检查的时间间隔,默认为1秒
    authentication {            //认证机制,主备必须一致
        auth_type PASS          //认证类型
        auth_pass 1234          //密码,应该为随机的字符串
    } 
    virtual_ipaddress {         //虚拟地址,即VIP
        192.168.11.200          //VIP的地址
    }
}

# 均衡负载地址
virtual_server 192.168.11.200 80 {      //指定VIP和端口
    delay_loop 6            //健康检查时间,秒
    lb_algo rr              //负载均衡调度算法,RR即轮询
    lb_kind DR              //均衡负载模式,这里是DR
    nat_mask 255.255.255.0  //掩码
    persistence_timeout 0   //持久连接时间
    protocol TCP            //健康检测协议
    real_server 192.168.11.128 80 {     //定义后端RS地址
        weight 1                        //配置节点权重值
        TCP_CHECK {                     //RS TCP健康监测
            connect_timeout 10          //连接超时时间,秒
            nb_get_retry 3              //尝试次数
            delay_before_retry 3        //每次尝试连接的等待时间
            connect_port 80             //连接端口
        }
    }
    real_server 192.168.11.128 7000 {     //定义后端RS地址
        weight 1                        //配置节点权重值
        TCP_CHECK {                     //RS TCP健康监测
            connect_timeout 10          //连接超时时间,秒
            nb_get_retry 3              //尝试次数
            delay_before_retry 3        //每次尝试连接的等待时间
            connect_port 7000           //连接端口
        }
    }
}

2)开启ip4转发功能
编辑vim /etc/sysctl.conf文件,将如下配置设置为1(没有就添加)
net.ipv4.ip_forward=1
执行如下配置使修改生效

# sysctl -p

3)启动keepalived

# service keepalived start

4)验证
我们ping 200查看是否能ping通

# ping 192.168.11.200

2.备用服务器
备用服务器的流程和主服务器一样,只需配置以下几个配置
router_id LVS2
state BACKUP
priority 99
当主服务器挂掉时,备用服务器将接手

配置后端服务器健康监测

keepalived虽然部署了,但器需要监测后端服务器的健康状态才会转发给后端服务器,如下配置后端服务器

1.新建脚本文件vim /bin/realserve

#!/bin/bash

#虚拟IP
SNS_VIP=192.168.11.200

case "$1" in
start)
    `ifconfig lo:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255`
    `route add -host $SNS_VIP dev lo:0`
    echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
    sysctl -p > /dev/null 2>&1
    echo "RealServer Start OK"
    ;;
stop)
    `ifconfig lo:0 down`
    `route del $SNS_VIP`
    echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
    echo "RealServer Stoped"
    ;;
*)
    echo "Usage: $0 {start|stop}"
    exit 1
esac

exit 0

2.添加可执行权限

# chmod 777 /bin/realserver

3.运行脚本,配置后端服务器

# realserver start

4.验证
如下,我们访问http://192.168.11.200/netkongtest/health/getNode,就可以看到后端服务返回的结构了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值