LVS-服务搭建
简介
LVS (Linux Virtual Server), 用于四层 (传输层) 负载均衡. 它提供了一种可扩展和高可用性的方式来分发网络流量, 将请求平均分配给多个后端服务器.
LVS 本身只有负载均衡的功能, 一般和 Keepalive 配合使用以形成高可用.
相关概念
使用两台及以上的计算机完成一个人物模式称为 集群.
LB 集群
LB (Load Balance) 集群, 将访问请求转发给后端节点, 使所有节点的负载相对平衡.
HA 集群
HA (Highly Available) 集群, 提供持久服务, 当一个节点故障时, 可以切换到另一个节点.
HPC 集群
HPC (High Performance Computing) 集群, 通过并行算法或分布式计算提高计算机运算速度.
VIP
VIP (Virtual IP), 用作负载均衡器的入口, 将传入的请求分发给后端服务器. 客户端通过访问 VIP 来访问服务, 而不需要直接连接到后端服务器.
DIP
DIP (Director IP), 用于连接业务主机 (是 LVS 主机的另一个 IP), VIP 将请求转发给 DIP, 而 DIP 再将其转发给业务主机.
RIP
RIP (Real IP), 指业务主机 (Real Server) 的 IP 地址.
地址漂移
指 VIP 从一台主机迁移到另一台主机 (IP 没变, 只是机器变了).
心跳
Heartbeat, 主机之间相互监控彼此的状态, 以决定哪台主机提供服务的机制.
脑裂
Split brain, 指节点心跳通信中断或不正常导致的资源争夺.
工作模式
已知客户端访问请求的目的地址为 VIP, 这几种工作模式的区别在于, LVS 接收到访问请求之后的处理方法.
NAT
NAT (Network Address Translation).
工作流程:
- 客户端向 LVS 负载均衡器发送请求
- LVS 负载均衡器接收到请求后,会查找内部的服务器列表,选择一台合适的服务器进行转发
- LVS 负载均衡器将请求报文的目标 IP 地址和端口号修改为选择的服务器的 IP 地址和端口号,然后将修改后的报文转发给服务器
- 服务器处理请求并将响应报文发送回 LVS 负载均衡器
- LVS 负载均衡器将响应报文的源 IP 地址和端口号修改为自身的 IP 地址和端口号,然后将修改后的报文转发给客户端
重点在于: 返回时会经过 VIP.
优点:
- 部署简单,对后端服务器无需特殊配置
- 适用于后端服务器数量较少的情况
缺点:
- LVS 负载均衡器需要修改报文头部,增加了处理开销
- 所有数据流量都需要经过 LVS 负载均衡器,可能成为瓶颈
DR
DR (Direct Return).
工作流程:
- 客户端向 LVS 负载均衡器发送请求
- LVS 负载均衡器接收到请求后,会查找内部的服务器列表,选择一台合适的服务器进行转发
- LVS 负载均衡器将请求报文的目标 MAC 地址修改为选择的服务器的 MAC 地址,然后将修改后的报文直接转发给服务器
- 服务器处理请求并将响应报文直接发送给客户端,无需经过 LVS 负载均衡器
优点:
- 无需修改报文头部,处理开销较小。
- 所有数据流量不需要经过 LVS 负载均衡器,可以更好地利用服务器的网络带宽。
缺点:
- 要求后端服务器与 LVS 负载均衡器在同一个物理网络中,需要特殊的网络配置
- 后端服务器需要特殊的配置, 如绑定虚拟 IP 地址
重点在于: 返回不会经过 VIP.
TUN
安装
1 |
|
注意需要创建 /etc/sysconfig/ipvsadm
文件, 不然无法启动.
LVS 相关的重要组件:
IPVS
(IP Virtual Server), Linux 内核模块, 提供负载均衡功能/usr/sbin/ipvsadm
, LVS 的管理工具, 用于配置/etc/sysconfig/ipvsadm-config
, LVS 的配置文件
配置和使用
查看当前规则
1 |
|
-L
指 --list
.
清除当前所有规则
1 |
|
-C
为 “–clear”.
保存当前规则到配置文件
1 |
|
-S
, 为--save
-n
为--numeric
, 指以数字形式输出 IP 和端口, 而不是 hostname 和 services
从一个配置文件加载规则
1 |
|
-R
指 --restore
添加一条 rule 以及设置 VIP
1 |
|
-A
, “–add-service”, 表示添加一个服务 (rule)-t
, “–tcp-service”, 后跟 VIP 地址及端口-s
, “–scheduler”, 指定调度算法
添加后端 RS 并指定为 NAT 模式
开启端口转发:
1 |
|
设置 LVS:
1 |
|
-a
, “–add-server”, 添加一个 Real Server-t
, 指定一个 tcp service-r
, 指定 real server 的 ip 地址-m
, “–masquerading”, 指使用 NAT 方式
添加后端 RS 并指定为 DR 模式
开启 arp 对应功能:
1 |
|
配置 LVS:
1 |
|