操作中的负载平衡
1)操作团队为何要管理平衡
负载平衡不仅仅是查询分配。这是风险和性能管理层:故障半径限制、可预测的潜伏期、缩放节约、"噪音邻居"隔离、对SLO执行的直接影响以及事件成本。
2)平衡层: 从网络到业务运营
L3/L4 (IP/端口):简单、快速(DSR、ECMP、IPVS、LVS)。非常适合TCP/UDP服务,经纪人,门。
L7(HTTP/gRPC/WebSocket):路由路由/标头/元数据;金丝雀,A/B,地质和客户奖励政策。
GSLB/GeoDNS/Anycast:按区域/RoR分布的全球性,对延迟,邻近性和区域健康的考虑。
服务内平衡:具有服务发现的客户端(xDS、Consul、Eureka)、客户端平衡器(gRPC pick_first/round_robin)、服务主体。
3)分布算法以及何时应用
Round-Robin (RR):一个简单的基本变体,具有均匀的节点和短查询。
Least Connections (LC):在不同的查询时间上更好。
Least Request/Peak EWMA:在"长时间"请求和噪音下自适应降低潜伏期。
重量RR/LC:考虑节点的功率或"成本警卫"。
Consistent Hashing (Rendezvous/Maglev):对于粘性键(用户、桌子/房间、篮子),缩放时减少过度调整。
Power of Two Choices: LC在高载荷下的良好近似,遥测较少。
Hedged/Retry Budgeted Requests:并行追赶请求,带有p99的撤退预算。
4)会议、状况和粘度
粘贴会话(cookie/IP/ID)-当高速缓存在本地或存在静态上下文时(例如iGaming中的实时桌面)。
缺点:热点效应,更难疏散节点。
解决方桉:TTL短粘性,在可能的情况下将状态传递到外部存储(Redis, session store)、共享无和事件源。
5)健康检查和防爆保护
L7内容检查(通过身体/标题进行评估)而不是"200种成功"。
组合样品:TSR+NTTR+内部"/就绪",具有不同的时间间隔。
Debowns:n失败→例外;m成功→重返游泳池。
Outlier检测:自动排除具有高error-rate/潜在性 (ejection)的节点。
6)Taymauts,Retrais和Backpressure政策
面向预算的retrais:用户的总时间限制(例如800 ms SLA → retriable 2 ×每个200 ms+库存)。
Circuit Breakers:限制同时查询/连接/错误。
Quotas/Rate限制:边缘本身的默认的"per-tenant/per-IP/per-key"限制。
服务器侧静音:短队列或明显退化的故障,不要"加速"潜伏的尾巴。
7)全局平衡和容错
Geo-routing:按延迟(基于滞后),按客户区域,按健康。
Anycast+health-probes: PoP下降时的即时路线融合。
Failover层次结构:RoR→region→oblako;冷热DR。
交通参与:杂货/法律隔离(国家、支付提供商、VIP细分市场)。
8)流和实时平衡
WebSocket/SSE/gRPC-stream:长期连接→注意连接/节点,在尺度外重新分配。
通过一致性哈希在用户或房间/桌子上粘贴。
Drain/PreStop Hooks:在发布和自动滑行时正确地删除连接。
9)周边安全
TLS终端,HSTS,ALPN;mTLS用于东西方。
WAF/机器人管理到应用程序平衡器。
DDoS-защита: rate-limits, challenge-/proof-of-work, upstream scrubbing.
策略作为代码(OPA/Kyverno/Envoy RBAC)。
10)可观察性和用于平衡的SLO
SLI:成功查询,错误/秒,p50/p95/p99潜伏期,原生物(CPU/conn/epoll)。
后端指标:请求率,错误率,EWMA-latency →进入算法。
Logi L7:与发行版(注释),幻想旗和金丝雀交谈。
异位数:按错误预算和客户症状(外部合成)计算。
11)自动滑行和成本效率
HPA/VPA/KEDA:通过RPS,队列和自定义度量进行缩放。
按成本计算:较便宜的区域/云在正常负载下获得更大的重量。
Warm pools/加热:预先加热标本,不要"捕捉"冷启动。
12)变更管理: 金丝雀,影子,蓝绿色
金丝雀路由:在SLO降解时,自动脚步为1%→5%→25%。
Shadow traffic:将请求复制到新版本而未回复到客户端(用于验证)。
Blue-Green:即时切换VIP/路由表;快速回滚。
13)配置和GitOps
一个单一的真相来源:路由、权重、时间限制和限制策略-在存储库中。
在星期三(dev→stage→prod)以相同的pipline推广配置。
验证和配置测试:linters, dry-run,流量卡模拟。
14)私人桉例(受监管域)
支付/CUS提供商:并行渠道,按质量/响应时间切换;主提供商SLO。
多辖区:地理路由,国家/地区内容/限制政策。
VIP片段:SLO增强的单个权重/通道,UX降解的"手柄"。
15)反模式
一个平衡器是"唯一的故障点"。
NAT后面的IP粘性-"粘性"群集和流量偏斜。
在重型/长型查询中的通用RR是p99尾巴的生长。
Retrai没有预算,没有同位素是查询的风暴。
只有TCP的健康检查是非工作应用程序中的"绿色"。
没有TTL的"永恒"粘合会话是无法疏散节点。
Configs是手工统治的,没有咆哮和晋升-漂移和事件。
16)实施支票
- 已选定一个级别:L4/L7/GSLB、目标和责任区。
- 分布算法对应于负载轮廓(EWMA/LC/Hash)。
- 在需要静态上下文的地方进行一致哈希。
- 组合健康检查,outlier-ejection, debowns.
- Taymauts/retrai/限制-作为代码,具有时间预算。
- 后端可观察性和客户合成剂;burn-rate alerta。
[] Canary/blue-green + shadow traffic;快速回滚。
- GitOps for configs;干跑和路线测试。
- DR计划和failover层次结构(RoR→region→oblako)。
- 隔离贵宾/法律队列和提供商。
17)建筑流程示例
1.GSLB(基于latency)将客户引导到最近的健康地区。
2.Edge/L7平衡器应用WAF,TLS,极限,金丝雀5%。
3.Service mesh通过LC+EWMA分配到托盘,不包括outliers。
4.对于实时桌子-通过"table_id",sticky TTL 10分钟进行自觉打包。
5.HPA通过RPS和队列扩展前端;战池→没有寒冷的开始。
6.可观察性:dashboard p50/p95/p99,error-rate,saturations,burn-rate。
7.降级时:节点自动启动、金丝雀减少、切换到备用提供商、回滚版本。
18)结果
负载平衡是连接网络,应用程序,数据和商业SLO的操作学科。正确选择的级别(L4/L7/GSLB),适当的算法,严格的健康检查,计时和撤退策略,可观察性和GitOps控制将平衡从"设置框"转换为可持续且经济高效的服务交付机制。