05|集群(下):怎样实现横向扩展?
谢友鹏

你好,我是谢友鹏。
上一节课我们分析了网络横向扩展架构,并且已经知道可以通过 DNS 进行横向扩展、也可以通过 LB 扩展下游服务,今天这节课我们重点关注 LB 自身怎样横向扩展。
我们将以 LVS 作为负载均衡器来进行原理分析和实验。
LB 横向扩展原理
我们可以从负载均衡器(LB)如何横向扩展上游服务的原理入手,来探寻其自身的扩展方式。负载均衡器能够决定请求应发送到哪个下游机器,因此可以有效分担上游流量。按照这个思路,横向扩展 LB 实际上是需要从其下游看请求的流向。
当请求到达机房时,LB 通常是第一个代理设备。请求会先由路由器转发给 LB。之前第三节课我们说过,在主备机房架构中,路由器会根据最长掩码匹配的原则选择路由。那如果存在多个等长掩码的路由,路由器会怎样选择呢?
ECMP
这时,路由器就会在这些路由之间进行负载分担。这一特性为负载均衡器的横向扩展提供了可能。通过 ECMP(等价多路径路由),可以在多个路由之间分担流量 ,从而实现负载均衡器的横向扩展,提升系统的吞吐量和容错能力。

现在我们已经知道怎样让请求包负载分担地到达 LB 上了,接下来我们会使用 LVS 作为 LB,分析其工作原理。
Netfilter 框架
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. LB横向扩展的原理是通过ECMP在多个路由之间分担流量,提升系统的吞吐量和容错能力。 2. LVS通过Netfilter框架实现对数据包的过滤和修改,分为5个不同的阶段:prerouting、input、forward、output、posting。 3. LVS有4种工作模式:DR模式、DNAT模式、FULLNAT模式和Tunnel模式,每种模式的转发原理和优势不同。 4. 实战环节的目的是实现LB的横向扩展,通过vip访问LB集群时,一部分流量经过LB1,一部分流量经过LB2,并观察到server1和server2返回header中X-Host带有不同的值。 5. 通过配置路由、虚拟LB和server部分,以及使用frr软件实现各种路由功能的开源项目,实现LB的横向扩展。 6. 在实验中,通过使用LVS的DR模式、Keepalived的虚拟LB配置、以及通过OSPF协议实现的动态路由,成功实现了LB集群的横向扩展。 7. 在LVS的DR模式下,需要在服务器的网络接口上配置VIP地址,但又不让VIP通过ARP广播公开,以避免广播给所有设备带来问题。 8. 实现ECMP时,按照五元组或源目的IP来hash选择走哪条路由,而不是完全按包负载分担,以确保请求能更均匀地在多个等价的路径中转发。 9. Linux在处理ECMP路由时不是逐包负载分担转发的,而是根据一些转发数据进行hash,碰撞到哪个路径,就走哪个路径,这与net.ipv4.fib_multipath_hash_policy的配置有关。 10. 通过实验验证LB的横向扩展功能,观察请求经过哪个LB转发,以及修改net.ipv4.fib_multipath_hash_policy参数后,观察请求的负载分担效果。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《网络架构实战课》,新⼈⾸单¥59
《网络架构实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论