博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eBay是如何将Envoy作为边缘代理的:将硬件负载均衡器替换为软件解决方案
阅读量:5834 次
发布时间:2019-06-18

本文共 1726 字,大约阅读时间需要 5 分钟。

在美国西雅图举行的首届会议上,来自eBay的工程团队讨论了如何将Envoy作为网络边缘,以替代基于硬件的负载均衡器。他们的关键经验包括,测试至关重要,这样能够验证跨一系列真实场景的性能特征;必须从组织和技术的角度仔细控制新旧边缘系统之间的迁移;“可编程的边缘”会带来很多的优势,但是也有一些挑战。

Bala Madhavan和是来自eBay的技术人员,均为软件工程师,他们首先讨论了eBay在美国的数据中心,但是他们要在全球范围内运行连接点(points of presence,PoP)以减少延迟,从而为终端用户提供更好性能。他们使用了“软件支撑的基础设施”,在每个PoP上部署了一个Kubernetes集群,并且在每个集群的边缘上有一个“north-south”网关,用来管理所有针对外部的传入和传出流量。

\"image\"

eBay的边缘团队在每个Kubernetes集群中将Envoy运行在多个容器里面。针对就绪(readiness)和存活(liveness)状态的探针会确保容器能够按照预期的方式运行,并确保所有动态恢复过程都能顺利完成。7层路由和部署控制是由一个定制来进行管理的,他们还使用注解实现自定义特性的规范。除此之外,他们还实现了一个自定义的发现服务,用于处理如下的Envoy管理,并负责进行部署和路由:路由发现服务(routing discovery services,RDS)、监听器发现服务(listener discovery service,LDS)、端点发现服务(endpoint discovery service,EDS)以及集群发现服务(cluster discovery service,CDS)。

从基于硬件的负载均衡器到Envoy支撑的边缘解决方案的迁移是渐进式的。在迁移过程中,第一步就是识别和实现已有方案和新Envoy方案之间的差异,eBay团队已经将相关的代码贡献给了上游的。另外,他们还添加了对专有证书管理系统集成的支持,并且对data plane进行了一些定制(这些定制功能还没有往上游贡献)。它们会处理连接预取(prefetching),根据特定的需求丢弃请求或者将请求重置到特定的路由,而且提供了一个“默认的上游集群”来优雅地进行错误处理。支持,同时添加了对谷歌新的支持,以及尚未明确说明的“SSL和TCP优化”。

Madhavan和Yu展示了响应时间的图表,用以说明新的基于Envoy的实现要比之前传统的硬件负载均衡器表现更好。它们还以Envoy HTTP过滤器的方式实现了一个额外的缓存层,这个缓存层支持动态对象缓存,能够使用外部缓存存储和在多个缓存存储之间共享缓存的数据,首字节响应时间(time-to-first-byte,TTFB)提高了一个数量级。

\"image\"

在可观察性方面,在每个PoP上会运行一个集群,另外还有一个中心化的用来实现可视化。告警是使用和外部检查来实现的,还包括用来进行异常探测的静态和动态阈值。整个边缘技术栈是通过在Kubernetes中进行安装和配置的,Helm Chart会作为部署的唯一来源。

总结一下所学习到的经验,最重要的就是需要进行测试。硬件和软件的交叉校验是非常重要的,为了确保用户不会遇到性能下降的问题,实时用户监控(real user monitoring,RUM)是必不可少的。DC和PoP的故障恢复要进行测试,还需要运行额外的。“平滑工作负载迁移”的经验包括建议进行跨功能(团队)的规划和验证,以可控的方式在边缘解决方案之间切换流量,同时密切观察运维指标。

他们提到的挑战包括运行新系统时增加PoP的数量所带来的运维操作、跨PoP探测配置漂移以及为集群管理提供工具支持。通过API驱动Envoy代理的方式实现“可编程的边缘”会提供很多的优势,但是也遇到了很多的挑战。例如,control plane是“自行构建还是集成”、与已有的(遗留)组件进行集成、如何操作指标和相关的性能数据,以及硬件专家所组成的运维团队如何调试和解决基于软件的方案。

演讲幻灯片的PDF版本可以在EnvoyCon Sched页面上“”下载,可以在CNCF YouTube频道观看。

查看英文原文:

转载地址:http://sbycx.baihongyu.com/

你可能感兴趣的文章
FreeMarker-Built-ins for strings
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
我理想中的前端工作流
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
Android状态栏实现沉浸式模式
查看>>
java只能的round,ceil,floor方法的使用
查看>>
新开的博客,为自己祝贺一下
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
我的2014-相对奢侈的生活
查看>>
Java设计模式
查看>>
Spring Cloud 微服务分布式链路跟踪 Sleuth 与 Zipkin
查看>>
ORM数据库框架 SQLite 常用数据库框架比较 MD
查看>>
华为OJ 名字美丽度
查看>>
微信公众号与APP微信第三方登录账号打通
查看>>
Windows 下最佳的 C++ 开发的 IDE 是什么?
查看>>
软件工程师成长为架构师必备的十项技能
查看>>
python 异常
查看>>