K8s Ingress 为什么选择 MSE 云原生网关?|学习笔记(二)

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
传统型负载均衡 CLB,每月750个小时 15LCU
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习 K8s Ingress 为什么选择 MSE 云原生网关?

开发者学堂课程【K8s Ingress 选择 MSE 云原生网关解析K8s Ingress 为什么选择 MSE 云原生网关?】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/965/detail/14886


K8s Ingress 为什么选择 MSE 云原生网关?

2. 功能更丰富

图片9.png

上图展示的功能一部分是已发布功能,一部分是待发布功能。

简单来讲可以分为下面几类:安全认证、服务治理、基础路由以及性能、可观测、可扩展、高可用。

(1)安全认证

例如在安全认证模块:支持HTTPS、 JWT认证、OIDC 认证、自定义鉴权认证、IP 黑名单、IDaaS 认证、Waf 防护。IDaaS 认证是阿里云提供通用的鉴权认证产品,可以对接许多三方的认证中心。以及会发布Waf 防护能力

(2)服务治理

服务治理模块:微服务网关与流量网关二合一,流量网关主要负责安全认证以及全局的流量调度,微服务网关侧重于服务治理。因此服务治理主要分为四个小部分:服务发现、流量分发、服务探针、治理。服务发现下支持:K8s、Nacos、Eureka、DNS以及静态地址。流量分发下支持金丝雀、A/B 、自定义流量比例分发。服务探针下支持超时、重试、主动健康检测、服务 Mock 。治理下支持限流、熔断、降级。目前提供本地限流,之后会结合阿里云产品不断优化熔断、降级能力。

(3)基础路由

基础的路由能力模块,例如基础路由里支持Host / Path 、Header 、Parameter的参数去做路由以及跨域重写;负载均衡支持轮询、随机、最小请求以及一致性的Hash;协议目前主要集中在7层负载,例如支持HTTP、HTTPS 、 gRPC 、以及Dubbo3.0 。

(4)性能

性能重点硬件加速,内核调优;

(5)可观测

可观测主要集成阿里云的Prometheus产品提供访问日志。Prometheus的监控以及报警;在可扩展方面,接下来会推出 Wasm 插件市场

(6)高可用

高可用方面是源于集团内部网关已经运行两年以来积累的很多高可用经验。比如说提供了文件的Cache,推空保护以及过载保护等。

总之,第一,云原生网关可以提供丰富的安全认证能力,降低客户的安全接入成本。第二网关可以做到直连后端的服务,打通了Nacos 、K8s等多种服务来源。并且率先支持 Dubbo 3.0的协议。第三就是默认集成了阿里云应用实时监控服务 ARMS , 提供丰富的可观测数据。

3. 稳定更可靠

图片10.png

在高可用方面主要分成三个部分:研发时运行时变更时。研此三个部分大概为阿里内部大概年大促经验沉淀的主要部分。

(1)研发时

开发人员去提交code  review 的时候,提到仓库之前,会去做一些自动的CI/CD的卡点检测。这些检测包括内存异常检测、多线程的竞争检测、静态代码分析检测单元与集成测试以及混沌测试。实际上现在的卡点多于举例部分卡点没有被罗列说明实际功能多于列举功能

(2)运行时

在运行时,第一,网关要提供过载保护。根据网关的cpu 和memory 的负载情况调整,当负载过高的时候,拒绝接受新建的连接,保证自身持续运转,确保流量大网关服务自身没有问题。第二,当网关服务发生异常时,例如网络异常,或其它原因异常重启,配置本地文件的cash,即在发生异常,可以迅速重启,并且从本地cash中把load配置 ,及时提供服务。

通过内部的故障与容灾演练压力测试以及大盘的监控与报警, 验证这些能力是否达标。

(3)变更时

任何一个软件,在运行的过程中,不可避免的要配置变更、配置发布。根据阿里内部积累的经验,大部分发生故障的场景变更时的异常问题。避免出现上述问题的方法是首先要做配置的合法性的校验。其次做配置变更 Drain 机制。即配置真正做切换的时候,有一个变化的过程,不是立刻替代老的配置去,有一个平滑的迁移过程。

完善了优雅的升级以及监控报警。在变更时,通过就灰度与回滚机制以及大盘的监控报警验证这些能力是否达标。

网关先在内部上线,经过了两年验证的以及大数据验证后,推出商业化的云产品。目前看,网关从内部2020年的五月份上线,已在支付宝、钉钉、淘宝、天猫、优酷、飞猪、口碑等阿里各业务系统中使用。两年以来网关的可用率百分之百,没有任何的故障。而且也经历了2020到2021年的双十一的海量请求的考验。大促的时候可以轻松承载每秒数10万笔的请求,日请求量达到百亿级别。

4. 即将上线的功能

(1) TLS 硬件加速

图片11.png

硬件加速目前对于Envoy英特尔公开有4种硬件加速方案。四个方案分成两个大类,  Envoy标准的SSL使用的是 BoringSSL ,以及被熟知的 OpenSSL 。那么基于BoringSSL,有两种硬件加速的实现方案。基于OpenSSL也有两种的技术实现方案。硬件加速的最终选择的是方案二。方案二,利用CPU的SIMD机制通过AVX-512指令并行处理提升 RSA 以及 ECDSA 性能。内部使用1C2G机器测试,压测 HTTPS 。

图片12.png

由图可知,加速前,QPS是1004 / 秒;加速后, QPS达到了1873 / 秒。即在使用硬件加速之后,在1C2G的机器上使用HTTPS,QPS从1004/ 秒提升到1873/ 秒,提升率86%。更直观的指标是 TLS  的握手。 TLS 的硬件加速本质上是把 TLS 的握手of flow到CPU使用,利用CPU的SIMD机制去提升它的性能。加速前 TLS 握手, rt在313.84。加速后, TLS 握手已经降到了145.81毫秒。如果只依据 TLS 握手rt,使用硬件加速之后,提升率超过200%。

通过压测数据得知,开启TLS硬件加速之后,对于HTTPS 的性能有非常大的提升。目前的请求更推荐HTTPS的方式保证更好的安全性,是推出TLS硬件加速的非常重要的原因。

(2)内置 Waf

图片13.png

在真正的网络中使用网关,最原始的流量先经过Waf的安全网关,到达之后会到流量网关,接着到微服务网关。

云原生网关,是流量网关跟微服务网关二合一。所以它的架构变成流量先过Waf 的安全网关,再过云原生网关。

未来预期部署模式能够进一步的简化,也就是如第三幅图所示,云原生网关内部直接内置一个Waf的模块,集成阿里云的Waf的云产品。由云原生网关直接提供Waf的防护能力,用户的请求链路从原来要过三个网关节点——安全网关、流量网关、微服务网关,再到后端服务变为流量直接到云原生网关,云原生网关直接往后端服务。

整个链路上此为最短方式,第一网关的部署分层减少,因此用户运维会简单。第二,因为整个链路的节点减少所以rt 更好。第三用户可以一站式的去使用安全网关流量网关,微服务网关,操作方便。

目前已在与阿里云的Waf团队对接,很快推出相关功能,内部集成Waf模块,用于对接阿里云的Web应用防火墙的产品,实现安全、流量、微服务网关的三合一,进一步的降低网关的使用成本。

(3)Wasm 插件市场

用户了解Wasm较多此技术虽然诞生于浏览器上面,如今是被非常认可的向。第一Wasm技术有可能是作为server  list,成为docker 的下一代的基础。因为  Wasm runtime的启动时间要比docker 更短。同时提供一个沙箱的能力,能够做很好的安全隔离。

Wasm初步支持在Evory和Istio上使用。但在开源社区目前更多是在探讨技术方向,或做简单的Demo Poc。目前在国内网关市场,没有任何一个网关产品推出Wasm  插件市场,能够去方便用户去扩展网关。在国外市场上,尝试去推出Wasm的插件市场。但目前没有过多的用户使用

虽然目前应用Wasm 插件市场的很少,但是不可否认Wasm插件不管是网关,还是service match,都是一个已经被认可的技术方向。所以网关希望率先推出Wasm插件市场,满足用户对于网关的多样性扩展的诉求。因为网关从去年七月份公测到现在上线经历了一段时间,遇到很多用户咨询网关是否支持自己写一些扩展插件,扩展网关的能力,因此就推出Wasm的插件市场。

图片14.png

上图介绍Wasm的插件在云原生网关中,如何运作、安装配置的流程

例如用户在云原生网关的控制台上安装配置一个插件,控制台会生成WasmPlugin资源。这个资源是由Istio定义的,Istio List & watch资源后,会把资源通过xDS协议推送给Istio的agent。拿到这个配置之后,Istio的agent会把这个插件下载到本地。同时去把配置通过UDS的方式推送Evory,接着会挂载插件。挂载之后,用户的请求进入,就可以使用 Wasm 插件。

目前Wasm插件更多停留在文章demo或者是poc里。对Wasm插件做了很多的测试验证。

目前有多个Wasm的runtime,例如v8、wavm以及wasmtime以及wamr 。具有四个runtime 的运行时。通过插件,全部使用C++语言去测试了一下4种runtime的rt以及cpu的耗时,例如v8,执行 C++的插件的rt耗时是63毫秒,消耗的cpu是8%。

如果只通过第一组数据,得知第二个Wasm runtime的数据是最好的。通过对比测试的数据,在Evory里,如果每增加一个work线程,或者每个线程当中增加一个Wasm的runtime进行对比, runtime消耗的内存增长。由此可知,v8消耗的内存增长只有两兆,远远低于其它三个runtime。

第三对比多语言插件的运行情况。例如使用C++ 在v8运行时,它的rt消耗是63毫秒,cpu消耗是8%。Go消耗68毫秒,cpu消耗也是8%。使用Lua对比 Lua的消耗是164毫秒,cpu消耗20%。

因此基于测试验证,得出来初步结论, Wasm插件的性能实际优于lua的。并且通过Wasm runtime的综合对比,v8较好, v8在真正运行rt不是最好但结合内存消耗,综合得知v8的效果最好。

第一组数据当中,第二个runtime最好,但是在第二组测试数据中显示内存消耗反而是更大的。因此可能采用了类似于空间换时间的策略提升性能。因此综合上述数据可知V8的性能较好

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
23 2
|
30天前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态。
|
5天前
|
Kubernetes 监控 负载均衡
深入云原生:Kubernetes 集群部署与管理实践
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其弹性、可扩展性成为企业IT架构的首选。本文将引导你了解如何部署和管理一个Kubernetes集群,包括环境准备、安装步骤和日常维护技巧。我们将通过实际代码示例,探索云原生世界的秘密,并分享如何高效运用这一技术以适应快速变化的业务需求。
23 1
|
6天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
9天前
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
10天前
|
存储 运维 Kubernetes
云原生之旅:Kubernetes的弹性与可扩展性探索
【10月更文挑战第32天】在云计算的浪潮中,云原生技术以其独特的魅力成为开发者的新宠。本文将深入探讨Kubernetes如何通过其弹性和可扩展性,助力应用在复杂环境中稳健运行。我们将从基础架构出发,逐步揭示Kubernetes集群管理、服务发现、存储机制及自动扩缩容等核心功能,旨在为读者呈现一个全景式的云原生平台视图。
23 1
|
15天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
47 4
|
16天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
48 3
|
20天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
31 3
|
19天前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!