@@ -99,7 +99,7 @@ TLS 卸载(TLS Termination)是指将 TLS 加密/解密、证书管理等操
99
99
100
100
- ** 减轻后端负载** :后端服务器无需处理加密/解密操作,可以专注于业务逻辑处理。
101
101
- ** 减少运维负担** :负载均衡器集中管理 SSL 证书的配置和更新,避免每个后端服务器单独管理证书。
102
- - ** 提升请求效率** :负载均衡器通常具备硬件加速能力,并经过优化,能更高效地处理 TLS 连接(详见本书第二章 2.5.2 节) 。
102
+ - ** 提升请求效率** :负载均衡器通常具备硬件加速能力,并经过优化,能更高效地处理 TLS 连接。
103
103
104
104
### 5 安全和 DDoS 防御
105
105
@@ -190,7 +190,8 @@ TLS 卸载(TLS Termination)是指将 TLS 加密/解密、证书管理等操
190
190
191
191
LVS 的基本原理可以用一句话概述,通过修改 MAC 层、IP 层、TCP 层的数据包,实现一部分交换机和网关的功能,将流量转发至真正的服务器上。这三种数据包修改方式分别对应 LVS 提供的三种工作模式,接下来将详细介绍它们的工作原理。
192
192
193
- ## [ #] ( https://www.thebyte.com.cn/balance/balance4.html#_4-4-1-%E7%9B%B4%E6%8E%A5%E8%B7%AF%E7%94%B1%E6%A8%A1%E5%BC%8F ) 4.4.1 直接路由模式
193
+
194
+ ### 1 直接路由模式
194
195
LVS 的直接路由模式实际是一种链路层转发技术。
195
196
196
197
链路层负转发的原理是,负载均衡器(LVS)收到请求后,修改数据帧的目标 MAC 地址,再由交换机转发至某个“后端服务器”。
@@ -199,11 +200,11 @@ LVS 的直接路由模式实际是一种链路层转发技术。
199
200
200
201
例如,若某个 VIP 地址为 1.1.1.1,可以通过以下命令将该 IP 绑定到后端服务器的 lo 接口:
201
202
202
- ```
203
+ ``` bash
203
204
$ ip addr add 1.1.1.1/32 dev lo
204
205
```
205
206
206
- 在直接路由模式中,请求通过负载均衡器转发至后端服务器,而后端服务器的响应无需再经过负载均衡器,请求、转发和响应之间形成“三角关系”,因此该模式也被称为“三角传输模式”,如图 4-9 所示。
207
+ 在直接路由模式中,请求通过负载均衡器转发至后端服务器,而后端服务器的响应无需再经过负载均衡器,请求、转发和响应之间形成“三角关系”,因此该模式也被称为“三角传输模式”
207
208
208
209
![ [ balancer4-dsr-ZMeH2uRR.svg]]
209
210
直接路由模式优点在于,它特别适合响应流量远大于请求流量的场景。例如,在典型的 HTTP 请求/响应模式中,请求流量可能仅占总流量的 10%,而响应流量占 90%。通过三角传输模式,负载均衡器只需处理 1/10 的总流量。这种设计不仅显著降低了带宽成本,还提升了负载均衡器的可靠性(流量越少、负载越轻、越不容易出现问题)。
@@ -213,15 +214,15 @@ $ ip addr add 1.1.1.1/32 dev lo
213
214
- ** 监控功能受限** :由于响应流量直接返回客户端,负载均衡器无法监控完整的 TCP 连接状态,这可能影响防火墙策略的实施。例如,负载均衡器只能捕获 TCP 连接的 SYN 包,而无法跟踪后续的 ACK 包。
214
215
- ** 网络架构要求高** :负载均衡器与后端服务器之间通过链路层通信,因此要求两者位于同一子网内,这对网络拓扑设计提出了较高的要求。
215
216
216
- ## [ # ] ( https://www.thebyte.com.cn/balance/balance4.html#_4-4-2-%E9%9A%A7%E9%81%93%E6%A8%A1%E5%BC%8F ) 4.4. 2 隧道模式
217
+ ### 2 隧道模式
217
218
218
219
在直接路由模式中,请求通过修改链路层的 MAC 地址转发;而在网络层,当然也可以通过修改 IP 数据包实现请求转发。LVS 的隧道模式和 NAT 模式都属于网络层负载均衡,两者的区别是修改 IP 数据包的方式不同。
219
220
220
221
隧道模式的基本原理是,LVS 创建一个新的 IP 数据包,将原始 IP 数据包作为“负载”(payload)嵌入其中。新数据包随后被三层交换机路由到后端服务器,后者通过拆包机制移除额外的头部,恢复原始 IP 数据包并进行处理。
221
222
222
223
举一个具体例子,假设客户端(IP 203.0.113.5)向 VIP (1.1.1.1) 发送的数据包如下:
223
224
224
- ```
225
+ ``` json
225
226
{
226
227
Source IP: 203.0.113.5,
227
228
Destination IP: 1.1.1.1,
@@ -231,7 +232,7 @@ $ ip addr add 1.1.1.1/32 dev lo
231
232
232
233
负载均衡器收到数据包后,根据调度算法选择一台后端服务器(172.12.1.3),并对数据包进行封装处理。
233
234
234
- ```
235
+ ``` json
235
236
{
236
237
Source IP: 172.12.1.2,
237
238
Destination IP: 172.12.1.3,
@@ -245,11 +246,11 @@ $ ip addr add 1.1.1.1/32 dev lo
245
246
246
247
将一个 IP 数据包封装在另一个 IP 数据包内,并配合相应的解包机制,这是典型的 IP 隧道技术。在 Linux 中,IPIP 隧道实现了字面意义上的“IP in IP”。由于隧道模式工作在网络层,绕过了直接路由模式的限制,因此 LVS 隧道模式可以跨越子网进行通信。
247
248
248
- 如图 4-10 所示 ,由于源数据包信息完全保留,隧道模式因此也继承了三角传输的特性。
249
+ 如图所示 ,由于源数据包信息完全保留,隧道模式因此也继承了三角传输的特性。
249
250
![ [ balancer4-tunnel-DGY5TldN.svg]]
250
251
隧道模式可以视为直接路由模式的升级版,支持跨网通信。不过,由于涉及数据包的封装与解封,后端服务器必须支持相应的隧道技术(如 IPIP 或 GRE)。其次,隧道模式继承了三角传输的特性,因此后端服务器也需要处理虚拟 IP(VIP)与 lo 接口的关系。
251
252
252
- ## [ # ] ( https://www.thebyte.com.cn/balance/balance4.html#_4-4-3-%E7%BD%91%E7%BB%9C%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2%E6%A8%A1%E5%BC%8F ) 4.4. 3 网络地址转换模式
253
+ ### 3 网络地址转换模式
253
254
254
255
另一种对 IP 数据包的修改方式是** 直接修改原始 IP 数据包的目标地址,将其替换为后端服务器的地址** 。这种方式被称为“网络地址转换”(NAT)模式,其请求和响应的流程如图 4-11 所示。
255
256
@@ -269,11 +270,11 @@ $ ip addr add 1.1.1.1/32 dev lo
269
270
270
271
从上述可见,网络地址转换(NAT)模式下,负载均衡器代表整个服务集群接收和响应请求。因此,当流量压力较大时,系统的瓶颈就很容易体现在负载均衡器上。
271
272
272
- ## [ # ] ( https://www.thebyte.com.cn/balance/balance4.html#_4-4-4-%E4%B8%BB%E5%A4%87%E6%A8%A1%E5%BC%8F ) 4.4. 4 主备模式
273
+ ### 4 主备模式
273
274
274
275
到目前为止,我们讨论的都是单个负载均衡器的工作模式。那么,如果负载均衡器出现故障呢?这将影响所有经过该负载均衡器的连接。为了避免因负载均衡器故障导致服务中断,负载均衡器通常以高可用模式进行部署。
275
276
276
- 图 4-12 展示了最常见的主备模式 ,其核心在于每台节点上运行 Keepalived 软件,该软件实现了 VRRP(Virtual Router Redundancy Protocol)协议,虚拟出一个对外提供服务的 IP 地址(VIP)。默认情况下,VIP 绑定在主节点(Master)上,由主节点处理所有流量请求。备用节点(Backup)则持续监控主节点的状态,当主节点发生故障时,备用节点会迅速接管 VIP,确保服务不中断。
277
+ 如图展示了最常见的主备模式 ,其核心在于每台节点上运行 Keepalived 软件,该软件实现了 VRRP(Virtual Router Redundancy Protocol)协议,虚拟出一个对外提供服务的 IP 地址(VIP)。默认情况下,VIP 绑定在主节点(Master)上,由主节点处理所有流量请求。备用节点(Backup)则持续监控主节点的状态,当主节点发生故障时,备用节点会迅速接管 VIP,确保服务不中断。
277
278
278
279
![ [ lvs-ha-DO2CUxU4.svg]]
279
280
@@ -282,14 +283,14 @@ $ ip addr add 1.1.1.1/32 dev lo
282
283
- 在正常运行时,50% 的资源处于闲置状态,备用服务器始终处于空转状态,导致资源利用率低下。
283
284
- 现代分布式系统更加注重高容错性。理想情况下,即使多个实例同时发生故障,服务仍应能持续运行。然而,在主备模式下,一旦主节点和备用节点同时发生故障,服务将完全中断。
284
285
285
- ## [ # ] ( https://www.thebyte.com.cn/balance/balance4.html#_4-4-5-%E5%9F%BA%E4%BA%8E%E9%9B%86%E7%BE%A4%E5%92%8C%E4%B8%80%E8%87%B4%E6%80%A7%E5%93%88%E5%B8%8C%E7%9A%84%E5%AE%B9%E9%94%99%E5%92%8C%E5%8F%AF%E6%89%A9%E5%B1%95%E6%A8%A1%E5%BC%8F ) 4.4. 5 基于集群和一致性哈希的容错和可扩展模式
286
+ ### 5 基于集群和一致性哈希的容错和可扩展模式
286
287
287
288
近些年,业界开始设计全新四层负载均衡系统,其设计目标是:
288
289
289
290
- 避免传统主备模式的缺点。
290
291
- 从依赖厂商的商业硬件方案,转向基于标准服务器和网卡的通用软件解决方案。
291
292
292
- 如图 4-13 所示 ,这种设计被称为“基于集群和一致性哈希的容错和可扩展性”(Fault Tolerance and Scaling via Clustering and Distributed Consistent Hashing)。其工作原理如下:
293
+ 如图所示 ,这种设计被称为“基于集群和一致性哈希的容错和可扩展性”(Fault Tolerance and Scaling via Clustering and Distributed Consistent Hashing)。其工作原理如下:
293
294
294
295
- N 个边缘路由器使用相同的 BGP 权重通告所有 Anycast VIP[ ^ 1 ] ,确保同一流(flow)的所有数据包都通过相同的边缘路由器。
295
296
- N 个四层负载均衡器使用相同的 BGP 权重向边缘路由器通告 VIP,确保同一流的数据包始终经过相同的四层负载均衡器。
0 commit comments