阿里云洛神云网络集中式网关丨技术解读与产品实践

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 随着云原生在生产领域的大规模使用,服务网格这一方案也越来越受到开发/运维人员的重视,其中当之无愧最值得注意的就是Istio。Istio原生的方案是使用SideCar Per-Pod的转发方式,而在9月初的时候Istio社区又提出了Ambient Mesh方案,简单来说,Ambient Mesh为了解决SideCar的一些缺陷,更倾向于使用共享代理的方式对4/7流量进行转发。而我们做的一些工作主要是摒弃掉了SideCar,对转发/控制平面进行了一些改造工作,通过使用一个集群内共享的转发节点来接管整个集群的东西向流量,这个共享的转发节点就是Alibaba集中式网关。

什么是服务网格?

提到服务网格(Service Mesh),就必须先介绍一下微服务,根据维基百科的定义:微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关的 API 集相互通信。简单来说,服务网格(Service Mesh)是微服务架构中一种解决方案、一种实现方法,而服务网格这种解决方案可能又有不同的代码实现。在微服务架构中的解决方案大致可以分为两种Smart Client和Local Proxy,其中Local Proxy就是我们所说的服务网格,其中比较有代表性的实现有Istio、Linkerd、NginxMesh等;而Smart Client比较有代表性的实现有Dubbo、Spring Cloud、Thrift、Proxygen等。下面我们先介绍微服务领域中涉及到比较经典的两种方案,再来详细探讨我们本文的主题。


Smart Client通过抽象分布式系统中的各种语义,例如服务发现、负载均衡、服务熔断等,实现各种通用功能,避免了每个服务都自己去实现一套分布式系统的语义,使研发人员可以专注于业务逻辑开发,但是也是需要了解部分框架代码,没有百分百解耦。Smart Client一般是与业务代码强耦合的,以SDK的方式嵌入到了应用程序中,并且Smart Client的方案是与开发语言绑定的,如果换一种开发语言,那原本的Smart Client架构也就不能用了。微服务框架本身与业务程序完全揉到了一起,导致大大提高了业务维护的运维难度。

image.png

Local Proxy方案介绍

Local Proxy方案采用进程级别进行服务治理,利用进程隔离代理的方式,规避了Smart Client的语言相关以及应用耦合的问题,这一类方案就是服务网格(Service Mesh),服务网格也是将分布式服务的通信部分抽象出来,和业务进程部署在一起,通过本地独立进程的方式,将业务应用的流量全部劫持到这个本地的独立进程上,接管服务的流量,而在这个进程中实现负载均衡、服务发现、认证授权、服务熔断等功能,William Morgan(Service Mesh)的发明者对服务网格的定义如下:“服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务网格保证请求在这些拓扑中可靠地穿梭。在实际应用当中,服务网格通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但对应用程序透明。”

image.pngISTIO 介绍

上面我们有简单提到,Service Mesh中有众多的实现方案,其中最重要、最闪耀的无疑是Istio方案,下面我们介绍一下Istio以及Istio有哪些优缺点。Istio在架构上可分为“控制面”和“数据面”,其中数据面是由一组Sidecar组成,这些Sidecar是基于Envoy建立的,与业务进程同属于一个网络平面,接管所有业务进程的出入流量;而控制面负责管理和配置服务网格中的路由信息,将用户的配置下发到数据面,达到用户想要的效果,其中控制面分为Pilot、Citadel、Galley。Pilot负责流量管理、路由配置以及服务发现等;Citadel通过管理用户身份验证、证书和凭证管理来提供服务之间的安全通信;Galley负责配置管理、验证配置信息的格式以及内容的正确性。


image.png

Istio的优点在于功能齐全,与Kubernetes可以做到完美结合,在流量管理、请求路由、负载均衡、可观测性、安全校验等功能上都提供了完善的支持。但是在Sidecar下,每个pod都需要有一个Sidecar,可能造成代理数量过多和资源浪费,尤其在业务高峰期,会出现业务进程与Sidecar资源争抢的情况,服务之间互访至少需要经过两个Sidecar,也引入了额外的时延开销,流量劫持依赖iptables等手段,即使通过ebpf进行了优化,但是在减少应用层时延或者跨Node流量场景中也是爱莫能助的。另外Istio的上手成本高,Sidecar、istiod等组件还是与业务进程共存在一个平面中,每次的业务升级都会伴随着Sidecar的销毁以及重建,这要求业务研发人员想要使用到Istio服务,就必须去运维Kubernetes、Istio这一整个体系,而大多数业务场景中使用到的服务治理框架例如spring cloud、dubbo等也可以满足需求,缺乏足够的驱动力迁移Istio,门槛又相对较高,这就导致Istio在实际应用中落地还是比较少的。

阿里云集中式网关

针对上面Istio的Sidecar Per Pod方案的一些痛点,例如研发人员运维成本高、Sidecar带来的资源消耗和时延消耗等问题;业界也有一些方案进行优化,例如Sidecar Per Node方案,将Sidecar从Pod提取到Node上,同Node的网络访问直接通过协议栈Socket层进行转换,从而可以降低时延消耗。而我们基于Istio提出了一种集中式网关的处理方案(alibaba-centralized-mesh-gateway),在集群中引入一个InternalGateway来承载东西向流量,Pod和Node上都卸载掉了Sidecar,避免了流量劫持这一步的损耗,Pod资源完全由业务应用独占,而InternalGateway可以独立部署以及集中式管理,与集群中所有的业务组件完全解耦,在升级运维的过程中,可将业务与网关集群完全剥离开,而InternalGateway通过多副本、多可用区部署等方式来保证高可用。

image.png

同样的,集中式网关也分为数据面和控制面,控制面的配置下发是基于Istio的pilot等组件,数据面是基于envoy、独立部署的一个网关集群。在集中式网关架构中,共有三个角色:IstiodInternalGatewayInternalGateway Controller,其中Istiod的作用与在Istio中的一致,主要是负责watch用户配置,向转发平面(envoy)进行配置下发、安全验证、路由管理等操作,InternalGateway,用来做整个集群的东西向流量转发;InternalGateway Controller的作用是劫持集群内的Service服务,将流量Rewrite到InternalGateway上。

image.png

当用户使用virtual service、destination等对象创建路由规则时,Istiod和InternalGateway Controller会将watch到的对象分别进行分析,生成对应的配置,然后分别下发到envoy集中式网关和CoreDNS,当client pod发起对server pod的访问时,server的dns记录已经被rewrite到了集中式网关,因此流量无需经过pod上iptables、sidecar等路径,直接会将流量从协议栈发送到internalGateway,而internalGateway根据用户配置的路由规则、访问策略,对访问流量进行处理,然后发送到server pod上。

image.png

集中式网关使用指南

我们以计算机领域中经典的helloworld服务为例,介绍如何在Kubernetes集群中使用阿里巴巴集中式网关:首先我们在Kubernetes安装部署好集中式网关服务,集群中显示如下内容表示部署成功:

image.png

image.png

image.png

发起对HelloWorld Service的访问,可以看到,流量是经过internalGateway到达的HelloWorld Service通过上面简单的例子,我们可以看到,在一键部署集中式网关之后,用户只需要像之前一样创建Kubernetes或者Istio中的CRD等资源,就可以将服务应用部署起来。而且集中式网关的流量劫持不依赖iptables,不依赖Sidecar,因此不会出现数据报文多次经过内核协议栈,造成访问时延增大的情况。我们同样支持Istio的Sidecar模式无损迁移到InternalGateway,这里限于篇幅就不介绍了。

集中式网关优势

◆  解耦业务和网络:允许网络的独立升级和运维,方便用户对网络进行托管服务;◆  节省用户资源:不占用用户节点计算资源,多节点共享网关,进一步节省计算和网络资源;◆  高性能低延迟:减少经过的Sidecar,去除了iptables这类流量劫持手段;◆  降低运维负担:支持自动弹性,无需用户为每个Pod中的Sidecar规划资源;◆  提供差异化特性:后续可以增强Envoy功能,提供差异化能力;


IN THE END

最后是对于Sidecar Per-Pod/Per-Node、Ambient Mesh、集中式网关这四种方案的特性对比。

image.png

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
存储 安全 网络协议
网络安全产品之认识准入控制系统
随着企业信息化建设的不断深入,企业的各种信息资产越来越多,网络安全问题也越来越突出。如何防止外来电脑、移动设备接入局域网,保护企业信息资产的安全,成为企业网络管理的重要问题。准入控制系统的出现,为企业提供了一种有效的解决方案。本文我们一起来认识一下准入控制系统。
71 2
|
1月前
|
云安全 监控 安全
网络安全产品之认识防病毒软件
随着计算机技术的不断发展,防病毒软件已成为企业和个人计算机系统中不可或缺的一部分。防病毒软件是网络安全产品中的一种,主要用于检测、清除计算机病毒,以及预防病毒的传播。本文我们一起来认识一下防病毒软件。
53 1
|
1月前
|
安全 网络协议 Unix
网络安全产品之认识安全隔离网闸
随着互联网的发展,网络攻击和病毒传播的方式越来越复杂,对网络安全的要求也越来越高。传统的防火墙设备在面对一些高级的网络攻击时,往往难以做到全面的防护,因此需要一种更加有效的网络安全设备来提高网络的安全性。此外,随着信息技术的不断发展,各个行业对信息系统的依赖程度也越来越高,一旦信息系统遭受攻击或入侵,可能会导致数据泄露、系统瘫痪等严重后果。因此,对于一些高安全级别的网络环境,如政府、军队、公安、银行等,需要一种更加可靠的安全设备来保证网络的安全性。在这样的背景下,安全隔离网闸作为一种新型的网络安全设备应运而生。本文让我们一起来认识安全隔离网闸。
44 0
|
1月前
|
SQL 安全 网络协议
网络安全产品之认识漏洞扫描设备
为了保障系统的安全性,需要及时发现和修复漏洞。这可以通过漏洞扫描设备等工具进行自动化检测和修复,同时也可以加强安全意识和培训,提高人员的安全防范能力。虽然无法完全避免漏洞的存在,但通过采取有效的措施可以大大减少漏洞的数量和危害程度,保障系统的安全性和稳定性。本文让我们一起来认识漏洞扫描设备。
60 0
|
4天前
|
Cloud Native Serverless 开发者
阿里云助力开发者创新:探索云原生技术的新境界
阿里云开发者社区推动云原生技术发展,提供丰富产品(如容器服务、Serverless、微服务架构、服务网格)与学习平台,助力企业数字化转型。开发者在此探索实践,共享资源,参与技术活动,共同创新,共创云原生技术新篇章。一起加入,开启精彩旅程!
62 2
|
5天前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
1月前
|
消息中间件 缓存 API
微服务架构下的API网关性能优化实践
在现代的软件开发中,微服务架构因其灵活性和可扩展性被广泛采用。随着服务的细分与增多,API网关作为微服务架构中的关键组件,承担着请求路由、负载均衡、权限校验等重要职责。然而,随着流量的增长和业务复杂度的提升,API网关很容易成为性能瓶颈。本文将深入探讨API网关在微服务环境中的性能优化策略,包括缓存机制、连接池管理、异步处理等方面的具体实现,旨在为开发者提供实用的性能提升指导。
|
1月前
|
缓存 负载均衡 监控
构建高效微服务架构:API网关的作用与实践
【2月更文挑战第31天】 在当今的软件开发领域,微服务架构已成为实现系统高度模块化和易于扩展的首选方法。然而,随着微服务数量的增加,确保通信效率和管理一致性变得尤为重要。本文将探讨API网关在微服务架构中的核心角色,包括其在请求路由、安全性、负载均衡以及聚合功能方面的重要性。我们将通过具体案例分析,展示如何利用API网关优化后端服务,并讨论实施过程中的最佳实践和常见挑战。
|
1月前
|
弹性计算 网络协议 关系型数据库
网络技术基础阿里云实验——企业级云上网络构建实践
实验地址:<https://developer.aliyun.com/adc/scenario/65e54c7876324bbe9e1fb18665719179> 本文档指导在阿里云上构建跨地域的网络环境,涉及杭州和北京两个地域。任务包括创建VPC、交换机、ECS实例,配置VPC对等连接,以及设置安全组和网络ACL规则以实现特定服务间的互访。例如,允许北京的研发服务器ECS-DEV访问杭州的文件服务器ECS-FS的SSH服务,ECS-FS访问ECS-WEB01的SSH服务,ECS-WEB01访问ECS-DB01的MySQL服务,并确保ECS-WEB03对外提供HTTP服务。
|
1月前
|
供应链 安全 专有云
阿里云通过信通院面向一云多芯的专有云技术能力评测
近日,阿里云飞天企业版通过中国信息通信研究院2023年度《面向一云多芯的专有云技术能力要求》,在异构兼容能力、专有云基础能力、迁移适配能力三个方面,再一次验证了阿里云专有云一云多芯领先的技术能力。