网络层IP路由的负载均衡实现思路

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介:
equalize补丁可以解决路由的负载均衡问题,然而其实现的代价却是禁用了均衡路由的缓存,每次都要查询路由表,查询路由表的开销抵消了一部分负载均衡带来的性能提升。因此最好的方法就是既实现了路由的负载均衡,又实现了路由缓存,实现思路如下:
为每一系列需要在其间做负载均衡的路由准备一个均衡链表T,添加路由的时候链接在一起,内核进行下列动作:
1.数据到来,如果缓存中没有找到路由则在路由表中查找路由
2.如果在缓存中找到了路由,但是该路由需要均衡,则按照均衡策略选择一条路由
2.1.最简单的方式就是轮转策略,在链表中依次使用各个路由
然而这样做会导致一个问题,那就是缓存中到底缓存均衡路由的哪一条呢?事实上,由于它们是双向链表(list_head)彼此链接在一起的,随便存一条就可以了,在缓存中查找的时候,只要发现一条就带有均衡标志的,那么就紧接着遍历链表上的所有路由,只要链表中有一条命中,就说明缓存命中,然后再根据均衡策略进行最终路由的选择。

     以上的方法实现地比较简单,不是很和谐,并且如何将所有需要均衡的路由链接在一起也是个问题,如果是基于linux修改的话,就要大量修改源代码。事实上,可以通过netfilter来实现,首先自定义一个链,然后实现一个target,这条自定义的链上添加所有的需要做负载均衡的路由,target中实现均衡策略最终选择出一条路由,可以使用缓存,如果均衡路由很少的话也可以不使用缓存,反正怎么实现都行,只要按照netfilter的接口来即可,这就实现了一种层次化的设计,但是还是需要修改源代码,我们将这个hook挂载在prerouting上,然后添加一个标志,如果netfilter找到了均衡路由,那么就设置这个标志,然后在路由模块中一旦查找到这个标记就不再按照常规的方式查找路由了(注意,不能用norouting标志)。需要注意的是,这种方式暂时还不能用于本地输出的包,因为output这个hook点是在路由之后进行的。



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271179

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3天前
|
缓存 算法
基于机会网络编码(COPE)的卫星网络路由算法matlab仿真
**摘要:** 该程序实现了一个基于机会网络编码(COPE)的卫星网络路由算法,旨在提升无线网络的传输效率和吞吐量。在MATLAB2022a中测试,结果显示了不同数据流个数下的网络吞吐量。算法通过Dijkstra函数寻找路径,计算编码机会(Nab和Nx),并根据编码机会减少传输次数。当有编码机会时,中间节点执行编码和解码操作,优化传输路径。结果以图表形式展示,显示数据流与吞吐量的关系,并保存为`R0.mat`。COPE算法预测和利用编码机会,适应卫星网络的动态特性,提高数据传输的可靠性和效率。
|
27天前
|
负载均衡 Kubernetes 网络协议
如何在集群的负载均衡过程保留请求源IP
本文探讨了在Kubernetes (k8s)集群中如何确保服务获取到请求的源IP。通常,源IP可能会因网络地址转换(NAT)和代理服务器而丢失。为保留源IP,文章建议在代理服务器层添加HTTP头`X-REAL-IP`字段。在K8s中,通过设置`externalTrafficPolicy: Local`可保留源IP,但这会牺牲负载均衡。使用Ingress时,可通过配置Ingress Controller的`use-forwarded-headers`并调整ConfigMap来同时保留源IP和实现负载均衡。文章适用于对网络和K8s感兴趣的读者。
57 3
|
15天前
|
传感器 算法 安全
基于WSN网络的定向步幻影路由算法matlab仿真
该文探讨了无线传感器网络中的位置隐私保护,对比了NDRW路由与定向步幻影路由在安全时间和能耗方面的性能。在MATLAB2022a中进行测试,结果显示NDRW路由提供最长的安全时间,尤其在长距离传输时,且在近距离下能耗低于幻影路由。幻影路由虽消耗更多能量,但通过随机步创造幻影源以增强安全性。NDRW路由利用非确定性随机游走策略,避免拥堵并提高效率,而幻影路由则引入方向性控制,通过启发式算法优化路径选择。
|
16天前
|
网络协议 算法 数据中心
IP:网络上的击鼓传花
首先你要打电话找一家电信运营商(接入 ISP,比如中国移动),他们会就近网点派人上门给你拉光纤,装个一体化路由器(光猫和路由器一体化设备),设置或者不设置一个 IP(一般是通过 ISP 的 DHCP 服务器自动获取),然后你交了钱,就能上网了。
18 2
|
20天前
|
缓存 网络协议 Linux
玩转网络调试利器:深入剖析ip命令的强大功能
玩转网络调试利器:深入剖析ip命令的强大功能
23 2
|
20天前
|
数据采集 Java 数据安全/隐私保护
使用Java进行网络采集:代理IP与参数传递详解
Java参数传递是按值传递,包括对象引用的值。当传递对象时,方法内部修改对象内容会影响原始对象,但不能改变原始引用。示例展示了如何在爬虫代理中使用此机制,通过`ProxySettings`类传递代理信息,方法内可访问但不能更改原始对象。理解这一机制对编写高效无错的Java代码至关重要。
使用Java进行网络采集:代理IP与参数传递详解
|
27天前
|
网络协议 网络架构
网络原理-IP/数据链路层协议
网络原理-IP/数据链路层协议
|
27天前
|
网络协议 安全 网络安全
网络 (TCP/IP 四层协议中常见网络协议)
网络 (TCP/IP 四层协议中常见网络协议)
48 7
|
11天前
|
网络协议 Unix Linux
网络层协议及IP编址
网络层协议及IP编址
|
21天前
|
网络协议 程序员 定位技术
网络原理(6)——IP协议
网络原理(6)——IP协议
24 0

热门文章

最新文章