译自:Introduction to Service Mesh 作者:TNS Staff
了解服务网格如何通过 Istio 和 Linkerd 等解决方案改进微服务的安全性、流量管理和可观测性。
服务网格技术解决了在工业规模运行分布式应用程序中的一个基本操作问题:如何在安全、可靠和可观测的方式下管理构成大型分布式应用程序的数十个、数百个甚至数千个微服务之间的交互。
在服务网格技术出现之前,以受控的方式安全可靠地部署和运行应用程序是一项劳动密集型工作,需要对分布式应用程序架构有深入的专业知识,并需要大量的自定义代码。幸运的是,服务网格的引入标准化了工程师用于使微服务在分布式架构中良好协作的工具、架构和技术。
这篇文章提供了决策者在考虑采用服务网格时所需的基本信息。接下来的部分将描述什么是服务网格以及它的工作原理,服务网格提供的优势以及在采用服务网格技术来管理公司分布式应用程序时需要考虑的要点。此外,我们将概述一些特定的服务网格解决方案,并讨论服务网格技术的整体未来。
服务网格是一个基础设施层,它促进微服务之间可靠且易于监控的通信。随着微服务和Kubernetes在组织中越来越流行,对一个系统来监督服务之间通信的需求也在增长。服务网格通过提供流量控制、安全功能和可观测性功能来满足这一需求,而无需修改应用程序代码。
Kubernetes和微服务的出现改变了应用程序的创建和部署方式。最初,开发人员必须将其应用程序集成到网络组件中以管理服务发现、路由、负载平衡和安全性。这种方法在混合编程语言和框架的环境中效率低下且容易出错。
服务网格作为这些挑战的解决方案被引入,它将网络复杂性抽象到基础设施层。服务网格技术注入sidecar代理并使用集中式控制平面来处理流量管理、强制执行安全协议并提供对应用程序性能的洞察。此设置简化了开发过程,并提高了微服务驱动应用程序的可靠性和效率。
服务网格充当包含分布式应用程序中运行的服务的层,它促进微服务之间可靠且可见的通信。它监督服务如何相互交互,处理诸如服务发现、均匀分配工作负载、从故障中恢复、收集指标和监控性能等任务。
通过将这些活动与应用程序代码分离,服务网格允许开发人员专注于核心业务流程,而不会被网络管理挑战所拖累。一般来说,服务网格由两个元素组成:sidecar代理和控制平面。
Sidecar代理:Sidecar代理与每个微服务实例一起工作。它们监督网络数据流向和流出服务,负责处理诸如定向流量、分配负载、验证身份和保护信息等任务。使用sidecar代理可确保每个服务都能安全有效地与网络中的其他服务交互。
控制平面:控制平面监督服务网格。它处理诸如设置和监督sidecar代理、实施策略和管理整个网格中的路由规则等任务。此外,控制平面从代理收集遥测信息,以提供对系统效率和运行状况的洞察。
数据平面:数据平面与管理服务之间实时通信的sidecar代理一起工作。它的作用是处理传出请求并实施由控制平面定义的设置和规则。
服务发现:在服务的世界中,服务发现扮演着使服务能够彼此查找和交互的角色。在服务网格设置中,Sidecar 代理负责服务发现任务,确保请求被定向到正确的服务实例。这种灵活的发现方法使服务能够无缝调整,无需人工干预。
安全通信:服务网格通过加密服务之间的通信来增强安全性。Sidecar 代理负责 TLS (mTLS) 身份验证,确保只有经过授权的服务才能相互交互。这种安全通信层保护信息并阻止恶意行为者进入底层服务。
智能路由:服务网格支持基于预设规则的流量路由。这包括诸如流量分割之类的功能,允许您将流量定向到服务版本以进行测试或分阶段发布。流量控制确保请求在服务实例之间均匀分布,从而提高性能和可靠性。
负载均衡:服务网格支持负载均衡。Sidecar 代理在服务实例之间均匀分布请求,以防止任何一个实例过载。这种工作负载的分布有助于确保服务保持高可用性和最佳性能。
可观测性和监控能力
监控工具:服务网格提供强大的可观测性功能,利用诸如Jaeger进行追踪和Prometheus进行指标收集的工具。这些工具监控服务的性能和健康状况,提供对流量模式、延迟和错误率的洞察。
分布式追踪:分布式追踪对于理解跨微服务的请求流程至关重要。通过捕获追踪数据,服务网格允许团队更有效地查明性能瓶颈并诊断问题。追踪提供了服务交互的全面视图,有助于优化和排查复杂系统。
遥测数据:遥测是一种服务网格被配置为收集、存储和报告有关网格操作活动的数据的功能。通常,服务网格使用内置的遥测机制(例如日志记录),但也可以将服务网格配置为使用 Jaeger 进行追踪和 Prometheus 收集指标数据(例如请求/响应活动)。这些工具收集的数据对于监控系统的健康状况和性能至关重要,从而能够主动管理并快速响应问题。
服务网格通过执行安全规则和流程来提高基于微服务的应用程序的安全性。通过监督服务之间的交互,服务网格确保传输的信息被加密并受到保护,免受恶意行为者的入侵。
相互 TLS (mTLS) 身份验证是服务网格的一个方面,它能够实现端到端加密,同时也能确认服务的合法性。此外,服务网格支持详细的访问控制策略,确保只有授权的服务才能相互交互。
服务网格的一大优点是它可以提供微服务设置中正在发生的事情的视图。当它与 Prometheus(用于收集指标)和 Jaeger(用于追踪)等工具一起工作时,服务网格允许您深入了解服务的运行情况。这些工具帮助团队监控诸如请求时间、错误和流量流向等方面,从而更容易快速发现和解决问题。
服务网格从控制平面收集的数据有助于确保系统平稳运行并保持可靠性。
服务网格提供流量管理功能,以提高微服务的效率和可靠性。高级路由选项(如流量分割)使团队能够将一部分流量定向到服务版本以进行测试或逐步实施。此功能对于部署和金丝雀发布至关重要。
此外,服务网格通过在服务实例之间分配传入请求来提供负载均衡功能,以避免过载并保证持续可用性。这些流量管理功能有助于确保响应迅速的用户交互。
通过将网络管理职责与应用程序代码分离,服务网格使开发团队和运维团队能够更轻松地高效处理任务。开发人员可以专注于创建业务逻辑,而无需处理将服务发现、负载均衡或安全协议集成到其应用程序中。运维团队可以利用服务网格控制平面提供的策略和配置管理。这种简化的方法有助于降低管理微服务的复杂性并提高效率。
当您决定实施服务网格时,务必确保它与您的设置良好匹配。服务网格应与您已有的工具、平台和流程顺利协同工作,以确保平稳过渡。
检查服务网格是否可以轻松地与您的容器编排平台(例如 Kubernetes)、您的 CI/CD 管道和监控解决方案协同工作。集成的服务网格有助于减少中断,并最大限度地利用您已经使用的基础设施和工具。
选择服务网格时,务必考虑可扩展性。确保服务网格能够适应您的微服务设置的规模,并能够随着应用程序的增长而适应。评估服务网格如何影响系统的性能以及 sidecar 代理添加的负载。可扩展的服务网格在添加更多服务和承受更高流量级别时,应提供性能和最小的延迟。
选择最佳服务网格解决方案时,务必考虑服务网格的各个方面,例如其功能集、用户友好性、社区支持和供应商支持。评估贵组织的需求。
比较不同服务网格解决方案的功能。一些选项包括Istio、Linkerd、HashiCorp的Consul和AWSApp Mesh。记住在最终确定选择时,要考虑社区支持级别、文档质量和企业功能等因素。
Istio 是一款广泛采用的开源服务网格,它提供了一套全面的流量管理、安全和可观测性功能。它使用Envoy作为数据平面管理技术,并提供强大的策略执行、遥测收集和负载均衡功能。Istio 的控制平面管理配置和策略,确保服务之间一致且安全的通信。
Linkerd 是另一个流行的开源服务网格,旨在实现简单性和高性能。Linkerd 最初由Buoyant开发,专注于提供轻量级、高性能的服务网格功能。它特别适合 Kubernetes 环境,并提供诸如服务发现、负载均衡和通过集成工具进行可观测性等功能。
Consul 由 HashiCorp 开发,是一个服务网格解决方案,它强调服务发现和安全的服务间通信。它提供了一个强大的控制平面来管理服务配置和策略,并内置支持服务发现、健康检查和分布式键值存储。Consul 与各种平台良好集成,可用于云原生和传统环境。
AWS App Mesh 是 Amazon Web Services (AWS) 提供的托管服务网格产品,它简化了在 AWS 上管理微服务的过程。它与其他 AWS 服务无缝集成,并提供诸如流量管理、安全和可观测性等功能。AWS App Mesh 使用 Envoy 作为其数据平面管理技术,并提供完全托管的控制平面,使其成为使用 AWS 基础设施的组织的有吸引力的选择。
由于服务网格能够简化微服务管理并增强安全性,因此它们在企业环境中越来越受欢迎。随着越来越多的组织转向微服务架构,由于需要强大的流量管理、可观测性和安全功能,服务网格的采用率预计会增长。
服务网格的未来可能会持续增强安全性和可观测性功能。与高级安全协议的集成、自动策略执行和改进的遥测收集将帮助组织保持高水平的安全性和性能。新型可观测性工具和技术的开发将进一步增强监控和管理复杂微服务环境的能力。
人工智能和机器学习将在服务网格的演变中发挥重要作用。通过利用人工智能和机器学习,服务网格可以提供更智能的流量管理、异常检测和预测分析。这些高级功能将使组织能够主动解决性能问题,优化资源利用率并提高整体系统可靠性。
在The New Stack,我们致力于让您了解服务网格技术的最新发展和最佳实践。我们的平台提供深入的文章、教程和案例研究,涵盖服务网格的各个方面,包括工具评论、实施策略和行业趋势。
我们提供来自行业专家的见解,他们分享他们在服务网格方面的经验和知识。从实际实施中学习,并获得克服常见挑战和取得成功结果的宝贵技巧。
定期访问我们的网站,随时了解服务网格的最新新闻和发展。我们的内容帮助您走在曲线前面,确保您可以访问最新的信息和资源。加入我们由开发人员、DevOps专业人员和对服务网格技术充满热情的IT领导者组成的社区,并利用我们全面的资源来增强您的实践。访问The New Stack网站thenewstack.io以获取最新更新并浏览我们广泛的服务网格内容集。