Nginx Ingress、ALB Ingress和MSE Ingress对比

ACK托管集群ACK Serverless集群均支持使用Nginx Ingress、ALB Ingress和MSE Ingress对外暴露容器服务和管理路由。Nginx Ingress需要自行维护,ALB Ingress和MSE Ingress使用的网关为全托管模式。本文比较了Nginx Ingress、ALB Ingress和MSE Ingress在典型应用场景、工作流程和功能等方面的差异,帮助您选择合适的Ingress类型。

背景信息

  • Nginx Ingress:基于开源社区Ingress NGINX Controller提供七层流量处理能力与丰富的高级路由功能,与上游社区完全兼容,支持扩展能力。该组件由您自主运维,无SLA保障,支持丰富定制化能力。

  • ALB Ingress:阿里云自研云原生Ingress网关,兼容Nginx Ingress,采用全托管一体化设计,支持SSL硬件加速,具备自动弹性、低时延、处理复杂业务路由的能力。单个ALB实例支持100万QPS,提供更强大的Ingress流量管理功能。关于ALB Ingress云原生网关的详细介绍,请参见ALB Ingress概述

  • MSE Ingress:阿里云开源Higress企业版,兼容Nginx Ingress,适用于微服务场景,支持多种服务发现、认证鉴权以及多语言插件扩展,提供灰度发布、预热和限流等核心能力。单个MSE云原生网关实例支持100万QPS,提供更为强大的Ingress流量管理功能。关于MSE云原生网关的详细介绍,请参见云原生网关概述

典型应用场景

类型

典型应用场景

Nginx Ingress

  • 网关高度定制化。

  • 云原生应用金丝雀发布、蓝绿发布。

ALB Ingress

  • 网关和组件全托管、免运维。

  • 互联网应用七层高性能自动弹性。

  • 多级高可用,服务等级协议SLA高达99.995%。

  • 云原生应用金丝雀发布、蓝绿发布。

  • 多种云服务混合挂载,共用一个ALB实例。

  • 混合云、云上跨地域等多场景容灾。

  • 超大QPS、超大并发连接。

MSE Ingress

  • 网关全托管、免运维。

  • 微服务架构,Nacos与ZooKeeper服务发现、Sentinel限流、HTTP到Dubbo协议转换、集成OpenTelemetry。

  • 南北向流量场景,后端服务发现支持传统注册中心Nacos、K8s、DNS和固定IP等多种模式。

  • 东西向流量场景,支持混合云、多数据中心和多业务域的内部互通,且可以与Service Mesh系统无缝整合。

  • 多个容器集群、PaaS平台、ECS服务共用一个网关实例。

  • 混合云、多数据中心、多业务域的内部互通。

  • 认证鉴权,灵活设置,安全防护要求高。

  • 超大流量、高并发业务。

工作示意图

通过从请求域名www.example.net/app到转发并访问具体容器服务的工作示意图,对比Nginx Ingress、ALB Ingress和MSE Ingress之间工作方式的差异。

Nginx Ingress

image

Nginx Ingress Controller是一个集控制面和数据面于一体的实现方案。每个Nginx Ingress Controller Pod中有一个Controller进程(控制面),同时也包含Nginx相关进程(数据面),因此配置流量和用户请求流量都会由Nginx Ingress Controller Pod处理。

ALB Ingress

image

ALB Ingress Controller通过API Server动态地获取Ingress资源和AlbConfig资源的变化,然后更新ALB实例。与Nginx Ingress Controller不同,ALB Ingress Controller是托管组件,作为ALB实例的控制面,不直接处理用户请求流量,用户流量的转发由ALB实例来实现。

MSE Ingress

image

MSE Ingress Controller负责监听集群中的MseIngressConfig资源,协调MSE云原生网关实例用于实施Ingress资源描述的流量管理规则。与Nginx Ingress Controller不同,MSE Ingress Controller是管理MSE云原生网关实例以及配置的控制面,MSE Ingress Controller Pod不直接处理用户请求流量,用户流量的路由和转发由MSE云原生网关实例来实现。

功能对比

比较项

Nginx Ingress

ALB Ingress

MSE Ingress

产品定位

  • 提供七层流量处理能力与丰富的高级路由功能。

  • 自有组件,可根据需求进行高度定制化。

  • 提供七层流量处理能力与丰富的高级路由功能。

  • 专门面向应用层负载场景,与容器深度集成,支持多种服务灰度策略,包括金丝雀发布、A/B Test、蓝绿部署、自定义流量比例分发等。

  • 支持超大容量、自动弹性和免运维。

  • 支持与多种云产品结合,例如WAF、FC、PrivateLink、TR等。

  • 支持与多种网络产品组合实现混合挂载、跨地域挂载和本地IDC挂载

  • 将传统流量网关、微服务网关和安全网关三合一,通过硬件加速、WAF本地防护和插件市场等功能,构建一个高集成、高性能、易扩展、热更新的云原生网关。

  • 提供七层流量处理能力与丰富的高级路由功能。支持多种服务发现模式和多种服务灰度策略,包括金丝雀发布、A/B Test、蓝绿部署和自定义流量比例分发。

  • 专门面向应用层负载场景,与容器深度集成,网关转发请求时直连后端Pod IP。

产品架构

基于Nginx+Lua插件扩展。

  • 基于阿里洛神云网络平台。

  • 基于CyberStar自研平台,支持自动弹性伸缩。

  • 基于开源Higress项目,控制面使用Istiod,数据面使用Envoy。关于开源Higress项目的详细介绍,请参见Higress项目

  • 用户独享实例。

基础路由

  • 基于内容、源IP的路由。

  • 支持HTTP标头改写、重定向、重写、限速、跨域、会话保持等。

  • 支持请求方向转发规则和响应方向转发规则,其中响应方向转发规则可以通过扩展Snippet配置实现。

  • 转发规则按照最长路径匹配,匹配到多条路径时,转发路径最长的优先匹配。

  • 基于内容、源IP的路由。

  • 支持HTTP标头改写、重定向、重写、限速、跨域、会话保持等。

  • 支持请求方向转发规则和响应方向转发规则。

  • 转发规则按照优先级从高到低开始匹配,匹配到多条路径时,转发规则编号的数值越小优先级越高。

  • 支持标准的轮询、最小连接数、根据源IP及URL参数的一致性Hash等负载均衡模式。

  • 基于内容的路由。

  • 支持HTTP标头改写、重定向、重写、限速、跨域、超时和重试等。

  • 支持标准的轮询、随机、最小请求数、一致性Hash和预热等负载均衡模式。预热是指在指定时间窗口转发到后端某机器的流量逐步平滑递增。

  • 支持千级别的路由规则。

支持协议

  • 支持HTTP和HTTPS协议。

  • 支持WebSocket、WSS和gRPC协议。

  • 支持HTTP和HTTPS协议。

  • 支持HTTP3.0、WebSocket、WSS和gRPC协议。

  • 支持HTTP和HTTPS协议。

  • 支持HTTP 3.0、WebSocket和gRPC协议。

  • 支持HTTP/HTTPS转Dubbo协议。

配置变更

  • 非后端端点变更需要Reload进程,对长连接有损。

  • 端点变更使用Lua实现热更新。

  • Lua插件变更需要Reload进程。

  • 支持配置热更新。

  • 采用OpenAPI机制变更配置,配置变更实时生效。

  • 支持配置、证书、插件热更新。

  • 采用List-Watch机制,配置变更实时生效。

认证鉴权

  • 支持Basic Auth认证方式。

  • 支持OAuth协议。

支持TLS身份认证。

  • 支持Basic Auth、OAuth、JWT、OIDC认证。

  • 集成阿里云IDaaS。

  • 支持自定义认证。

性能

  • 性能依赖手动调优,需要进行系统参数调优和Nginx参数调优。

  • 需要配置合理的副本数和资源限制。更多信息,请参见Nginx Ingress Controller使用建议

  • 单实例支持100万QPS。

  • 单实例支持千万级最大连接。

  • 默认使用SSL硬件进行加速。

  • 相比开源Nginx Ingress,在CPU水位30~40%时,TPS高出约90%。

  • 启用硬件加速后,提升HTTPS性能约80%。

可观测能力

  • 支持通过Access Log采集日志。

  • 支持通过Prometheus进行监控和告警配置。

  • 支持通过Access Log采集日志(对接SLS)。

  • 支持使用Metrics输出监控指标(集成云监控)。

  • 支持报警配置(对接云监控)。

  • 支持Tracing(集成TracingAnalysis和SkyWalking)。

  • 支持通过Access Log采集日志(集成SLS和阿里云Prometheus)。

  • 支持通过阿里云Prometheus配置监控和告警。

  • 支持Tracing(集成TracingAnalysis和SkyWalking)。

运维能力

  • 自行维护组件。

  • 通过配置HPA进行扩缩容。

  • 需要主动配置规格进行调优。

  • 网关和组件全托管、免运维。

  • 自动弹性,免配置支持超大容量。

  • 处理能力随业务峰值自动伸缩。

网关全托管,免运维。

安全

  • 支持HTTPS协议。

  • 支持黑白名单功能。

  • HTTPS(集成SSL)支持全链路HTTPS、SNI多证书、RSA、ECC双证、TLS 1.3协议和TLS算法套件选择。

  • 支持WAF防护(对接阿里云Web防火墙)。

  • 支持DDoS防护(对接阿里云DDoS防护服务)。

  • 支持黑白名单功能。

  • 支持全链路HTTPS、SNI多证书(集成SSL),可配置TLS版本。

  • 支持路由级WAF防护(对接阿里云Web防火墙)。

  • 支持路由级黑白名单功能。

费用成本

  • CLB实例:CLB计费概述

  • nginx-ingress-controller资源开销,0.2 vCPU,200 MiB内存起。

    说明

    请以实际资源占用及ECS节点费用为准,计费详情请参见ECS计费概述

  • ALB实例:ALB计费概述

  • alb-ingress-controller为托管组件,不占用资源开销。

组件管理

请参见管理Nginx Ingress Controller组件

请参见管理ALB Ingress Controller组件

请参见管理MSE Ingress Controller组件

服务治理

  • 服务发现支持K8s。

  • 服务灰度支持金丝雀发布、蓝绿发布。

  • 服务高可用支持限流。

  • 服务发现支持K8s。

  • 服务灰度支持金丝雀发布、蓝绿发布。

  • 服务高可用支持限流。

  • 服务发现支持K8s、Nacos、ZooKeeper、EDAS、SAE、DNS、固定IP。

  • 支持2个以上版本的金丝雀发布、标签路由,与MSE服务治理结合可实现全链路灰度发布。

  • 内置集成MSE服务治理中的Sentinel,支持限流、熔断、降级。

  • 服务测试支持服务Mock。

扩展性

使用Lua脚本。

使用AScript自研脚本。更多信息,请参见可编程脚本AScript概述

  • 使用Wasm插件,实现多语言编写。

  • 使用Lua脚本。

云原生集成

自行运维组件,与阿里云ACK或ACK Serverless等容器服务结合使用。更多信息,请参见Ingress概述

  • 与多种云产品结合,如Web应用防火墙(WAF)、函数计算(FC)、私网连接(PrivateLink)和云企业网转发路由器(TR)等。

  • 托管组件,与阿里云ACK或ACK Serverless等容器服务结合使用。

用户侧组件,与阿里云ACK或ACK Serverless等容器服务结合使用,且支持Nginx Ingress核心 Annotation无缝转换,关于MSE Ingress支持的Annotation,请参见MSE Ingress支持的Annotation

相关文档