7

警惕!别让你的 Service Mesh 变成 Service Mess

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI2NDc5MDYzMA%3D%3D&%3Bmid=2247486644&%3Bidx=1&%3Bsn=36611b3a18d8ea335fc4c98bf1dfb673
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

q6j6juA.jpg!mobile

作者 | Pankaj Gupta

编译 | 云原生计算编辑部

原文链接:

https://containerjournal.com/topics/container-management/dont-let-your-service-mesh-become-a-service-mess/

导读: 服务网格(Service Mesh)是微服务领域的热门话题,它通常被认为是云原生应用的“北极星架构”。虽然服务网格环境可以增强微服务通信的流量管理和安全性,也可以提供有关这些应用程序中发生的事情的完整描述,但想要实现它、管理它却不那么容易。

本文将给出一些建议来帮助您简化这个实现、管理过程。

01

确定重要事项并规划实现路线

对许多公司而言,在微服务之间启用零信任网络已成为当务之急,但是每个组织的需求却不尽相同。也许您需要服务网格可以提供的高级流量管理,也许您需要 Sidecar 代理提供的增强的可观察性。

无论您有什么需求,都必须对它们进行优先级排序,并在正式开始实施之前获得开发人员,SRE 和 SecOps 团队的支持,这样您才可以集中精力进行工作。

注意,服务网格的实现可能会由于您试图“一次实现所有一切”的贪婪而失败。

一旦能够正确规划目标的优先级,就可以为服务网格之旅创建路线图。路线图应列出您解决实施的顺序,并确定每个步骤如何与 IT 和业务目标保持一致。

02

如何明智地选择服务网格?

尽管有许多可用的服务网格控制面,但它们并不完全相同,并且每个都有不同的优势。

选择服务网格时, 首先要确保它支持你要运行的环境。 如果你被绑定到诸如 Mesos 或您自己的专有/遗留架构或特定的公共云之类的系统中,请检查以确保它受到支持。

其次,确定要部署的服务网格控制面。 尽管所有服务网格控制平面都提供相似的基本功能,但它们具有不同的功能和成熟度。要确定服务网格控制面是否适合您的用例,需要研究它如何在对您重要的区域中堆积。目前,Istio 处于领先地位。例如,Istio 在相互 TLS 方面领先于微服务之间的零信任安全性,而其他服务仍在追赶。

第三,评估你拥有的技能和资源能让你轻松管理多少复杂性。 当你添加功能时,增加服务网格的大小或者添加多个集群,事情就会变得更加复杂。记住,人们很容易低估这些复杂性,因为你不知道未来会发生什么。

根据关键的“必须具备”项:可观察性,安全性和流量管理以及您的组织已经具备的技能,选择最佳的服务网格 架构。问问自己,每个 pod 是否真的需要一个 sidecar,或者是否有可以满足您需求的替代或变体架构,例如 Citrix®Service Mesh Lite。

03

为突发事件和复杂性做好准备

无论您提前做了多少计划,在实现服务网格时,您都会遇到许多意想不到的事情。所以计划,计划,再计划。你未来会很感谢自己这么做~

04

要知道代理Proxies并不那么透明

通常,当微服务调用不存在或压力较大的资源时,该调用会超时。代理的存在会改变应用程序超时,因为每个微服务都认为自己几乎立即收到了其请求。

您的应用程序超时可能需要仔细调整,这里提供了超时的最佳做法:

http://github.com/chemicL/envoy-timeouts 

另外,代理对 HTTP 流量也不透明。为了遵从一致性和更好的资源消耗,许多代理将 HTTP 头转换为小写,事实上,HTTP/2 报头字段要求全部小写。如果你的应用程序依赖于区分大小写的 HTTP 头,则代理的行为可能会破坏它。 你需要确保代理通信的细微差别不会破坏你的应用程序,并准备好对代理或应用程序进行微调,以适应特定的生态系统。

05

尽早测试,经常测试

服务网格是一个复杂的分布式系统,具有许多活动部件,并且有很多发生故障的机会。当应用程序失败时,你需要弄清楚这是应用程序、sidecar 还是其他什么问题。因此,请确保您的 实现是渐进的、监控是持续的以及测试是频繁的。

为此,必须具有完整的可观察性堆栈。包括日志记录,指标,分布式跟踪和服务图。分布式跟踪和服务图对于服务可观察性至关重要。分布式跟踪监视器监视通过微服务的请求流,以通过每个微服务跃点建立延迟映射,并帮助你解决延迟问题。服务图是微服务及其相互依存关系和运行状况的动态图形表示,它提供了一种简便的方法来可视化您的环境并发现出现的问题。

虽然这似乎是常识,但持续测试经常被遗忘或跳过,这会给相关人员带来挫败感,并经常导致项目脱轨。积极主动总是没错的,可以考虑编写一个端到端、24×7的测试服务,该服务可以持续测试您的微服务。

06

为海啸般涌来的修订做好准备

今天只是几个 sidecar,明天就可能变成数千个 sidecar,需要有所准备。您可能需要对默认的 CPU 和 RAM 分配进行调优,以最大程度地减少资源消耗。同样,一旦开始实现服务网格,修订的版本就会如潮水般涌向您。 必须要有一个计划,在不中断生产应用程序的情况下对数千个 sidecar 代理进行升级。 想象一下,这就像必须在没有人注意到的情况下,在大篷车里更换每一辆摩托车上的每一辆侧斗——而车上却坐着人。

人们说聪明是从你的错误中学习,但智慧是从别人的错误中学习。服务网格在安全性、高级流量管理和可观察性方面承诺了很多,但它们实现起来可能很复杂。仔细计划,并准备好在过程中做出调整,你的过程将会更顺利——甚至可能更有趣!

07

关于百度智能云云原生平台

百度智能云云原生平台,为客户建设容器化和无服务器化的基础设施,提供企业级的微服务治理能力,同时集成源自百度自身多年实践的 DevOps 工具链。保障开发者享受到高效、灵活、弹性的开发与运维体验,助力企业更高效率低风险地构建云原生应用,广泛应用于金融、互联网、制造等各行各业的云原生转型阶段。

其中 天合 Stack 是私有化云原生技术中台, 包含基于 Kubernetes 的容器云平台、基于 Istio 和 SpringCloud 架构的微服务平台和自研函数计算服务三部分,每部分均可独立提供服务。

点击 【阅读原文】 ,查看 百度云原生平台 详情。

推荐阅读:

最新!最全面!Istio 服务网格部署实践

云原生之微服务新观

云原生时代,你应该了解的Service Mesh

重磅!云原生计算交流群成立

扫码添加小助手即可申请加入,一定要备注: 名字-公司/学校-地区 ,根据格式备注,才能通过且邀请进群。

qyEV3ar.jpg!mobile

6fAJreA.png!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK