他们将生产环境从 nginx 迁移到 envoy教程

  • 选择代理
  • 克服反对意见
  • 服务提供方的好处
  • 可扩展性
  • 服务使用方的好处
    • 更丰富的群集模型
    • 多协议支持
    • 动态服务发现
  • 网络策略
  • 监测
  • 如何更快迁移

导读:随着Service Mesh在最近一年进入人们的视野,Envoy 作为其中很关键的组件,也开始被广大技术人员熟悉。本文作者所在公司已经从 nginx 迁移到 Envoy。

随着我们下一代产品发布,我们将代理软件从 nginx 切换到 Envoy 。

我们很早就开始关注 Envoy。 公司的一些人之前在 Twitter 工作,其中一些人和 Matt Klein 一起组建了 Twitter 的边缘代理 TFE。 我们知道 Lyft 正在计划建立一个基于 TFE 的开源代理模型,我们对此很感兴趣。 不幸的是,我们刚开始做自己产品的时候它还没有准备好,所以起初我们还是使用 nginx。

我们很高兴看到 Envoy 的最初功能集合中包含了大量灵活运用微服务的想法。 我们更加兴奋地看到它的社区已经成型并且技术已经成熟。 现在 Envoy 提供的功能(相比于 nginx)可以使我们能够更快地为客户提供新功能。当然,Envoy 的功能路线图也非常令人兴奋。

选择代理

在启动Turbine Labs时,我们就知道负载均衡将成为我们基础架构的关键组成部分。

在2015年秋季的时候,代理软件并不是我们今天看到的样子。

我们选择 nginx 是因为它轻巧,经过大量生产环境测试,开源,相对来说易于扩展,并且拥有蓬勃发展的用户群体。然而我们必须做很多额外的工作才能在 nginx 之上构建一个全功能的流量管理解决方案。

服务发现,统计管理和更细粒度的负载均衡是现代基础架构的关键特性。 我们在 nginx 之上来实现这些功能,虽然已经花了很长时间,但仍有很多工作要做。

相比之下,Envoy 有很多非常有用功能(如 gRPC,tracing 等等),同时提供类似(或更好)的性能,稳定性和社区。

克服反对意见

采用任何新技术都需要考虑相反的意见。 由于我们已经部署了代理服务,不仅需要考虑到自己的问题,还需要考虑到客户提出的问题。 对于开源项目,这些问题通常分为以下几类:

我们一直密切关注 Envoy 的开发进展,并对它的成熟速度感到惊讶。已经有不少公司在生产环境使用 Envoy。Envoy 现在是一个 CNCF 项目,这意味着社区是透明和开放的。 代码贡献者来自很多公司,我们也在其中。

成本也是需要考虑的因素。随着 sidecars 成为更普遍的部署方式,代理会得到更广泛的应用。 虽然许多客户将继续集中式运行负载均衡,但我们希望代理软件可以优雅地支持边车部署模型。

Envoy 采用 C++ 11 编写,运行时占用的内存很少,与依赖较重运行时的代理相比,显着减少了 sidecars 部署的负担。

服务提供方的好处

应始终谨慎对待技术堆栈的大型更改。我们没有轻易转向 Envoy,但我们获得的好处以及我们可以传递给我们客户的好处非常显著。

可管理性

从一开始,Envoy 就被设计为可以大规模管理。 我们已经做了很多工作来使我们的基于 nginx 的代理可管理,但是这个配置接口不太容易地暴露给其他工具。

Envoy 数据平面 API 为其集中管理提供了一个开放标准。 我们可以提供一个集中的,开放的控制点,而不是复制配置文件。

可扩展性

nginx 是一个非常成功,稳定的开源项目。 其配置文件和模块生态系统具有较大的外围应用,并有大量现有用户支持。 给 nginx 贡献核心代码是非常有挑战性的,这导致在许多情况下需要编写自定义模块或 Lua 脚本以扩展其功能。

Envoy 更为聚焦,使用更为现代的语言支持改变代理行为。过去几个月中,我们向 Envoy 提交了超过 30 个功能,其中包括 OSX 构建 ,子集负载均衡和 upstream 日志记录等主要功能。

服务使用方的好处

更丰富的群集模型

我们在 nginx 上做了一些扩展,从而增强其 upstream 模型并添加更多细节。在同时部署同一服务的多个版本时,仅仅了解实例的主机和端口是不够的。

Envoy(通过我们贡献的补丁)允许将任意元数据附加到服务实例,以及定义基于该元数据定义路由规则。这使先进的流量管理技术成为可能,例如增量发布, 蓝/绿版本,无缝整体分解和生产测试 。

多协议支持

NGINX支持很多协议。 Envoy 的架构可以轻松地添加对新协议的支持,并且它也提供了多种协议支持。 虽然 HTTP 占据了互联网流量的很大一部分,但增加对 Redis,Mongo,Dynamo,websockets 和 gRPC 流量的可见性也是非常重要的。

动态服务发现

随着微服务,容器变得越来越流行,服务拓扑变得更加动态。配置文件中的服务器列表很快就会过时。 Envoy 使用一种最终一致的模型来进行 API 驱动的服务发现,并且能够很好地处理变化频繁的实例。

我们目前从各种平台收集数据,而 Envoy 的群集发现服务(CDS)为我们提供了比固定配置文件更自然的抽象。 Envoy 通过支持监听器发现服务(LDS)和路由发现服务(RDS)支持路由拓扑发现,从而进一步加强了这一点。 最终允许从中央控制点动态重新配置大部分服务拓扑,这非常有用。

网络策略

微服务意味着网络更加依赖于服务抽象边界。 随着相互依赖的服务数量日渐增长,系统100%没问题的时间会变少,整个系统经常有部分功能处于降级状态。

管理网络策略(如重试,超时和速率限制)对于在面对系统健康问题时保持顺畅的客户体验至关重要。Envoy 允许在代理(每个路由) 和客户端(每个请求的基础上)配置这些策略。 这可以灵活地实现(难以用 nginx 实现的)极细粒度弹性策略。

监测

Envoy 使用行业标准的请求日志,还提供与各种监测系统的集成。 它还提供对 Zipkin 和 Lightstep 的原生支持,以便追踪整个请求链。

如何更快迁移

我们对迁移到 Envoy 的过程非常满意。 它稳定,快速,轻便,并拥有一个伟大的社区。 它的架构使其非常适合微服务,但它同样适合做边缘代理。 作为基础服务,使用配置API而非静态配置文件真是太棒了。

如果你已经开始使用 Envoy,或者正在考虑迁移到 Envoy,那就可以考虑使用我们的服务。凭借广泛的服务发现和卓越的管理界面,我们可以帮助您快速,平稳地部署和运营 Envoy。

英文原文:

https://blog.turbinelabs.io/our-move-to-envoy-bfeb08aa822d

更多 Envoy 介绍:

https://www.envoyproxy.io/

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/server/1001.html

(0)
打赏 微信扫一扫 微信扫一扫
云大使的头像云大使
上一篇 2018年10月16日 下午9:19
下一篇 2018年10月16日 下午9:19

相关推荐

  • linux-centos下通过pid查看进程的绝对路径的教程

    今天服务器CPU突然占用率很高 、进行查看 是mysql 占用了很大的进程,。如何查找mysql目录呢 。 netstat -nlp pid拿到15330,然后 cd /proc/15330 由于linux在启动一个进程时,会在/proc下创建一个以PID命名的文件夹,该进程的信息存在该文件夹下。在该文件夹下有一个名为exe的文件,该文件指向了具体的命令文件…

    2021年3月4日
    2.7K00
  • 阿里云CentOS/linux主机挂载OSS存储服务步骤及教程

    前言 现在很多朋友选择使用了阿里云、如何在阿里云ecs主机上挂载oss存储,在服务器上通过本地文件系统操作OSS 上的对象?阿里云提供一个ossfs的程序,不用我们再次使用api开发, 直接就能使用。步骤比较简单,按照官方文档基本可以完成。 准备条件 您需要有一个ecs云主机,创建Access Key和对应的OSS对象。 安装依赖 yum install a…

    2018年10月10日
    6.0K00
  • 关于ubuntu下安装完PHP+Apache后,无法解析php的解决方案-Linux运维日志

    有需要服务器方面的需求,可以联系博主QQ 7271895(收费) 安装完之后,html文件可以正常解析,php源码直接输出,不能被解析。 通常情况下是apache未加载php模块,通常情况下需要修改httpd.conf文件,但是在ubuntu下为apache2.conf文件 修改如下: 设置 LoadModule php5_module /usr/lib/a…

    服务器运维 2018年9月30日
    3.3K00
  • 学派吧-linux/centos下zip文件解压出现乱码怎么办?-linux教程

    本篇文章主要介绍了解决linux下zip文件解压乱码问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 原因 由于zip格式并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,因此,导致这些zip文件在Linux下解压时出现乱码问题,因为Linux下的默认编码是UTF8。 解决方案一 使用7z解压。 安装p7zip和c…

    服务器运维 2018年12月12日
    2.0K00
  • nginx 和 frp共用80端口教程

    之前用frp做内网穿透,把内网的服务器开放到外网。 如果是http服务的话,80端口的做法是使用二级域名xxx做个A记录指一台没有nginx 之类的服务器IP,然后用浏览器打开xxx.example.com就打开了。其他端口是在frpc.ini里指定的,就加个端口号如xxx.example.com:1234就打开了,这种情况用于外网服务器已经有nginx在运…

    服务器运维 2018年10月16日
    4.9K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部
---------官方优惠叠加渠道折扣:通过我们购买腾讯云/阿里云,价格更低,服务更优。更有专业配置指导与服务。微信同步:18838889666----