基于LVS实现负载均衡,对NAT模式的介绍和使用案例

一.LVS介绍【如果不去指定调度算法,那么LVS默认的调度算法就是wlc算法。】

LVS linux虚拟服务

由国内章博士研发,在红帽5的时代发布。

作为Linux内核模块,基于内核工作。

LVS的调度算法:

1.rr轮询算法【优点:负载均衡的效果好,缺点:面对后端性能不同的服务器,会造成资源浪费。】

2.wrr基于权重的轮询 ,权重值就是阿拉伯数字,【缺点就是,给服务器大的权重值,虽然服务器的配置好,但是此时服务器的CPU使用率已经达到了百分之90多,并且此时其他的服务器的CPU还有大量空余。如果此时还使用基于权重的轮询,将大量的客户端请求转发到这个服务器,这个服务器会变得非常卡。】

会话保持方案:

a.会话共享存储,

b.换调度算法

3.lc最少连接, 哪个服务器的连接数最少,就将新的客户端请求交给哪个服务器进行处理。

4.wlc基于权重的最少连接:默认的调度算法。【即考虑服务器的配置,同时考虑服务器处理连接的连接数。】在接收客户端新请求的时候,挑选配置相对高,连接数量相对少的服务器来处理客户端请求。

5.sh 源地址hash【在一段时间之内将同一个客户端的请求,转交给同一个服务器进行处理,能够帮助我们廉价的解决会话保持问题。会很严重的破坏负载均衡效果。对客户端IP地址进行哈希运算。 】

6.dh算法,目的地址哈希hash,会对数据中的目的IP地址做哈希运算,【对服务器的IP地址进行哈希运算。能够很有效的提升缓存的命中率,客户端的访问效率也就高了,如果不同客户端请求的哈希运算结果一致的话,就将运算结果一致的客户端请求交给同一个服务器进行处理。】【主要用在后端服务器是缓存服务器的场景下。】

二.LVS工作模式

根据内部工作原理:

1.NAT模式

2.DR模式

3.TUN模式

NAT模式和DR模式的区别?【重点】

如上图所示,这是LVS的NAT模式的工作流程,这是一个负载均衡集群的结构,随后是两个调取器,调度器之后是一些servers服务器,接收请求是客户端到调度器到服务器,响应请求是服务器到调度器到客户端。

如上图所示,这是LVS的DR模式,接收请求是客户端到调度器到后端服务器,响应请求是服务器直接给客户端进行响应。【此时只有请求是经过调度器的,响应是直接给客户端的。】

以NAT模式构建负载均衡集群的时候,不建议后端的服务器的数量过多,如果后端的服务器的数量过多,请求和响应都要经过调度器,此时调度器的性能就会成为访问速度的瓶颈,造成客户端的访问效率降低。

以DR模式构建负载均衡集群的时候,请求是经过调度器的,响应是服务器直接返回给客户端的。

相对而言,后端服务器的数量可以比NAT模式的后端服务器的数量多一些。

1.LVS中的NAT模式

服务器的IP地址在整个集群中成为RIP地址。

调度器上面要有一个IP地址,用来和后端服务器进行通信,

调度器上面要有一个VIP地址,调度器基于这个VIP地址来提供虚拟服务,

客户端上面的IP地址成为CIP

客户端联系的是VIP地址,调度器通过DIP联系后端服务器来转发客户端请求。

核心要素:【重点,】

1.请求,响应都要经过调度器

2.调度器上的VIP和DIP需要分属于不同的网络。

3.调度器要开启路由转发功能,实现两个网段之间的通信。

4.所有real server 的网关地址需要指向调度器的DIP地址。

5.不建议后端服务器的数量过多。

此时有一个问题?

在响应客户端数据的时候,是服务器将数据返回给调度器,调度器再将数据返回给客户端,那么怎么使得服务器先把响应数据交给调度器?

需要把后端服务器的网关指定为调度器的DIP地址,那么之后服务器再往外发送数据的时候,需要先经过网关地址,此时后端服务器的网关地址就是调度器的DIP地址。

以LVS的NAT模式构建集群的话,建议后端的服务器的数量在20以内。

NAT模式的工作原理【重点,】

如上图所示,蓝色的是请求数据,黄色的是响应数据。

来自客户端的请求,目的IP地址会从VIP地址替换成服务器的RIP,

返回给客户端的响应,源IP地址会从RIP地址替换成调度器的VIP地址。

请求经过调度器时,目的IP会被转换为RIP

响应经过调度器时,源IP会被转换为VIP

FULLNAT【改进的NAT模式,但是Linux内核不支持,需要手动修改服务器内核代码。使得Linux操作系统支持这个FULLNAT模式。】

蓝色的还是客户端的请求,黄色的是返回给客户端的响应。

2.NAT模式案例

1.配置调度器地址【一个vip地址,一个DIP地址,不同网段。两块网卡】

2.配置real server地址,注意网关【指定为调度器的DIP地址。】

3.在后端real server 安装httpd,建立测试网页。

4.安装ipvsadm工具。【在调度器上。对LVS软件进行管理。】

5.开启调度器的路由转发功能。

如上图所示,将这个net.ipv4.ip_forward = 0的值改为1

想要体现出负载均衡的效果,可以给后端服务器不同的测试页面。当显示出不同的测试页面的时候,就证明负载均衡成功。

如上图所示,这是永久修改系统参数,开启调度器的路由转发功能。

6.添加虚拟服务,创建集群

如上图所示,这就是创建了一个虚拟服务,一个调度器上面是可以启用多个虚拟服务的。

-A 向LVS配置中新增一个虚拟服务。

-t指定虚拟服务类型是TCP类型,并且绑定这个虚拟服务与后续的IP地址和端口。

-s定义负载均衡算法,控制请求分发到后端服务器的策略。

功能:在 LVS 集群中创建一个 TCP 虚拟服务,监听 192.168.146.100:80,并采用轮询(rr)算法实现负载均衡。

使用场景:当客户端访问 192.168.146.100:80 时,LVS 会根据轮询策略将请求依次转发到后端的真实服务器(需额外配置真实服务器列表)。

如上图所示,这是用来查看负载均衡表,查看调度器上有哪些虚拟服务,以及后端的real server

如果要修改轮询的算法的话,将-A选项修改为-E选项就是修改

7.添加real server信息

如上图所示,这是给这个调度器上的虚拟服务添加real server信息,随后查看负载均衡表,可以看到当前负载均衡集群的信息。

也就是说,将来当这个192.168.149.100:80这个虚拟服务接收到请求后,会按照轮询算法,向后端的real server转发服务。

这里的-m代表的是以NAT模式创建负载均衡集群。

可以使用-w来给后端的real server服务器添加权重。

8.测试访问

这个负载均衡集群搭建好之后,测试访问需要使用调度器的VIP地址来访问服务。

如上图所示,这是访问vip地址的80端口服务,此时出现web01和web02轮询出现,代表按照轮询算法的负载均衡集群搭建成功。

如上图所示,我们可以到调度器上使用-c选项来查看当前负载均衡表的详细信息。

相关推荐
ulias2122 小时前
Linux系统中的权限问题
linux·运维·服务器
青花瓷4 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
Dream of maid5 小时前
Linux(下)
linux·运维·服务器
齐鲁大虾5 小时前
统信系统UOS常用命令集
linux·运维·服务器
专吃海绵宝宝菠萝屋的派大星7 小时前
使用Dify对接自己开发的mcp
java·服务器·前端
大数据新鸟7 小时前
操作系统之虚拟内存
java·服务器·网络
来一颗砂糖橘9 小时前
负载均衡的多维深度解析
运维·负载均衡
楠奕9 小时前
CentOS7安装GoldenDB单机搭建及常见报错解决方案
linux·运维·服务器
GCTTTTTT9 小时前
远程服务器走本地代理
运维·服务器
剑锋所指,所向披靡!9 小时前
Linux常用指令(2)
linux·运维·服务器