欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > LVS负载均衡群集和keepalive

LVS负载均衡群集和keepalive

2025/5/16 2:56:18 来源:https://blog.csdn.net/qq_54324852/article/details/147951739  浏览:    关键词:LVS负载均衡群集和keepalive

目录

一. 集群概述

1.1 集群的定义

1.2 集群的分类

1.  高可用集群 HA

2. 高性能运输群集 HPC

3.负载均衡群集 LB

4.  分布式存储集群

二. LVS概述

2.1 LVS的定义

2.2 LVS的工作原理

2.3 LVS 的三种工作模式

2.4 LVS 三种工作模式的对比

2.5 LVS 调度算法

1. 静态方法

2. 动态方法

三. LVS集群创建与管理

3.1 LVS集群类型中的术语

3.2 ipvsadm工具

3.2.1 ipvsadm工具选项

3.2.2 常见操作

1. 列出规则

2. 建立集群

3. 添加后端服务器 

4. 删除后端服务器 

5. 删除集群

四. DR模式部署

4.1 配置负载调度器

4.2 配置节点服务器

五. keepalive概述

5.1 vrrp技术

5.1.2 vrrp相关术语

5.2 keepalive的定义

5.3 keepalive的功能

5.4 keepalive架构

六. 安装keepalive

6.1 centos7-yum安装

6.2 Ubuntu-apt安装

6.3 centos7-编译安装

6.4 Ubuntu-编译安装

七. keepalived的相关文件

7.1 配置组成

7.1.1 全局配置

7.1.2 配置虚拟路由器


一. 集群概述

1.1 集群的定义

集群(Cluster) 是指将多台计算机或服务器通过某种方式连接在一起,作为一个整体来提供服务或执行任务的技术架构。

1.2 集群的分类

1. 高可用集群 HA

目标:确保服务的高可用性,减少停机时间。

实现方式:通过冗余节点和故障转移机制,当主节点故障时,备用节点立即接管服务。

例如:Keepalived、heartbeat

2. 高性能运输群集 HPC

目标:通过并行计算解决复杂的科学计算或数据处理任务

实现方式:将任务分解为多个子任务,分配到多个节点并行执行。

3.负载均衡群集 LB

目标:将请求或任务均匀分配到多个节点,提高系统性能和资源利用率。

实现方式:通过负载均衡器(如LVS、Nginx、HAProxy)将请求分发到后端服务器。

例如:LVS、Nginx

4.  分布式存储集群

目标:提供高可用、可扩展的存储服务。

实现方式:将数据分布到多个节点存储,并通过冗余机制确保数据安全。


二. LVS概述

2.1 LVS的定义

LVS(Linux Virtual Server) 是一种基于 Linux 内核的高性能、高可用的负载均衡技术,用于将客户端请求分发到多个后端服务器节点,以提高系统的处理能力和可用性。

2.2 LVS的工作原理

  1. 客户端发起请求

    • 客户端通过访问 LVS 的虚拟 IP(VIP)发起请求。
  2. 负载均衡器接收请求

    • 负载均衡器接收客户端的请求,并根据预定义的调度算法选择一个后端服务器节点。
  3. 请求分发

    • 负载均衡器将请求转发到选定的后端服务器节点。
    • 转发方式取决于 LVS 的工作模式(NAT、DR 或 TUN)。
  4. 后端服务器处理请求

    • 后端服务器节点处理请求并生成响应。
  5. 响应返回客户端

    • 后端服务器将响应返回给客户端。
    • 返回方式取决于 LVS 的工作模式(NAT、DR 或 TUN)。

2.3 LVS 的三种工作模式

1. NAT 模式

  • 工作原理

    1. 客户端发送请求到 LVS 的虚拟 IP(VIP)。

    2. 负载均衡器将请求的源 IP 地址修改为自身的 IP 地址,并将请求转发到后端服务器。

    3. 后端服务器处理请求,并将响应返回给负载均衡器。

    4. 负载均衡器将响应的目标 IP 地址修改为客户端的 IP 地址,并将响应返回给客户端

2. DR 模式

  • 工作原理

    1. 客户端发送请求到 LVS 的虚拟 IP(VIP)。

    2. 负载均衡器将请求直接转发到后端服务器,不修改 IP 地址。

    3. 后端服务器处理请求,并直接将响应返回给客户端。

 3. TUN 模式

  • 工作原理
    1. 客户端发送请求到 LVS 的虚拟 IP(VIP)。
    2. 负载均衡器通过 IP 隧道将请求封装并转发到后端服务器。
    3. 后端服务器解封装请求,处理请求,并直接将响应返回给客户端。

2.4 LVS 三种工作模式的对比

NATTUNDR
优点端口转换WAN性能最好
缺点性能瓶颈服务器支持隧道模式不支持跨网段
真实服务器要求anyTunnelingNon-arp device
支持网络private(私网)LAN/WAN(私网/公网)LAN(私网)
真实服务器数量low (10~20)High (100)High (100)
真实服务器网关lvs内网地址Own router(网工定义)Own router(网工定义)

2.5 LVS 调度算法

分为两种:

静态方法: 不管后端真实服务器的 状态,根据自身 算法进行调度

动态方法: 会根据后端服务器的状态来进行调度

1. 静态方法

轮询(RR):将请求依次分发到每个后端服务器节点。

加权轮询(WRR):根据后端服务器的权重分发请求,权重越高,分配的请求越多

源地址哈希(SH):根据客户端的源 IP 地址哈希值分发请求,确保同一客户端的请求被分发到同一台后端服务器。

目标地址哈希(DH):通过让后端服务器直接响应客户端请求来优化性能和简化配置。

2. 动态方法

最小连接数(LC):将请求分发到当前连接数最少的后端服务器节点。

加权最小连接数(WLC):根据后端服务器的权重和连接数分发请求。

预期延迟最短(SED):选择预期延迟最短的后端服务器来处理请求。

空闲(NQ):优先选择 空闲 的后端服务器,如果没有空闲服务器,则退化为 SED 算法。

基于地址的最小连接数(LBLC):基于 请求的源地址 和 后端服务器的活动连接数 进行分发,确保同一客户端的请求被分发到同一台后端服务器。


三. LVS集群创建与管理

3.1 LVS集群类型中的术语

  1. VS(代理服务器):Virtual Server,Director Server(DS), Dispatcher(调度器),Load Balancer(lvs服务器) 代理服务器

  2. RS(真实服务器):Real Server(lvs), upstream server(nginx), backend server(haproxy)(真实服务器)

  3. CIP:Client IP(客户机IP) 客户机的ip

  4. VIP:Virtual serve IP VS外网的IP 代理服务器的 外网ip

  5. DIP:Director IP VS内网的IP 代理服务器的 内网ip

  6. RIP:Real server IP 真实服务器的 ip地址

3.2 ipvsadm工具

LVS集群通过ipvsadm工具创建管理

3.2.1 ipvsadm工具选项

-A: 添加虚拟服务器
-D: 删除整个虚拟服务器
-s: 指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc  默认的 )
-a: 添加真实服务器(节点服务器)
-d: 删除某一个节点
-t: 指定VIP地址及TCP端口
-r: 指定RIP地址及TCP端口
-m: 表示使用NAT群集模式
-g: 表示使用DR模式
-i: 表示使用TUN模式
-w: 设置权重(权重为0时表示暂停节点)
-p 60: 表示保持长连接60秒
-l: 列表查看 LVS虚拟服务器(默认为查看所有)
-n: 以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln

3.2.2 常见操作

1. 列出规则
ipvsadm -L
2. 建立集群
格式:
ipvsadm -A -t <虚拟IP>:<端口> -s <调度算法>例子:
ipvsadm -A -t  192.168.91.188:80 -s rr
3. 添加后端服务器 
格式:
ipvsadm -a -t <虚拟IP>:<端口> -r <后端服务器IP>:<端口> -g -w <权重>例子:
ipvsadm -a -t 192.168.91.188:80 -r  192.168.91.100:80  -g
4. 删除后端服务器 
格式:
ipvsadm -d -t <虚拟IP>:<端口> -r <后端服务器IP>:<端口>例子:
ipvsadm -d -t 192.168.91.188:80 -r 192.168.91.100:80
5. 删除集群
格式:
ipvsadm -D -t <虚拟IP>:<端口>例子:
ipvsadm -D -t 192.168.91.188:80

四. DR模式部署

4.1 配置负载调度器

ubuntu 调度器配置1.更新系统并安装 ipvsadm
apt update
apt install ipvsadm -y2.添加虚拟IP(VIP)
ifconfig ens33:0 192.168.52.188/243.配置LVS规则
添加虚拟服务器(VIP)并设置调度算法为轮询(rr):
ipvsadm -A -t 192.168.52.188:80 -s rr
添加真实服务器(RIP):
ipvsadm -a -t 192.168.52.188:80 -r 192.168.52.100:80 -g
ipvsadm -a -t 192.168.52.188:80 -r 192.168.52.101:80 -g4.修改内核参数:
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0使配置生效:
sudo sysctl -p

4.2 配置节点服务器

centos7-13真实服务器1配置1.安装Nginx:
sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl start nginx2.设置测试页面
echo "7-13" > /usr/share/nginx/html/index.html3.修改内核参数
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 24.添加虚拟IP(VIP)
ifconfig ens33:0 192.168.52.188/24
centos7-14 真实服务器2配置yum install epel-release -y
yum install nginx -y
systemctl start nginx"7-14" > /usr/share/nginx/html/index.htmlvim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2sysctl -pifconfig ens33:0 192.168.52.188/24

测试
在集群外的新机器上测试:
curl 192.168.52.188
多次执行 curl 命令,观察返回的内容是否在 7-13 和 7-14 之间轮换。

五. keepalive概述

5.1 vrrp技术

VRRP 是一种用于实现 路由器高可用性的网络协议。它通过将多个路由器组成一个虚拟路由器组,并分配一个虚拟 IP 地址(VIP),确保在主路由器故障时,备用路由器能够接管流量,从而实现网络服务的连续性。

5.1.2 vrrp相关术语

虚拟路由器(Virtual Router):由多个物理路由器组成的一个逻辑路由器。

虚拟 IP 地址(VIP):虚拟路由器对外提供的 IP 地址,客户端通过该 IP 地址访问网络服务。

主路由器(Master Router):在虚拟路由器组中,负责转发流量的路由器,持有虚拟 IP 地址。

备用路由器(Backup Router):在主路由器故障时,接管流量并成为新的主路由器,平时处于监听状态,不转发流量。

优先级(Priority):用于选举主路由器的参数,优先级越高,越有可能成为主路由器。

5.2 keepalive的定义

Keepalived 是一个用于实现 高可用性负载均衡的开源软件。它基于 VRRP(Virtual Router Redundancy Protocol) 协议,通过虚拟 IP(VIP)的切换来确保服务的连续性,同时可以与 LVS(Linux Virtual Server) 集成,提供负载均衡功能。

5.3 keepalive的功能

  1. 基于vrrp协议完成地址流动

  2. 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)

  3. 为ipvs集群的各RS做健康状态检测

  4. 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

5.4 keepalive架构

  1. vrrp stack:VIP消息通告 虚拟ip

  2. checkers:监测real server(简单来说 就是监控后端真实服务器的服务)是否存活

  3. system call:实现 vrrp 协议状态转换时调用脚本的功能

  4. SMTP:邮件组件(报警邮件)

  5. IPVS wrapper:生成IPVS规则(直接生成ipvsadm)

  6. Netlink Reflector:监控网络接口状态变化

  7. WatchDog:监控进程(整个架构是否有问题)

六. 安装keepalive

6.1 centos7-yum安装

yum  install   keepalived  -yvim /etc/keepalived/keepalived.conf#修改 interface eth0 为
interface ens33 systemctl start keepalived.servicesystemctl status keepalived.service

6.2 Ubuntu-apt安装

apt updateapt install keepalived -ycp /usr/share/doc/keepalived/samples/keepalived.conf.sample  /etc/keepalived/keepalived.confvim /etc/keepalived/keepalived.conf#修改interface eth0为
interface ens33systemctl start keepalivedsystemctl status keepalived

6.3 centos7-编译安装

yum install gcc curl openssl-devel libnl3-devel net-snmp-devel  -y
# 安装依赖包环境https://keepalived.org/download.html
# 官网下载安装包mkdir -p /data/cd /data/wget https://keepalived.org/software/keepalived-2.2.2.tar.gztar  xf   keepalived-2.2.2.tar.gzcd   keepalived-2.2.2/./configure --prefix=/usr/local/keepalivedmake   &&  make  install#编译好后起不来没有配置文件/etc/keepalived/keepalived.confmkdir    /etc/keepalivedcp /usr/local/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.confsed  -i   's/eth0/ens33/' /etc/keepalived/keepalived.confsystemctl start keepalivedsystemctl status keepalived

6.4 Ubuntu-编译安装

ubuntu尽可能安装比较新的keepalive安装包

cd /optapt update && apt -y install make gcc ipvsadm build-essential pkg-config automake autoconf libipset-dev libnl-3-dev libnl-genl-3-dev libssl-dev libxtables-dev libip4tc-dev libip6tc-dev libmagic-dev libsnmp-dev libglib2.0-dev libpcre2-dev libnftnl-dev libmnl-dev libsystemd-devhttps://keepalived.org/download.html
# 官网下载安装包wget https://keepalived.org/software/keepalived-2.3.3.tar.gztar  xf   keepalived-2.3.3.tar.gzcd   keepalived-2.3.3/./configure --prefix=/usr/local/keepalivedmake  -j2 &&  make  installmkdir    /etc/keepalivedcp /usr/local/keepalived/etc/keepalived/keepalived.conf.sample  /etc/keepalived/keepalived.confvim /etc/keepalived/keepalived.conf#interface ent0改为
interface ens33systemctl start keepalivedsystemctl status keepalived

七. keepalived的相关文件

  • 软件包名:keepalived

  • 主程序文件:/usr/sbin/keepalived

  • 主配置文件:/etc/keepalived/keepalived.conf

7.1 配置组成

7.1.1 全局配置

global_defs {notification_email {root@localhost#keepalived 发生故障切换时邮件发送的目标邮箱,可以按行区分写多个root@localhost360601212@qq.com 
}notification_email_from keepalived@localhost  #发邮件的地址smtp_server 127.0.0.1     
#邮件服务器地址smtp_connect_timeout 30   
#邮件服务器连接timeoutrouter_id   LVS01
#每个keepalived主机唯一标识,建议使用当前主机名,但多节点重名不影响vrrp_skip_check_adv_addr  
#对所有通告报文都检查,会比较消耗性能,启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查vrrp_strict 
#严格遵守VRRP协议,启用此项后以下状况将无法启动服务:1.无VIP地址 2.配置了单播邻居 3.在VRRP版本2中有IPv6地址,开启动此项并且没有配置vrrp_iptables时会自动开启iptables防火墙规则,默认导致VIP无法访问,建议不加此项配置。vrrp_garp_interval 0 
#gratuitous ARP messages 免费ARP报文发送延迟,0表示不延迟vrrp_gna_interval 0 
#unsolicited NA messages (不请自来)消息发送延迟vrrp_mcast_group4 225.0.0.18
#指定组播IP地址范围:224.0.0.0到239.255.255.255,默认值:224.0.0.18 vrrp_iptables        
#此项和vrrp_strict同时开启时,则不会添加防火墙规则,如果无配置vrrp_strict项,则无需启用此项配置
}

7.1.2 配置虚拟路由器

vrrp_instance <STRING> {
#<String>为vrrp的实例名,一般为业务名称配置参数......}#配置参数:
state MASTER|BACKUP
#当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUPinterface IFACE_NAME 
#绑定为当前虚拟路由器使用的物理接口,如:eth0,bond0,br0,可以和VIP不在一个网卡virtual_router_id VRID 
#每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一priority 100 
#当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高,每个keepalived主机节点此值不同advert_int 1
#vrrp通告的时间间隔,默认1sauthentication { 
#认证机制auth_type AH|PASS   
#AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)auth_pass <PASSWORD> 
#预共享密钥,仅前8位有效,同一个虚拟路由器的多个keepalived节点必须一样
}include    /etc/keealived/conf.d/*.conf
virtual_ipaddress { 
#虚拟IP,生产环境可能指定上百个IP地址<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
192.168.200.100 
#指定VIP,不指定网卡,默认为,注意:不指定/prefix,默认为/32192.168.200.101/24 dev eth1   
#指定VIP的网卡,建议和interface指令指定的岗卡不在一个网卡192.168.200.102/24 dev eth2 label eth2:1 
#指定VIP的网卡label   ifconfig eth2:1   192.168.200.102/24
}track_interface { 
#配置监控网络接口,一旦出现故障,则转为FAULT状态实现地址转移
eth0
eth1…
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词