Created
Jun 6, 2024 03:36 AM
Tags
LVS 工作原理
官方文档地址:‣红帽LVS官方文档:第 1 章 Linux 虚拟服务器总览 红帽企业版
LVS 工作原理什么是LVS?IPVS 函数IPVSADM 命令语法管理 集群服务管理 集群中真实服务器查看 & 保存 & 清空 集群设置相关名词工作模式A. 地址转换模式B. 路由模式C. 隧道模式
什么是LVS?
Linux Virtual Server,是针对Linux内核开发的一个负载均衡项目。
官网是:‣
可以进入官网查阅相关的技术文档。LVS现在已经成为Linux内核的一部分,默认编译为 ip_vs 模块,必要时能够自动调用。
IPVS 函数
钩子函数
内核机制,在请求没有到达目的地址之前,捕获并取得优先控制权的函数。
IPVSADM 命令
管理集群服务的命令行工具,也可称为 IPVSADM 命令,是 LVS 在应用层的管理命令。需要使用 yum 单独安装。
工作在用户空间,负责为 IPVS 内核框架编写规则,定义谁是集群服务,谁是后端真实的服务器。
语法
常用选项
- 选项后的参数
以下参数可接在上述选项后。
管理 集群服务
添加
修改
删除
管理 集群中真实服务器
添加
修改
删除
查看 & 保存 & 清空 集群设置
相关名词
CIP | 客户端 IP |
DIP | 负载调度器 IP |
VIP | 集群 IP |
RIP | 真实服务器 IP |
工作模式
- NAT 模式
类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。服务器节点使用私有 IP 地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式,但负载调度器的压力较大。
NAT 模式将客户端请求通过网络地址转换发送到后端服务器。
- TUN 模式
采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的 Internet 连接直接回应客户机,而不再经过负载调度器,服务器节点分散在互联网中的不同位置,具有独立的公网 IP 地址,通过专用 IP 隧道与负载调度器相互通信。
TUN 模式,通过 IP 隧道技术将请求封装后发送至后端服务器。
- DR 模式
采用半开放的网络结构,与 TUN 模式的结构类似,但各节点不是分散在各地的,而是与调度器位于同一个物理网络,负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道。
DR模式中,请求直接路由到后端服务器,更改数据包的MAC地址以对应后端服务器。
A. 地址转换模式
NAT
工作流程
- 客户端将请求交给负载调度器,客户端发出数据包,此时这个数据包的 源 IP 为 CIP ,目标 IP 为 VIP(集群 IP)
- 数据包到达负载调度器后,修改数据包的目标 IP 地址为真实服务器的 IP ,此时数据包的源 IP 为 CIP ,目标 IP 为 RIP
- 将数据包发送给 RS,之后 RS 响应将数据包发回给负载调度器,此时数据包的 源 IP 为RIP,目标 IP 为 CIP
- 负载调度器在转发时,会将 源 IP 地址改为自己的 VIP 地址,然后再发给客户端,此时数据包的 源 IP 为 VIP ,目标 IP 为 CIP
- 特点
- 负载调度器和真实服务器,必须位于同一网络
- 真实服务器的网关必须指向 DIP
- 负载调度器必须位于客户端和真实服务器之间
- RIP通常都是私有地址,仅用于各个集群节点通信
- 支持目标地址转换
- 真实服务器可以使用任意操作系统、负载调度器必须是 LINUX 系统
- 缺点 ×
所有数据报文都要经过负载调度器、压力过大
B. 路由模式
DR
工作流程
- 客户端发出数据包,源 IP 是 CIP,目标 IP 是 VIP
- 依靠路由把数据发送给负载调度器,负载调度器将数据包的 源 MAC 地址 修改为 DIP 的MAC地址,将 目标 MAC 地址 修改为 RIP 的 MAC 地址,此时 源 IP 和 目标 IP 均未修改
- 由于 DS 和 RS 在同一网络中,所以通过二层来传输,通过调度器再将数据包发到 RS
- RS 接收数据包,之后通过 IO 接口传送给网卡(eth0)向外发出,此时的 源 IP 是 VIP,目标 IP 为 CIP
- 最后通过路由发给客户端
- 特点
- 负载调度器和真实服务器,必须位于同一网络
- 真实服务器的网关必须指向路由器
- 负载调度只处理入站请求
- RIP 可以是私有地址,也可以是公网地址
- 真实服务器可以使用任意操作系统,负载调度器必须是 LINUX 系统
- 优点 √
负载调度器压力较小
- 缺点 ×
配置相对复杂
C. 隧道模式
TUN
工作流程
- 客户端发送数据包到负载调度器,此时数据包的 源 IP 为 CIP ,目标 IP 为 VIP
- 负载调度器会在数据包的外面再次封装一层 IP 数据包,封装 源 IP 为 DIP ,目标 IP 为RIP 。此时 源 IP 为 DIP ,目标 IP 为 RIP
- 之后负载调度器将数据包发给 RS(因为在外层封装多了一层 IP 首部,所以可以理解为此时通过隧道传输),此时 源 IP 为 DIP ,目标 IP 为 RIP
- RS 接收到报文后发现是自己的 IP 地址,就将报文接收下来,拆除掉最外层的 IP 后,会发现里面还有一层 IP 首部,而且目标是自己的 IO 接口 VIP,那么此时 RS 开始处理此请求,处理完成之后,通过 IO 接口送给网卡 (eth0),然后向外传递。 此时的 源 IP 为 VIP ,目标 IP 为 CIP
- 之后将数据包发给客户端
- 特点
- 所有真实服务器节点既要有 RIP,又要有 VIP,并且 RIP、必须是公网 IP
- 负载调度器和真实服务器必须支持隧道功能
- 负载调度器只处理入站请求
- 真实服务器一定不能使用负载调度集群做默认网关
- 不支持端口映射
- 优点 √
可跨互联网搭建集群
- 缺点 ×
对网络环境要求较高