云原生网关 MSE-Higress 测评

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: MSE-Higress 三合一网关测评

本文介绍分为五大块:
1,前言介绍
2,开通MSE网关
3,接入ACK及功能测试
4,建议和思考
5,总结

一,前言

在接触MSE Higress网关之前,我们有在使用WAF网关做前端安全代理,API网关做API的管理维护,使用Nginx Ingress做为K8S的流量网关,也有使用spring cloud gateway网关对微服务进行管理。
这么多网关,总体使用上来看,能满足我们的其中一个场景和功能需求,但存在数据孤岛,VPC链路不通,运维成本高,多个网关路由之间的流量性能损耗等问题。
比如:
一般使用Nginx做网关,更多作于代理,对于后端,nginx本身单独无法做到无损上下线。更多需要使用一些Lua插件补足功能上的不足,维护搭建比较麻烦。
Spring cloud gateway 微服务网关,接入门槛高,维护成本大,需要对每个后端服务进行添加依赖,Yaml编写配置,可读性差,部分组件需要对接代码。不支持ingress和k8s服务发现。我们使用ACK后,只能弃用。
后续也在使用或接触到ACK中的Nginx Ingress、ALB Ingress。但也存在不同的问题或功能缺失,比如不支持HTTP转Dubbo协议,不支持阿里云的IDaaS服务等等。

其次,鉴于Nginx Ingress的架构问题导致的性能流量损耗,通过Prometheus进行监控时候,存在的性能问题。所以基于Envoy 作为数据面架构的higress 是趋势。而MSE Ingress是基于开源的Higress开发的。

Higress开源版 之前也有测试过,整体使用上比较丝滑,这次测试MSE Higress 上手也比较快。

图片.png

二,开通MSE网关

上面介绍这么多,现在正式进入正题。

开通MSE网关比较简单,开通前记得领取试用资格。

图片.png

初次申请 需要授权,点击下一步即可。

图片.png

但创建实例的时候遇到了问题。

图片.png

显示创建失败

图片.png

Creation failed:getStsCredentials 获取异常,点击重试还是不行。
没看明白这个接口报错是什么意思,明明开通的时候,已经授权过系统默认权限了,使用的是默认资源组,去文档里也没有搜到。

图片.png

打算放弃的时候,再点了下重试,很意外竟然创建成功了,可是我什么都没有操作过,只是多等了10分钟。

三,接入ACK及功能测试

测试场景:
关联ACK Serverless集群,测试一个服务,配置关联一个新域名。比如 主域名为 higress-inc.com.

关联ACK集群

图片.png

点击勾选监听k8s ingress。
开启监听Ingress配置后,云原生网关会自动监听Ingress资源的变化,并生效Ingress资源中域名、路由的相关配置。

1,关联应用

关联容器服务后,选择关联当前service应用。
(如果没有ACK下相关deployment/service等,请先参照文档创建。此处不介绍了。https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/create-a-stateless-application-by-using-a-deployment?spm=a2c4g.11186623.0.i5)

图片.png

添加完毕

图片.png

2,创建域名
此处测试的自定义主域名为:higress-inc.com.
那应用域名为:demo-codeup.higress-inc.com.

控制台支持完整域名(如:hello.com)或泛域名(只能匹配一级,如 *.hello.com 只能匹配 a.hello.com 等域名,无法匹配 a.b.hello.com),独立管理该域名的协议及证书,且域名能将路由配置相互隔离。
此处配置使用HTTP协议,因为是测试域名,自建SSL证书就不去操作了。如果是正式环境,建议购买正规SSL证书,以及使用HTTPS协议。

图片.png

添加完成

图片.png

可以对该域名进行编辑 和 点击进行域名解析关联,使用HTTPS的,也可以看到SSL证书相关信息。

3,创建路由
此处路由就是ACK的ingress,定义好路由规则,将请求转发到后端服务,这也是传统流量网关的基本功能。

图片.png

这里需要说明下 ,路径规则匹配
● 精确匹配:即完全匹配,例如Path等于/user,那只能访问/user的路由,不能访问/user/path等类似路由。
● 前缀匹配:以前缀作为匹配条件,例如Path以/user开头,能访问/user/path等类似路由。
● 正则匹配:以正则表达式作为匹配条件,使用RE2正则表达式语法。
这里能直接做表达式的检测。好评👍

图片.png

需要注意下路由访问优先级。
存在多条路由规则时,按照关联域名 > 路径(Path)> 请求头(Header)> 请求参数(Query)> 创建时间的优先级从高到低依次进行排序。

点击下一步进行路由服务选择。
选择单服务。(多服务适合混部,多版本等场景。)
图片.png

如果服务出现问题,需要将业务流量降级容灾,可以设置fallback服务。当主服务出现故障,可以将流量打到fallback服务,此处的容灾服务是demo-codeup-fallback-svc。

点击发布上线。
已经发布上线的可以进行策略配置、下线维护等操作。

图片.png

4, 路由测试

路由配置完成,并且发布后,就可以进行测试。
本来还想在本地绑定host做路由测试,没想到MSE控制台就可以直接测试,直接在控制台做了host绑定。点赞👍

图片.png

图片.png

5,监控报警日志

图片.png

图片.png

此处将报警信息通过运维发出。可以在arms里告警管理新建通知策略。
点击保存创建
图片.png

关闭 pod后,服务状态立马变异常。
图片.png

测试路由,返回503
图片.png

基础监控能看到服务请求出错。

图片.png

但遗憾,设置为任意服务,都没有监听到错误和收到报警。
图片.png

看板监控
可以看到访问的一些信息和网关资源的监控信息。
图片.png

日志中心

图片.png

既然接入日志SLS了,就可以设置SLS侧的告警。

6,fallback演练

上面已经介绍了新建的主服务是demo-codeup,容灾服务是demo-codeup-fallback-svc。
路由也配置开启了fallback服务。
图片.png

路由测试主服务,返回正常。

现在停止主服务demo-codeup,将容器pod缩为0,我们观察下fallback 是否生效。
图片.png

此时服务已经显示异常。
图片.png

继续测试以上路由, 发现返回的结果为不同的内容,测试符合结果预期,容灾生效。

图片.png

继续进行恢复主服务测试。
将主服务demo-codeup pod恢复
图片.png

查看服务已经恢复正常。

图片.png

此时再进行路由调试,流量重新打回主服务demo-codeup了。
路由流量恢复正常,只不过期间等了大概1-2分钟,估计是在做failover切换检测。
图片.png

7,策略配置

MSE网关路由策略支持限流、重写、跨域CORS、失败重试、认证、流量复制等场景。

此处设置了流控规则,当超过 20QPS的时候,会调用 AHAS服务进行行为管理,比如自定义返回页面,跳转指定页面等。

图片.png

8,黑白名单测试

开启白名单,生效粒度为网关全局和域名级别。
此处设置全局网关只允许本地出口IP访问。
图片.png

测试:
本地能正常访问

图片.png

但MSE网关就不能做路由调试了,返回access denied。
结果符合预期。
图片.png

如果使用黑名单,建议先关闭冲突的白名单策略。
配置黑名单策略后,默认全局允许访问,除了黑名单内的地址是拒绝访问的。

9,鉴权
认证鉴权是网关的刚需,MSE云原生网关不仅提供常规的JWT认证,也提供基于授权开放网络标准OAuth 2.0的OIDC认证。MSE支持JWT、OIDC、IDaaS、自建的鉴权服务方式鉴权。支持阿里云的云服务IDaaS,非常棒,👍。

比如,对接阿里云内应用,实现 SSO,进行统一账户管理,降低成本,提高安全。

图片.png

10,插件管理

MSE网关支持插件市场中的插件,以及可以上传自定义开发的插件,也可以直接使用Lua脚本在线编辑插件
图片.png

四,建议和思考

建议1

图片.png

Creation failed:getStsCredentials 获取异常
这块体验不是非常好,既搜不到相关错误说明,又没有具体日志透出。
建议对报错信息进行引导说明,不然用户会一头雾水,不知所措。

建议2

图片.png

业务中会存在很多路由策略,建议可以批量进行路由配置维护,比如批量下线,发布,上线等。

建议3
一个小问题,对域名进行监控观察的时候,发现鼠标移到数据线(mouseOn)的时候,未发现赋值变化。
图片.png

建议4
不支持WAF 2.0
当前虽然WAF2.0 已经不售卖,但存在大量历史用户,MSE Ingress 使用WAF 必须开启WAF 3.0,
但WAF 2.0 和3.0不能共存,所以不敢轻易在MSE侧启用开通WAF功能。
图片.png

建议5
如果需要接入API网关,功能位置变更,无法实现三合一网关。
因为WAF版本原因(在用WAF2.0),无法启用MSE网关和WAF关联。
原则上 只要将当前使用的WAF2.0升级到WAF3.0 即可,然后再开通关联。

如果在使用API网关的话(对API进行生命周期管理服务),不能使用WAF和 MSE网关直接关联,需要WAF和API网关关联后,再在API网关设置后端服务接入MSE网关,MSE网关位置则变成是容器服务的7 层代理入口。

五,总结

本次只是测试了MSE 网关众多功能中的几个小场景,整体而言,MSE网关 在部分场景下,还是非常值得使用的,比如只是纯流量网关、微服务网关、安全网关可以合并使用的场景。能实现高集成、可运维、易扩展、热更新的功能。通过DevOPS驱动多网关融合,进行降本增效,通过声明式管理,让发布更高效,助力业务快速发展。我会积极拥抱MSE网关,你呢?

目录
相关文章
|
1天前
|
API
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
|
1天前
|
人工智能 API
阿里云微服务引擎及 API 网关 2024 年 4 月产品动态
阿里云微服务引擎及 API 网关 2024 年 4 月产品动态。
|
1天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 04 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
1天前
|
API
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态。
|
1天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 03 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
1天前
|
负载均衡 Cloud Native 安全
云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权
本文档介绍了如何在 MSE(Microservices Engine)云原生网关中集成JWT进行全局认证鉴权。
|
1天前
|
弹性计算 监控 Cloud Native
云原生最佳实践系列 4:基于 MSE 和 SAE 的微服务部署与压测
通过MSE(微服务引擎)、SAE(Serverless应用引擎)、ARMS(应用监控服务)、PTS(性能测试服务)等产品,实现微服务的无服务化部署、监控和弹性伸缩。
|
1天前
|
消息中间件 Cloud Native 网络安全
云原生最佳实践系列 3:基于 SpringCloud 应用玩转 MSE
该文档介绍了基于云原生应用的产品构建的微服务架构实践。
|
1天前
|
负载均衡 Kubernetes Cloud Native
云原生最佳实践系列2:基于 MSE 云原生网关同城多活
通过使用阿里云的云原生微服务引擎 MSE,可以实现注册中心的同城容灾多活微服务应用。MSE 提供了云原生网关和注册中心,支持机房级故障的秒级自动转移、非对等部署下的全局流量负载均衡以及流量精细化管控。
666 39
|
1天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 02 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。

热门文章

最新文章