一文带你快速了解——LVS负载均衡集群

前言:

       Internet的飞速发展给网络带宽和服务器带来巨大的挑战。从网络技术的发展来看,网络带宽的增长远高于处理器速度和内存访问速度的增长。对用硬件和软件方法实现高可伸缩、高可用网络服务的需求不断增长。针对高可伸缩、高可用网络服务的需求,给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器——LVS(Linux Virtual Server)。

一、LVS简介

1.1、什么是LVS

LVS(Linux Virtual Server),也就是Linux虚拟服务器。是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块。LVS 是一个实现负载均衡集群的开源软件项目,LVS 架构从逻辑上可分为调度层、Server 集群层和共享存储。

通过LVS 达到的负载均衡技术和Linux操作系统可以实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。

LVS官网 - http://www.linuxvirtualserver...
Keepalived - http://www.keepalived.org/

1.2、LVS的优点

LVS(Linux Virtual Server)的优点包括:

1、应用范围广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等。

2、性能高:纯 4 层负载均衡,运行在内核态,性能是软件负载均衡中最高的。

3、成本低:负载均衡有硬件和软件的,硬件相对应的设备需求会高些,成本相对高。而LVS是软件的,只需要一台服务器和就能免费部署使用,性价比极高。

4、支持多种算法:支持多种论调算法,可根据业务场景灵活调配进行使用。

5、支持多种工作模型:可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。

1.3、LVS相关术语

  • LB (Load Balancer 负载均衡)
  • HA (High Available 高可用)
  • Failover (失败切换)
  • Cluster (集群)
  • LVS (Linux Virtual Server Linux 虚拟服务器)
  • DS (Director Server),指的是前端负载均衡器节点
  • RS (Real Server),后端真实的工作服务器
  • VIP (Virtual IP),虚拟的IP地址,向外部直接面向用户请求,作为用户请求的目标的 IP 地址
  • DIP (Director IP),主要用于和内部主机通讯的 IP 地址
  • RIP (Real Server IP),后端服务器的 IP 地址
  • CIP (Client IP),访问客户端的 IP 地址

1.4、访问流程

CIP <--> VIP == DIP <--> RIP

1.5、LVS 的组成及作用

LVS 由两部分程序组成,包括 ipvs 和 ipvsadm。

1、ipvs(ip virtual server):LVS 是基于内核态的 netfilter 框架实现的 IPVS 功能,工作在内核态。用户配置 VIP 等相关信息并传递到 IPVS 就需要用到 ipvsadm 工具。

2、ipvsadm :是 LVS 用户态的配套工具,可以实现 VIP 和 RS 的增删改查功能,是基于 netlink 或 raw socket 方式与内核 LVS 进行通信的,如果 LVS 类比于 netfilter,那 ipvsadm 就是类似 iptables 工具的地位。

1.6、负载均衡集群

负载均衡群集:Load Balance Cluster,以提高应用系统的响应能力,尽可能处理更多的访问请求、减少延迟为目标,从而获得高并发、高负载的整体性能。

二、四种工作模式的解析

2.1、NAT模式(Network Address Translation

lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT

  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,作为客户机的访问入口,也是各节点回应客户机的访问出口,服务器节点使用私有 IP 地址,与负载调度器位于同一个物理网络,安全性要优于其他方式。
  • RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
  • 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
  • 支持端口映射,可修改请求报文的目标PORT
  • VS必须是Linux系统,RS可以是任意OS系统 

  • 客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,IPVS存在后访问请求在通PREROUTING后被ipvs结果并作nat转发
  • 因为ipvs的作用点是在PREROUTINGINPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工作。所以在做lvs时要把iptables的火墙策略全清理掉。

2.1、DR模式(Direct Routing

lvs-dr: 操纵封装新的MAC地址

  • 采用半开放式的网络结构,与 TUN 模式的结构类似,但各节点并不是分散在各个地方,而是与调度器位于同一个物理网络,负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道。它是最常用的工作模式,因为它的功能性强大。
  • 直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MACDIP所在的接口的MAC,目标MAC是某挑选出的RSRIP所在接口的MAC地址
  • IP/PORT,以及目标IP/PORT均保持不变

  • 客户端发送数据帧给vs调度主机帧中内容为客户端IP+客户端的MAC+VIP+VIPMAC
  • VS调度主机接收到数据帧后把帧中的VIPMAC该为RS1MAC,此时帧中的数据为客户端IP+客户端MAC+VIP+RS1MAC
  • RS1得到2中的数据包做出响应回传数据包,数据包中的内容为VIP+RS1MAC+客户端IP+客户端IPMAC

2.3、TUN模式(IP Tunnel)

lvs-tun: 在原请求IP报文之外新加一个IP首部

  • 采用开放式的网络结构,负载调度器作为客户机的访问入口,各节点通过各自的 Internet 连接直接回应给客户机,而不经过负载调度器,服务器节点分散在互联网中的不同位置,有独立的公网 IP 地址,通过专用 IP 隧道与负载调度器相互通信。
  • 转发方式:不修改请求报文的IP首部(源IPCIP,目标IPVIP),而在原IP报文之外再封装一个IP首部 IPDIP,目标IPRIP),将报文发往挑选出的目标RS
  • RS直接响应给客户端(源IPVIP,目标IPCIP

  • 1.客户端发送请求数据包,包内有源IP+vip+dport
  • 到达vs调度器后对客户端发送过来的数据包重新封装添加IP报文头,新添加的IP报文头中包含 TUNSRCIP(DIP)+TUNDESTIP(RSIP1)并发送到RS1
  • RS收到VS调度器发送过来的数据包做出响应,生成的响应报文中包含SRCIP(VIP)+DSTIPCIP) +port,响应数据包通过网络直接回传给client

2.4、fullnet模式

lvs-fullnat: 

  • 通过同时修改请求报文的源 IP 地址和目标 IP 地址进行转发
    CIP --> DIP
    VIP --> RIP
  • VIP是公网地址, RIP DIP 是私网地址,且通常不在同一 IP 网络;因此, RIP 的网关一般不会指向 DIP
  • RS收到的请求报文源地址是 DIP ,因此,只需响应给 DIP ;但 Director 还要将其发往 Client
  • 请求和响应报文都经由Director
  • 支持端口映射

2.5、区别

模式与特点NAT 模式IPIP 模式DR 模式
对服务器的要求任何操作系统必须支持 IP 隧道,目前只有 Linux 系统支持服务器节点支持虚拟网卡设备,能够禁用设备的 ARP 响应
网络要求拥有私有 IP 地址的局域网络拥有合法 IP 地址的局域,网或广域网拥有合法 IP 地址的局域,服务器节点与负载均衡器必须在同一个网段
通常支持节点数量较少,10 到 20 个,根据负载均衡器的处理能力而定较高,可以支持 100 个服务节点较高,可以支持 100 个服务节点
RS 服务器网网关
指向到调度器 DIP
指向到路由
指向到路由
调度器和服务器网络
可跨网络
可跨网络
不可跨网络
服务节点安全性较好,采用内部 IP,服务节点隐蔽较差,采用公用 IP 地址,节点安全暴露较差,采用公用 IP 地址,节点安全暴露
特点地址转换封装 IP修改 MAC 地址
配置复杂度简单复杂复杂

三、LVS负载均衡调度算法

3.1、lvs静态调度算法

  • 静态方法:仅根据算法本身进行调度,不考虑 RS 的负载情况

1、RR:roundrobin(轮询)

RS分别被调度,当RS配置有差别时不推荐

2、WRR:Weighted RR(加权轮询)

根据RS的配置进行加权调度,性能差的RS被调度的次数少

3、SH:Source Hashing(源地址散列调度算法 
实现 session sticky ,源 IP 地址 hash ;将来自于同一个 IP 地址的请求始终发往第一次挑中的RS ,从而实现会话绑定
4、DH :Destination Hashing( 目标地址散列调度算法 
目标地址哈希,第一次轮询调度至 RS ,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS ,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商

3.2、lvs动态调度算法

  • 动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度
1 LC:least connections(最少链接)
适用于长连接应用Overhead(负载值)=activeconns (活动链接数) x 256+inactiveconns (非活动链接数)
2、WLC:Weighted LC(权重最少链接)
默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight
3、SED:Shortest Expection Delay(初始连接高权重优先)
Overhead=(activeconns+1+inactiveconns) x 256/weight
但是,当node1 的权重为 1 node2 的权重为 10 ,经过运算前几次的调度都会被 node2 承接
4、NQ:Never Queue(永不排队
第一轮均匀分配,后续SED
5、LBLC:Locality-Based LC(基于局部性的最少连接调度算法
动态的DH 算法,使用场景:根据负载状态实现正向代理
6、LBLCR:LBLC with Replication
带复制功能的LBLC ,解决 LBLC 负载不均衡问题,从负载重的复制到负载轻的RS

3.3、在4.15版本内核以后新增调度算法

1、FO(Weighted Fai Over)调度算法:(常用作灰度发布)

在此 FO 算法中,遍历虚拟服务所关联的真实服务器链表,找到还未过载 ( 未设置 IP_VS_DEST_F
OVERLOAD 标志 ) 的且权重最高的真实服务器,进行调度
当服务器承接大量链接,我们可以对此服务器进行过载标记( IP_VS_DEST_F OVERLOAD ),那么 vs 调度 器就不会把链接调度到有过载标记的主机中。
2、OVF(Overflow-connection)调度算法
基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一个权重值最高的真实服务器, 在此 OVF 算法中,遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。

四、实验

4.1、NAT模式实验

 

 先配上IP,再更改/etc/NetworkManage/system-connections/eth0-nmconnection(自己网卡名)中的网关

CLient的网关:172.25.254.100(LVS的v),RS1/2的网关:192.168.0.100(LVS的dip),lvs的网关不变。

nmcli connection reload
nmcli connection up eth0(自己的网卡)

RS1:

dnf install apache -y
echo websever - 192.168.0.10 > /var/www/html/index.html
systemctl enable --now httpd

RS2:

dnf install apache -y
echo websever - 192.168.0.20 > /var/www/html/index.html
systemctl enable --now httpd

LVS:
打开路由内核功能 

vim /etc/sysctl.conf

刷新

sysctl -p

检测:
curl 192.168.0.10
curl 192.168.0.20
lvs中安装lvs软件
dnf install ipvsadm -y

客户访问时开始调度
ipvsadm -A -t 172.25.254.100:80 -s rr
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m
ipvsadm -Ln

 ipvsadm -E -t 172.25.254.100:80 -s wrr

ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.10 -m -w 2

 

4.2、DR模式实验

CLient,LVS,RS1,RS2的虚拟机设置和上面一样。

先配上IP,再更改/etc/NetworkManage/system-connections/eth0-nmconnection(自己网卡名)中的网关,上图中有。

nmcli connection reload
nmcli connection up eth0(自己的网卡)

给LVS,RS1,RS2配上临时环回IP:192.168.0.200/32

ip a a 192.168.0.200/32 dev lo

  

 

router:

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

RS1/2:

RS主机中使ARP不对外响应
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
调网关为192.168.0.100
sysctl -a | grep arp_ignore

LVS:

ipvsadm -A -t 192.168.0.200:80 -s wrr
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 2
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 1 

测试:

Client访问:
for i in {1..10}
do
curl 192.168.0.200
done

 

4.3、防火墙标签解决轮训错误

接着上面DR模拟实验做

RS1/2:
安装mod_ssl模块,让RS支持http
yum install mod_ssl -y
让可以使用https
systemctl restart httpd

LVS主机中为端口做标记:
iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66
查看
iptables -t mangle -nL
ipvsadm -A -f 66 -s wrr  [-p(默认360)]
ipvsadm -a -f 66 -r 192.168.0.10 -g
ipvsadm -a -f 66 -r 192.168.0.20 -g
ipvsadm -Ln 

Client: 

curl 192.168.0.200;curl -k https://192.168.0.200

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVS(Linux Virtual Server)是一种基于 Linux 系统的负载均衡集群技术,它主要用于将网络流量分发到多个服务器上,以提高系统的可靠性、可扩展性和性能。 LVS 集群一般包括四个组件:调度器(LVS 调度器)、前端服务器负载均衡器)、后端服务器(真实服务器)和存储服务器(用于共享数据)。首先,调度器接收来自客户端的请求,然后根据配置的调度算法(如轮询、加权轮询、最小连接数等)将请求分发到多个前端服务器。前端服务器接收到请求后,通过相应的负载均衡算法将请求转发到后端的真实服务器上进行处理。在整个过程中,存储服务器用于存放共享的数据,以确保所有的真实服务器都能获取到相同的数据,并提供一致的服务。 LVS 集群的优点是能够提高网站的稳定性和可靠性,当某一台服务器出现故障时,调度器会自动将请求分发到其他可用的服务器上,从而保证服务的连续性。同时,LVS 集群还能够通过增加前端服务器和后端服务器的数量来提高系统的性能和吞吐量,以满足不断增长的用户需求。 在实际应用中,LVS 集群需要合理配置,包括选择合适的调度算法、调整每台服务器的权重、选择适当的硬件设备等。此外,还需要及时监控集群的运行状态,及时发现和解决故障,以确保整个系统的正常运行。 总的来说,LVS 负载均衡集群是一种强大而高效的集群技术,能够帮助企业提高系统的可靠性和性能,是现代互联网应用中不可或缺的重要组成部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值