最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

eBay 是如何将 Envoy 作为边缘代理的:将硬件负载均衡器替换为软件解决方案

  • 2019-01-20
  • 本文字数:1696 字

    阅读完需:约 6 分钟

eBay是如何将Envoy作为边缘代理的:将硬件负载均衡器替换为软件解决方案

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


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



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


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


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



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


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


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


演讲幻灯片的 PDF 版本可以在 EnvoyCon Sched 页面上“Running Envoy as an Edge Proxy”下载,演讲的录像可以在 CNCF YouTube 频道观看。


查看英文原文:Running Envoy as an Edge Proxy at eBay: Replacing Hardware Load Balancers with a Software Solution


2019-01-20 09:007456

评论 1 条评论

发布
用户头像
mark
2019-01-22 13:27
回复
没有更多了
发现更多内容

统一日志

卢卡多多

日志 6月月更

一问带你彻底了解JVM-Java虚拟机内存区域详解

派大星

JVM

DOM操作

Jason199

js DOM事件 6月月更

服务治理的工作内容

阿泽🧸

微服务 6月月更

Any to Any 实时变声的实现与落地丨RTC Dev Meetup

声网

音频 RTC Dev Meetup 生态专栏 语音处理

如何提高远程办公的效率?| 社区征文

石云升

远程办公 6月月更 初夏征文

军体拳代码

工程师日月

6月月更

Hoo虎符研究院 | 币圈后浪D/Bond一个基于ERC-3475标准开发的去中心化债券生态系统平台

区块链前沿News

Hoo 虎符交易所

vue导航路由

小恺

6月月更

【网络进阶】网络问题排查实例集锦(实战经验分享)

dvlinker

Linux 服务器 网络知识 网络进阶

接口测试(apipost、jmeter和python脚本)——测试工具

Xd

Java 后端 接口测试

新课上线 | 每次 5 分钟,轻松玩转阿里云容器服务!

阿里巴巴云原生

阿里云 云原生 容器服务

linux之我常用的20条命令( 之三)

入门小站

Linux

【网络入门】详解常用的基础网络知识(面试常考内容)

dvlinker

网络知识 TCP与UDP 心跳机制与丢包重传 网络命令 抓包分析

uni-app进阶之创建组件/原生渲染【day9】

恒山其若陋兮

6月月更

深挖数据价值,2022隐私计算大赛开启!

Jessica@数牍

隐私计算 大数据技能大赛 隐匿查询性能优化 隐私求交性能优化

K8S学习笔记--《开篇词|迎难而上,做云原生时代的弄潮儿》

IT蜗壳-Tango

容器 k8s IT蜗壳教学 6月月更

小红书严打买卖账号及刷量作弊行为:必须维护平台的公信力

石头IT视角

JVM调优简要思想及简单案例-新生代回收算法

zarmnosaj

6月月更

leetcode 221. Maximal Square 最大正方形(中等)

okokabcd

LeetCode 动态规划 数据结构与算法

Java 使用 char[] Array 还是 String 存储字符串

HoneyMoose

AWS的运营管理类服务

冯亮

云计算 AWS

在线文本列表批量添加行号工具

入门小站

工具

在线JSON转YAML工具

入门小站

工具

Discourse 新用户可插入媒体的数量

HoneyMoose

Java Core 「13」ReentrantReadWriteLock 再探析

Samson

学习笔记 Java core 6月月更

C语言数据的储存

未见花闻

6月月更

设计微博系统中“微博评论”高性能高可用计算机构

Fan

架构师实战营

透过华为军团看科技之变(四):互动媒体(音乐)

脑极体

Android 修改系统音量及监听

yechaoa

android 6月月更 AudioManager

攻防演练中红队的内网横向扩展

穿过生命散发芬芳

6月月更 攻防演练

eBay是如何将Envoy作为边缘代理的:将硬件负载均衡器替换为软件解决方案_语言 & 开发_Daniel Bryant_InfoQ精选文章