logo

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

作者:六道口王菲2021.01.23 01:29浏览量:529

简介:虽然服务网格环境可以增强微服务通信的流量管理和安全性,也可以提供有关这些应用程序中发生的事情的完整描述,但想要实现它、管理它却不那么容易。

作者 | 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 架构的微服务平台和自研函数计算服务三部分,每部分均可独立提供服务。

 

更多百度技术资讯,欢迎关注微信公众号『百度开发者中心』,等你哟!~

相关文章推荐

发表评论