企业级负载均衡解决方案之二:美团点评四层负载均衡解决方案MGW
一、前言
在互联网厂商业务不断扩展之后,多种服务的入口会导致接入流量的剧增,所以多数基于IPVS或者Nginx等初级负载均衡技术的早期方案都会面临故障或者失效,所以就像google开发meglev一样,许多互联网服务提供商也都纷纷开发自己的分布式软件负载均衡系统作为对外服务的接入口。
美团点评在它的技术博客上表明它也面临这样的接入流量爆炸问题,并且基于继续对IPVS的性能瓶颈的分析,开发了它们自己的四层分布式软件负载均衡系统,参见美团点评的技术博客《MGW——美团点评高性能四层负载均衡》。
转载自https://blog.csdn.net/cloudvtech
二、美团点评传统四层负载均衡技术面临的问题和解决方案
根据美团点评的运维经验总结,传统IPVS面临如下一些性能瓶颈:
- 中断爆炸
- 内核协议栈冗余处理
- 内核锁
- 上下文切换
- 连接一致性
2.1 中断爆炸
在大并发高速接入系统中,每个网卡可能都要以接近于线速的处理能力工作,这时候,每秒产生的中断响应次数是百万级别的,每一个中断都会抢占正在进行负载均衡后续处理的逻辑,造成大量的切换和cache miss,影响性能。所以在大并发的系统中,需要使用基于轮询模式的硬件请求处理模式。
2.2 内核协议栈的冗余处理
IPVS借助于netfilter进行数据包的处理,所以在到达IPVS的处理逻辑之前,需要经过很长的一条内核处理链,造成了IPVS整体处理能力的下降。需要使用内核bypass的技术缩小IPVS应用逻辑和网卡驱动的距离。
而DPDK提供的用户态PMD驱动可以解决2.1和2.2这两个问题。借助于Linux UIO技术,在用户态通过poll的形式直接处理网卡驱动的事件,批量的处理数据包,有很好的性能提升。同时由于DPDK针对Intel处理器架构下面的内存、NUMA等基础计算资源所做的优化,以及丰富的开发库的支持,所以使用DPDK作为基础开发框架。
2.3 内核锁
由于MGW使用FULLNAT作为转发方案,所以需要维护一个session表来追踪数据包源IP和NAT之后IP的对应关系;而在启动RSS的网卡中,同一个源IP的数据包可能会被分发到不同的CPU处理,所以可能存在请求和响应同时在系统中不同的CPU上处理,从而会对同一个session表同时进行读写,所以需要对session表的访问加锁,造成性能下降。
MGW使用CPU与local IP绑定的方式,保证同一个FULLNAT流程中的数据包能串行的在用一个CPU上处理,去掉了锁结构。
2.4 上下文切换
在传统Linux系统中,控制面和数据面是共享CPU的,在大量数据包需要处理的时候,会不断在控制面和数据面的处理逻辑间进行上下文切换,巨大的切换开销和cache miss会降低系统处理能力。
借助DPDK和UIO技术,在用户态绑定CPU到不同的线程进行转发逻辑处理,将合适数据的CPU留给控制面以及内核使用,这样数据面处理过程不再有切换开销,可以显著提升性能。
2.5 连接一致性
在分布式负载均衡系统中,需要保证同一个TCP连接上的数据包能够为同一个后端服务器所处理,所以分布式负载均衡系统需要一个状态同步方案能够保证不同负载均衡节点状态的一致性。
在Meglev中使用google开发的Meglev consistent hashing算法,来保证一定程度的一致性和出错状态较低的连接失败率;而在MGW中,使用了跨节点状态同步的方法来保证负载均衡集群中各个节点FULLNAT session状态的强一致性,保证路由器ECMP转发数据包到任何一个负载均衡节点都能被快速处理,这种强一致性可能会导致一定的控制面性能损失和更长的节点上线时间进行一个session同步的预热过程。同时在后端服务器选择中,使用了Meglev consistent hashing算法来保证出错时候的最小影响范围。
2.6 故障切换
MGW前端的交换机使用物理接口连接MGW的负载均衡服务器的NIC,负载均衡服务器上健康监测程序以500ms间隔监测本服务器的状态,发现异常,快速关闭网卡;在这种情况下,交换机会马上感知端口断电状态并且瞬间关闭到该端口的转发,几乎无延时的且走流量。
MGW宣称可以做到升级操作0丢包,主程序故障0丢包,其他异常(网线等)会有一个最长500ms的丢包(对应于状态监测程序500ms的监测间隔):
转载自https://blog.csdn.net/cloudvtech
三、总结
美团点评的基于DPDK开发的FULLNAT模式MGW在实践中在传统网络环境和overlay大二层环境下都有很好的性能和稳定性,使用在网站数据库、千万级长连接、以及web服务等业务中。
转载自https://blog.csdn.net/cloudvtech
企业级负载均衡解决方案之二:美团点评四层负载均衡解决方案MGW相关推荐
- 常见的服务器集群负载均衡技术:二三四七层负载均衡,DNS、LVS、F5、nginx负载均衡
服务器集群负载均衡技术 LB:load balance负载均衡器.有时也叫做director. DNS负载均衡 DNS负载均衡,最基础的是轮询方式,循环返回不同的服务器IP地址.可以同时返回多个服务器 ...
- MGW——美团点评高性能四层负载均衡
本文整理自美团点评技术沙龙第14期:美团背后的故事-你不知道的美团云. 美团点评技术沙龙由美团点评技术团队主办,每月一期.每期沙龙邀请美团点评及其他互联网公司的技术专家分享来自一线的实践经验,覆盖各主 ...
- java服务架构 之MGW(美团点评高性能四层负载均衡)
为什么80%的码农都做不了架构师?>>> 本文整理自美团点评技术沙龙第14期:美团背后的故事-你不知道的美团云. 美团点评技术沙龙由美团点评技术团队主办,每月一期.每期沙龙邀请 ...
- 四层负载均衡 动静分离和资源分离 Rewrite rewrite伪静态实例
文章目录 四层负载均衡 四层负载均衡特点 查看四层负载均衡语法 四层负载均衡配置 优化配置文件 四层负载均衡日志配置 nginx的TCP负载均衡---端口转发 动静分离 单台的动静分离 多台机器动静分 ...
- f5 会话保持 负载均衡_四层负载均衡和七层负载均衡区别在哪里?
年后至今这段时间工作重心都在调整公司现有API Gateway的系统架构以及对现有技术栈选型.经过对主流互联网网关所实现各种方案的调研,我们在API Gateway前置一层接入层,接入层主要用于实现限 ...
- 负载均衡集群 [ 1 ] ---集群的认识,四层负载,七层负载 ,LVS 实现四层负载均衡
文章目录 负载均衡集群 1.集群是什么? 2.负载均衡集群技术 3.负载均衡集群技术的实现 4.负载均衡分类 5.四层负载均衡(基于IP+端口的负载均衡) 6.七层的负载均衡(基于虚拟的URL或主机I ...
- 企业级负载均衡解决方案之三:唯品会四层负载均衡解决方案VGW
一.前言 和美团点评一样,唯品会也使用DPDK框架来开发自己的四层负载均衡器VGW.其基本技术和文章<企业级负载均衡解决方案之二:美团点评高性能四层负载均衡器MGW>里面提到的技术方案基本 ...
- 企业级负载均衡解决方案之五:阿里四层负载均衡解决方案AGW
一.前言 阿里巴巴在面对大并发大流量接入的时候,基于UIO等优化技术开发了自己四层负载均衡设备AGW,支持FULLNAT功能.在文章<面向C10M时代的MiddleBox之 - 高性能四层负载均 ...
- 企业级负载均衡解决方案之四:爱奇艺四层负载均衡解决方案DPVS
一.前言 DPVS是基于DPDK的高性能四层负载均衡解决方案,从阿里巴巴的alibaba/LVS修改而来.所以基本上同前面美团点评.唯品会等使用的基于DPDK的技术类似. DPVS的开源代码在gith ...
最新文章
- Python 2.7 学习笔记
- 第三十一讲 非线性微分自治方程组及图解
- 中国针状焦行业运营模式与投资风险评估报告2022-2028年
- MySQL整理(三)
- 经济学与计算机学收入,考研心得,计算机专业跨考经济学复习经验谈
- rails_Rails应用程序必备的宝石
- 获取SQL Server数据库增长和收缩事件的详细信息
- 写了一个很矬( cuó)的移动端用户管理
- LaTex问题解决集[2]:解决插入Visio图片有多余边框和白边的问题
- 针对BT防御方案——飞鱼星路由器
- Infor EAM咨询服务调研报告-Infor EAM咨询服务市场地位以及主要的竞争对手
- 计算机服务里wlan功能是什么意思,WLAN是什么意思?WLAN基础知识介绍
- oracle 删除所有外键
- 敏捷开发之用户故事地图
- KPI、KPA、OKR三者的区别
- 如何查看GCC编译器版本
- arduino养花平台
- 华为鸿蒙,告别 PPT,代码全部开源!
- 07 C++简单应用 编写一个摄氏度转华氏摄氏度的函数
- RFID,RC522教程
热门文章
- 关于NetBeans修改字体大小的方法
- 光模块问题能ping通不能路由_电脑不能上网,但是可以Ping通和DNS解析解决办法...
- Java—Disruptor框架
- 损失惨重:近期安全事件频发
- 【树莓派】raspberry pi控制超声波测距
- evp*路由之TYPE2
- PaddlePaddle飞桨《高层API助你快速上手深度学习》『深度学习7日打卡营』--自定义数据集OCEMOTION–中文情感分类
- Matlab导出高清图片、且Word中压缩不失真、转换PDF不失真
- 支持html文件格式的网盘,Word文档支持哪些文件格式?
- 4、Oracle使用网络管理工具—Net Manager管理和配置本地服务命名