当前位置: 首页 > article >正文

rocky9.2的lvs的NAT模式下的基本使用的详细示例

文章目录

  • 前言
    • 什么是LVS?(Linux Virtual Server)
    • LVS的组成
      • 1. 负载均衡器(Load Balancer)
      • 2. 后端服务器池(Real Servers)
      • 3. IPVS(IP Virtual Server)
      • 4. 调度算法(Scheduling Algorithms)
      • 5. 转发模式(Forwarding Methods)
      • 6. Health Check(健康检查)
      • 7. Keepalived
      • 8. 控制接口(Control Interface)
  • 使用示例(NAT模式)
    • 基本环境
    • 实现过程
      • 1.安装ipvsadm
      • 2.开启路由转发
      • 3.创建虚拟服务器
      • 4.web1.web2添加访问页面
      • 5.访问
    • 访问不到的原因
      • 1.lvs主机没有开启路由转发功能
      • 2.web主机的网关没有指向lvs主机

前言

什么是LVS?(Linux Virtual Server)

LVS 是 Linux Virtual Server 的缩写,它是一种用于构建高度可扩展、高性能和高可用性服务器集群的负载均衡解决方案。LVS 通常用于互联网服务中来实现服务器的负载均衡和高可用性,目的是通过将请求分发到多个服务器,来提高系统的处理能力和可靠性。

LVS的组成

LVS(Linux Virtual Server)主要由以下几个核心组成部分构成,它们共同合作来实现负载均衡和高可用性功能

1. 负载均衡器(Load Balancer)

这是 LVS 系统的核心部分,负责接收客户端的请求并将这些请求分发到后端的服务器池中。它主要通过调度算法和不同的转发模式(如 NAT、DR、TUN)来决定请求的分配方式。

2. 后端服务器池(Real Servers)

后端服务器池是实际提供服务的服务器集合。客户端的请求会被负载均衡器转发到这些服务器上。每台服务器通常运行相同的应用或服务,以确保负载均衡分配的均匀性。后端服务器在实际工作中被称为 Real Servers。

3. IPVS(IP Virtual Server)

IPVS 是 LVS 的核心组件,负责基于 IP 层进行负载均衡。它是 Linux 内核中的一个模块,允许系统将客户端的网络流量按照设定的规则转发到后端服务器上。IPVS 支持多种调度算法来分配网络流量,并支持不同的传输协议(如 TCP、UDP 等)。

4. 调度算法(Scheduling Algorithms)

调度算法决定了 LVS 如何将进入的网络请求分发到后端服务器。LVS 支持多种调度算法,

以下是一些常见的算法示例
轮询(Round Robin): 逐个循环分配请求。
加权轮询(Weighted Round Robin): 根据服务器的性能设置权重,权重越高的服务器将收到更多的请求。
最少连接(Least Connections): 将请求发送给当前连接数最少的服务器。
源地址哈希(Source Hash Scheduling): 基于客户端的 IP 地址哈希,将来自同一 IP 的请求始终发送到同一台服务器。

5. 转发模式(Forwarding Methods)

LVS 提供了三种主要的转发模式,用于将客户端请求转发到后端服务器上:

包括以下模式
NAT 模式(Network Address Translation): 通过修改数据包的源地址和目的地址,将请求转发到后端服务器,且返回的响应数据也需要通过负载均衡器来修改并发送给客户端。
简单来说 就是LVS 的 NAT 模式(网络地址转换)就像一个中间人:客户端请求先发送到负载均衡器,负载均衡器再修改数据包的目标地址并转发给后端服务器。后端服务器处理请求后,把响应发回负载均衡器,负载均衡器再修改数据包的源地址,最终将响应发送给客户端。这样,客户端和服务器都只看到负载均衡器的地址,而不知道彼此的真实地址。这个模式适合小规模网络,因为所有流量都要经过负载均衡器,可能成为瓶颈。

DR 模式(Direct Routing): 负载均衡器只负责将请求发给后端服务器,后端服务器直接将响应发送给客户端,不经过负载均衡器,这减少了负载均衡器的压力。
简单来说就是 LVS 的 DR 模式(直接路由)就像是直接派送:客户端的请求首先到达负载均衡器,负载均衡器仅负责将请求转发给后端服务器,而不修改数据包。后端服务器直接将响应发送给客户端,而不是经过负载均衡器。这样,负载均衡器只处理入站请求,出站响应不经过它,减轻了它的负载,适合处理大量流量。不过,需要所有服务器和负载均衡器位于同一网络环境中(共享相同的网关)

TUN 模式(IP Tunneling): 使用 IP 隧道技术,允许后端服务器位于不同的网络中,通过隧道将请求转发给后端服务器,后端服务器直接将响应发送给客户端。
简单来说就是 LVS 的 TUN 模式(隧道模式)像是中转快递:客户端的请求先到达负载均衡器,负载均衡器通过 IP 隧道将请求转发给后端服务器,但与 DR 模式不同的是,后端服务器处理完后直接通过公网将响应发送给客户端。这种模式可以让后端服务器位于不同网络,甚至跨数据中心处理请求,适合大规模、跨区域的高流量场景,不过需要服务器支持 IP 隧道协议(IPIP)。

6. Health Check(健康检查)

LVS 通常会结合健康检查机制来监控后端服务器的状态,确保服务器在健康状态下处理请求。如果某个服务器发生故障,LVS 会自动将该服务器排除在调度之外,防止将请求转发到故障服务器。常用的健康检查工具包括 Keepalived 和 Heartbeat。

7. Keepalived

Keepalived 是一个高可用性和负载均衡解决方案,通常与 LVS 配合使用。它负责管理 LVS 的健康检查和故障切换,当主负载均衡器出现故障时,可以自动将流量切换到备用的负载均衡器,从而确保服务的高可用性。这个以后会再出一篇详细描述

8. 控制接口(Control Interface)

LVS 提供了一些控制工具来管理和配置负载均衡器和服务器池。最常用的工具是 ipvsadm,它允许管理员添加、删除和修改 LVS 的调度规则,并监控 LVS 的运行状态。

使用示例(NAT模式)

基本环境

主机

ip主机名服务
200.0.0.0.1client客户端
200.0.0.1,192.168.10.12lvslvs
192.168.10.13web1httpd
192.168.10.14web2httd

rocky网卡路径

cd /etc/NetworkManager/system-connections

需要注意的是
web1 web2网卡的网关都要指向lvs,即192.168.10.12
lvs主机需要开启路由转发

rocky9.2的双网卡配置请看
链接: https://blog.csdn.net/lwxvgdv/article/details/142334821

实现过程

1.安装ipvsadm

ipvsadm是在负载调度器上使用的LVS 群集管理工具,通过调用ip_vs模块来添加、删除服务器 节点,以及查看群集的运行状态。手动安装 ipvsadm 软件包。

lvs主机上

yum -y install ipvsadm
ipvsadm -v

在这里插入图片描述

2.开启路由转发

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
sysctl -p

3.创建虚拟服务器

ipvsadm -A -t 200.0.0.2:80 -s rr

解释
-A:添加一个新的虚拟服务。
-t 200.0.0.2:80:指定虚拟 IP 地址和端口,这里是 200.0.0.2 的 80 端口。
-s rr:设置调度算法为轮询(round-robin)

添加服务器节点(web1 web2)

ipvsadm -a -t 200.0.0.2:80 -r 192.168.10.13:80 -m -w 1
ipvsadm -a -t 200.0.0.2:80 -r 192.168.10.14:80 -m -w 1

解释
第一条命令
-a:添加真实服务器。
-t 200.0.0.2:80:指定虚拟服务。
-r 192.168.10.13:80:指定真实服务器 IP 和端口。
-m:使用 NAT 模式(直接映射)。
-w 1:设置权重为 1,表示负载均衡时的分配比例。

第二条命令 功能相同,只是指定的真实服务器为 192.168.10.14。

4.web1.web2添加访问页面

web1

yum -y install httpd
echo web1 > /var/www/html/index.html
systemctl restart httpd

web2

yum -y install httpd
echo web2 > /var/www/html/index.html
systemctl restart httpd

5.访问

client主机访问
在这里插入图片描述

访问不到的原因

1.lvs主机没有开启路由转发功能

命令

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
sysctl -p

2.web主机的网关没有指向lvs主机

lvs主机的ip为192.168.10.12
web1的网卡配置

[connection]
id=ens33
uuid=2060138f-8d43-365c-a863-cb0bcbc3e730
type=ethernet
autoconnect-priority=-999
interface-name=ens33

[ethernet]

[ipv4]
method=manual
address1=192.168.10.13/24,192.168.10.12
dns=192.168.10.2;8.8.8.8

[ipv6]
addr-gen-mode=eui64
method=auto

[proxy]

在这里插入图片描述


http://www.kler.cn/a/318190.html

相关文章:

  • 快速部署一套Kubernetes集群
  • Mac Android studio 升级LadyBug 版本,所产生的bug
  • UE5 渲染管线 学习笔记
  • mysql数据库面试核心概念
  • 【论文复现】农作物病害分类(Web端实现)
  • pyinstaller打包资源文件和ini配置文件怎么放
  • SpringBoot使用@Async注解,实现异步任务
  • 002.k8s(Kubernetes)一小时快速入门(先看docker30分钟)
  • WPF经典面试题全集
  • JavaEE: 深入探索TCP网络编程的奇妙世界(一)
  • 【MySQL】数据类型【mysql当中各自经典的数据类型的学习和使用】
  • Leetcode 136 只出现一次的数字
  • EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(一)
  • WPF 的TreeView的TreeViewItem下动态生成TreeViewItem
  • 合宙LuatOS应用,与时间相关那些事
  • k8s中pod的创建过程和阶段状态
  • Allegro视频去除走线的小方块
  • Milvus - 四种一致性级别与应用场景解析
  • 可靠传输是什么?是基于UDP实现的吗
  • JUC并发编程_四大函数式接口和 Stream 流式计算
  • 适用于 Windows 的 7 大数据恢复工具,可靠的数据恢复工具可有效地恢复丢失的文件
  • 后端开发工程师转行大模型领域:全面学习路线指南,非常详细收藏我这一篇就够了
  • 【大语言模型_1】VLLM部署Qwen模型
  • 【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式
  • 2-102基于matlab的蒙特卡洛仿真
  • C语言——文件操作