网络架构实战课
谢友鹏
某大厂技术专家
786 人已学习
新⼈⾸单¥59
网络架构实战课
15
15
1.0x
00:00/00:00
登录|注册

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

你好,我是谢友鹏。
上一节课我们分析了网络横向扩展架构,并且已经知道可以通过 DNS 进行横向扩展、也可以通过 LB 扩展下游服务,今天这节课我们重点关注 LB 自身怎样横向扩展。
我们将以 LVS 作为负载均衡器来进行原理分析和实验。

LB 横向扩展原理

我们可以从负载均衡器(LB)如何横向扩展上游服务的原理入手,来探寻其自身的扩展方式。负载均衡器能够决定请求应发送到哪个下游机器,因此可以有效分担上游流量。按照这个思路,横向扩展 LB 实际上是需要从其下游看请求的流向。
当请求到达机房时,LB 通常是第一个代理设备。请求会先由路由器转发给 LB。之前第三节课我们说过,在主备机房架构中,路由器会根据最长掩码匹配的原则选择路由。那如果存在多个等长掩码的路由,路由器会怎样选择呢?

ECMP

这时,路由器就会在这些路由之间进行负载分担。这一特性为负载均衡器的横向扩展提供了可能。通过 ECMP(等价多路径路由),可以在多个路由之间分担流量 ,从而实现负载均衡器的横向扩展,提升系统的吞吐量和容错能力。
现在我们已经知道怎样让请求包负载分担地到达 LB 上了,接下来我们会使用 LVS 作为 LB,分析其工作原理。

Netfilter 框架

LVS 是集成到 Linux 内核的一个功能,它依赖于 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
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
大纲
固定大纲
LB 横向扩展原理
ECMP
Netfilter 框架
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部