前言
LVS(Linux Virtual Server)集群是一种基于Linux操作系统的高可用性和负载均衡解决方案。它通过将网络流量分发到多个后端服务器上,实现了对网络服务的负载均衡,并提高了系统的可用性和性能。
LVS集群主要由以下几个组件组成:
1. 负载均衡器(Load Balancer):负载均衡器是集群的前端设备,它接收来自客户端的请求,并将请求按照一定的负载均衡算法转发到后端的真实服务器上。负载均衡器可以是硬件设备(如硬件负载均衡器)或软件设备(如LVS软件负载均衡器)。
2. 真实服务器(Real Server):真实服务器是承载实际服务的服务器。在LVS集群中,通常有多个真实服务器用于提供相同的服务,并共享负载。这些服务器可以是物理服务器或虚拟服务器。
3. 后端服务(Backend Service):后端服务是真实服务器提供的具体服务,可以是Web服务器、数据库服务器、应用服务器等。
4. 负载均衡算法(Load Balancing Algorithms):负载均衡器使用不同的算法来决定将请求转发到哪个真实服务器上。常见的负载均衡算法有轮询(Round Robin)、加权轮询(Weighted Round Robin)、最少连接(Least Connection)等。
LVS集群的工作原理是通过网络地址转换(NAT)或直接路由(Direct Routing)技术来将请求转发到真实服务器上。负载均衡器收到客户端请求后,根据负载均衡算法选择一个真实服务器,并将请求转发给它。真实服务器处理请求并将响应返回给客户端,完成整个过程。
LVS集群能够提供高可用性和性能扩展的好处。如果某个真实服务器出现故障或负载过高,负载均衡器可以自动将流量转发到其他健康的服务器上,保证服务的可用性。同时,通过共享负载,LVS集群能够将客户端请求均匀地分配到多个服务器上,提高整个系统的性能和吞吐量。
总而言之,LVS集群是一种高可用性和负载均衡方案,通过将网络流量分发到多个后端服务器上,提高了系统的可用性和性能。
一、概述
集群概述:
1、负载均衡技术类型
四层负载均衡器 也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;
七层负载均衡器 也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。
2、 负载均衡实现方式
硬件负载均衡产品:F5 、深信服 、Radware
软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)
二、LVS结构
LVS结构
三层结构
负载调度器
服务器池
共享存储
架构对象
VS:Virtual Server,也称为 Director,负载均衡服务器
RS:Real Server,真正的服务器,集群中各节点
VIP:Director 向外部提供服务的 IP
DIP:Director 向内部与 RS 通信的 IP
RIP:真实服务器的 IP
CIP:客户端的 IP
三、工作模式
LVS工作模式
LVS-NAT(NAT模式)
LVS-DR(直接路由模式)(应用最广泛)
LVS-TUN(IP隧道(Tunnel)模式,不常用)
FULL-NAT模式(双向转换模式,不常用)
四、LVS负载均衡算法
LVS负载均衡算法
静态负载均衡
rr(round robin,轮询 )
wrr(weight round robin,加权轮询)
sh(source hashing,源地址散列算法(HASH))
dh(destination hashing,目标地址 HASH)
动态负载均衡
lc(leash-connection,最少连接 )
简单算法:active * 256 + inactive (谁的小选谁)
wlc(加权最少连接)
简单算法:(active * 256 + inactive) / weight(谁的小选谁)
sed(最少期望延迟)
简单算法:(active + 1) * 256 / weight (谁的小选谁)
nq(never queue,永不排队)
LBLC(基于局部性的最少连接 )
LBLCR(基于局部性的带复制功能的最少连接)
五、命令解析
ipvsadm命令详解
-A
添加虚拟服务节点
-D
删除虚拟服务节点
-L
查看虚拟服务节点列表
-a
添加真实服务节点
-d
删除真实服务节点
-l
查看真实服务节点列表
-t
指定虚拟服务器IP地址
-s
指定调度算法
-r
指定真实服务器节点IP地址
-w
指定权重值
-g
直接路由模式(默认)
-i
隧道模式(不常用)
-m
NAT模式
六、NET案列
LVS(Linux Virtual Server)的net模式是LVS集群中的一种负载均衡模式,它通过网络地址转换(NAT)技术将网络流量转发给真实服务器,实现负载均衡和高可用性。
在net模式下,负载均衡器和真实服务器位于不同的子网中,各自拥有独立的IP地址。具体工作方式如下:
1. 配置负载均衡器:负载均衡器需要配置两个网络接口,一个用于管理和负载均衡器的IP地址(VIP,Virtual IP),另一个用于处理转发数据包的网络接口。
2. 配置真实服务器:真实服务器位于独立的子网中,需要配置一个与该子网相匹配的IP地址。
3. 转发数据包:当负载均衡器收到用户请求时,它会根据负载均衡算法选择一个真实服务器,并将请求数据包的目的地IP地址修改为该真实服务器的IP地址。然后,负载均衡器将数据包转发给真实服务器。
4. 真实服务器响应:当真实服务器接收到请求后,它会根据请求进行处理,并将响应数据包发送回负载均衡器。负载均衡器接收到响应后,将其源IP地址修改为VIP,再将响应转发回客户端。
net模式的优势包括:
- 独立子网:负载均衡器和真实服务器可以位于不同的子网中,提高了网络的灵活性和可扩展性。
- IP地址隐藏:真实服务器的IP地址对外部客户端来说是隐藏的,提高了网络的安全性。
- 负载均衡和高可用性:负载均衡器可以根据负载均衡算法选择最适合的真实服务器,实现负载均衡和高可用性。
需要注意的是,net模式要求负载均衡器和真实服务器位于不同的子网中,且负载均衡器需要正确配置网络地址转换规则(NAT)以实现请求和响应的转发。此外,负载均衡器需要具备足够的处理能力来处理大量的请求和响应。
总结来说,LVS的net模式通过网络地址转换(NAT)技术将网络流量转发给真实服务器,实现负载均衡和高可用性。它具有独立子网、IP地址隐藏和负载均衡高可用性等优势。
1、net模式
实验拓扑:按照如下要求配置,确保主机能访问外网并互相之间可以通信,最后用客户机访问网页时可以实现负载均衡
1、在192.168.115.131、192.168.115.134的主机上安装nginx,并书写简单的测试内容
####先安装epel源 yum -y install epel-release.noarch ####安装nginx yum -y install nginx ####在192.168.115.131上书写页面,并启动nginx echo nginx1 > /usr/share/nginx/html/index.html systemctl start nginx ####在192.168.115.131上书写页面,并启动nginx echo nginx1 > /usr/share/nginx/html/index.html systemctl start nginx ###回到192.168.115.128的主机上对以上的操作验证 curl 192.168.115.131:80 curl 192.168.115.134:80
2、在192.168.115.128的主机上安装ipvsadm并进行配置
###安装ipvsadm yum -y install ipvsadm ###开启路由转发功能 vim /etc/sysctl.conf 插入 net.ipv4.ip_forward = 1 使之生效 sysctl -p
添加网卡并配置,用来外部进行访问
配置网卡
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37 vim cp /etc/sysconfig/network-scripts/ifcfg-ens37
/
重启网络systemctl restart network 并用宿主机测试同联
3、做完这些我们开始在192.168.115.128上配置负载调度器
3.1、加载模块
1. ##加载ip_vs模块 2. modprobe ip_vs 3. ##查看模块 4. lsmod |grep ip_vs
3.2、启动ipvsadm服务
systemctl start ipvsadm,启动失败因为缺少文件,我们创建一个 touch /etc/sysconfig/ipvsadm再次启动就OK了
3.3、配置负载均衡策略
##添加虚拟服务器节点192.168.100.100:80是用来与外部通信的,并指定调度算法为轮询 ipvsadm -A -t 192.168.100.100:80 -s rr ##指定真实服务器ip并指定为net模式 ipvsadm -a -t 192.168.100.100:80 -r 192.168.115.131:80 -m ipvsadm -a -t 192.168.100.100:80 -r 192.168.115.134:80 -m ##查看策略 ipvsadm -Ln
保存策略
ipvsadm -save > /etc/sysconfig/ipvsadm
4、测试首先查看4台主机的网关,此时192.168.115.128作为路由服务功能了,接下来把两台web服务器的route改为192.168.115.128,否则是访问不到的
route add -net 0/0 gw 192.168.115.128
访问使用ctrl+F5深度刷新,就可以交替看到内容
抓包
七、dr模式
LVS(Linux Virtual Server)的DR(Direct Routing)模式是LVS集群中的一种负载均衡模式,它通过直接路由技术将网络流量转发给真实服务器,实现负载均衡和高可用性。
在DR模式下,负载均衡器和真实服务器在同一子网中,共享同一个IP地址。具体工作方式如下:
1. 配置负载均衡器:负载均衡器需要配置两个网络接口,一个用于管理和负载均衡器的IP地址(VIP,Virtual IP),另一个用于处理转发数据包的网络接口。
2. 配置真实服务器:真实服务器需要配置一个与负载均衡器同一子网的IP地址,并将其设为默认网关。
3. 转发数据包:当负载均衡器收到用户请求时,它会根据负载均衡算法选择一个真实服务器,并将请求目的地的MAC地址修改为该真实服务器的MAC地址。然后,负载均衡器将数据包转发到真实服务器的子网上。
4. 真实服务器响应:当真实服务器接收到请求后,它会根据请求的目标IP地址进行处理。由于真实服务器与负载均衡器在同一子网中,它可以直接将响应数据包发送回客户端,跳过负载均衡器。
DR模式的优势包括:
- 低延迟:由于真实服务器直接响应客户端请求,跳过了负载均衡器,可降低延迟。
- 高吞吐量:负载均衡器只需处理请求的转发,而不需要处理响应,可提高整个系统的吞吐量。
- 真实服务器可扩展性:由于真实服务器不需要处理转发的数据包,它可以处理更多的客户端请求。
- 真实服务器的原始IP地址:DR模式下,真实服务器使用自己的原始IP地址与客户端通信,更容易进行网络通信和故障排查。
需要注意的是,DR模式要求负载均衡器和真实服务器在同一子网中,并且真实服务器需要配置额外的网络接口和设置默认网关。此外,负载均衡器需要正确地设置转发规则和负载均衡算法,以确保请求正确地转发给真实服务器。
总结来说,LVS的DR模式通过直接路由技术将网络流量转发给真实服务器,实现负载均衡和高可用性。它具有低延迟、高吞吐量和真实服务器可扩展性等优势。
1、基于上个实验的基础我们继续实验再此之前我们移除ens37的网卡,重置策略,取消路由功能
1. ###在192.168.115.128上删除策略 2. ipvsadm -C
1. vim /etc/sysctl.conf 2. ##删除 net.ipv4.ip_forwd = 1
2、删除2台web服务器的网关
3、负载调度器配置
#调整ARP参数 vim /etc/sysctl.conf #插入 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects=0 net.ipv4.conf.ens33.send_redirects = 0 #使它生效 sysctl -p
1. 配置虚拟IP地址 2. cd /etc/sysconfig/network-scripts/ 3. cp ifcfg-ens33 ifcfg-ens33:0
4、同理配置2台web服务器的APR参数,这么做的目的是把ip禁锢在本地,不让别人知道,这样LVS集群对客户端来说就只有一个ip了
##调整ARP参数 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=2 ##是之生效 sysctl -p
配置虚拟ip
配置虚拟IP地址 cd /etc/sysconfig/network-scripts/ cp ifcfg-lo ifcfg-lo:0 vim ifcfg-lo:0 改为 DEVICE=lo:0 IPADDR=192.168.115.200 NETMASK=255.255.255.255 ONBOOT=yes NAME=loopback:0
重启负载调度器的网络主要看这里
重启两台web服务器的网络主要看这里
5、在负载调度器上配置
配置负载分配策略 [root@localhost network-scripts]# ipvsadm -A -t 192.168.115.200:80 -s rr [root@localhost network-scripts]# ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.131:80 -g [root@localhost network-scripts]# ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.134:80 -g
6、为web服务器添加回环路由
1. ##添加回环路由 2. route add -host 192.168.115.200/32 dev lo:0
7、访问
8、在宿主机上抓包发现对于宿主机来说访问的始终是192.168.115.200这个地址,所以用户就会认为是192.168.115.200这个服务器在提供服务,实际上啊是两台web服务器在发送内容
总结
在进行本次实验时要了解LVS并理解NET、DR的工作原理,这可以有效的便于实验。在配置net模式时较为简单,值得注意的是dr模式:配置时要按照顺序往下走,注意网关,注意APR的参数,注意如何配置策略,用的是哪个ip以及配置策略的命名、保存策略。