LVS集群

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: LVS(Linux Virtual Server)集群是一种基于Linux操作系统的高可用性和负载均衡解决方案。它通过将网络流量分发到多个后端服务器上,实现了对网络服务的负载均衡,并提高了系统的可用性和性能。

前言

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以及配置策略的命名、保存策略。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
基于阿里云,构建一个企业web应用上云经典架构,让IT从业者体验企业级架构的实战训练。
目录
相关文章
|
6月前
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
222 0
|
3天前
|
运维 负载均衡 监控
keepalived+LVS实现高可用性集群
通过结合keepalived和LVS,你可以创建一个高可用性的负载均衡集群,确保服务器的稳定性和性能。这对于托管Web服务、应用服务器等关键服务的服务器集群非常有用。
39 1
|
3天前
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
5月前
|
负载均衡 算法 网络协议
小白带你学习linux的LVS集群(三十六)
小白带你学习linux的LVS集群(三十六)
80 0
|
8月前
|
负载均衡 测试技术
LVS+KeepAlived构建高可用集群
LVS+KeepAlived构建高可用集群
55 0
|
9月前
|
缓存 负载均衡 网络协议
|
缓存 运维 负载均衡
Keepalived+LVS+nginx搭建nginx高可用集群
  nginx是一款非常优秀的反向代理工具,支持请求分发,负载均衡,以及缓存等等非常实用的功能。在请求处理上,nginx采用的是epoll模型,这是一种基于事件监听的模型,因而其具备非常高效的请求处理效率,单机并发能力能够达到上百万。nginx接收到的请求可以通过负载均衡策略分发到其下一级的应用服务器,这些服务器一般是以集群方式部署的,因而在性能不足的情况下,应用服务器可以通过加机器的方式扩展流量。此时,对于一些特大型的网站,性能的瓶颈就来自于nginx了,因为单机的nginx的并发能力是有上限的,而nginx本身是不支持集群模式的,因而此时对nginx的横向扩展就显得尤为重要。
683 1
|
缓存 负载均衡 网络协议
构建LVS负载均衡集群
LVS即Linux虚拟服务器,目前 LVS 已经被集成到 Linux 内核模块中,该项目在 Linux 内核实现了基于 IP 的数据请求负载均衡调度方案,LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器.整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序.为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性.
863 0
构建LVS负载均衡集群
|
负载均衡 监控 算法
企业集群平台架构设计与实现lvs篇4(二)|学习笔记
快速学习企业集群平台架构设计与实现lvs篇4(二)
85 0
|
网络协议 Shell 网络安全
企业集群平台架构设计与实现 lvs 篇4|学习笔记
快速学习企业集群平台架构设计与实现lvs篇4
85 0
企业集群平台架构设计与实现 lvs 篇4|学习笔记