概述
云原生网关支持将请求转发的预定义的目标服务,本章节介绍云原生网关中的服务生命周期管理。
云原生网关中服务相关概念如下:
概念 | 说明 |
---|---|
服务 | 网关转发请求的目标,可以通过配置路由引用相应的服务,将请求转发到指定的目标。 |
容器服务 | 从云容器引擎中发现的服务。 |
注册中心服务 | 从注册配置中心发现的服务。 |
固定地址服务 | 固定配置的IP+端口服务。 |
Dubbo服务 | 添加服务时,服务scheme选择DUBBO。 |
服务scheme | 请求后端服务的协议,当前支持HTTP、HTTPS、GRPC、GRPCS、DUBBO,默认为HTTP。 |
服务版本 | 云原生网关支持基于容器和注册中心服务中的元数据(容器服务中的POD标签或者注册中心服务的元数据)对服务进行分组,并定义为不同版本,即为服务版本概念。 |
创建服务
云原生网关支持创建容器服务、注册中心服务和固定地址服务,本章节介绍每种服务创建操作流程。
创建容器服务
前置条件
- 已开通云原生网关实例和同VPC下的云容器引擎实例,已添加云容器引擎作为云原生网关的服务来源
- 服务已部署到云容器引擎并配置相关Service暴露服务
操作流程
- 进入微服务引擎MSE控制台
- 在顶部菜单栏选择资源池
- 单击左侧导航栏云原生网关 -> 网关列表
- 您可以在网关列表页单击需要查看的网关实例ID或者 实例名称 ,也可以单击操作列中的管理按钮
- 单击左侧导航栏 服务列表
- 单击左上角按钮 创建服务
- 在弹出的页面中选择容器服务来源,选择要添加的服务所在的命名空间
- 在服务列表中选择要添加的服务,根据需求做不同的配置
容器服务配置说明
配置 | 说明 |
---|---|
命名空间 | 后端服务部署在云容器引擎中的命名空间。 |
servicePort | 对应云容器引擎Service中定义的服务端口,每个端口可以定义为一个独立的云原生网关服务。 |
websocket支持 | websocket开关,打开之后支持websocket流量代理到后端。 |
协议 | 后端服务的协议,支持HTTP、HTTPS、GRPC、GRPCS、DUBBO,默认为HTTP。 |
mTLS | 是否打开后端服务双向TLS认证(后端服务对网关证书认证)。 |
证书文件 | 后端服务开启双向TLS认证后,云原生网关提供的证书文件。 |
私钥文件 | 后端服务开启双向TLS认证后,云原生网关提供的私钥文件。 |
创建注册中心服务
前置条件
- 已开通云原生网关实例和同VPC下的注册配置中心实例(Nacos引擎),已添加注册配置中心实例作为云原生网关的服务来源
- 后端服务已部署并注册到注册配置中心
操作流程
- 进入微服务引擎MSE控制台
- 在顶部菜单栏选择资源池
- 单击左侧导航栏云原生网关 -> 网关列表
- 您可以在网关列表页单击需要查看的网关实例ID或者 实例名称 ,也可以单击操作列中的管理按钮
- 单击左侧导航栏 服务列表
- 单击左上角按钮 创建服务
- 在弹出的页面中选择MSE Nacos服务来源,选择要添加的服务所在的命名空间
- 在服务列表中选择要添加的服务,根据需求做不同的配置
注册中心服务配置说明
配置 | 说明 |
---|---|
命名空间 | 后端服务注册到注册配置中心的命名空间。 |
websocket支持 | websocket开关,打开之后支持websocket流量代理到后端。 |
协议 | 后端服务的协议,支持HTTP、HTTPS、GRPC、GRPCS、DUBBO,默认为HTTP。 |
mTLS | 是否打开后端服务双向TLS认证(后端服务对网关证书认证)。 |
证书文件 | 后端服务开启双向TLS认证后,云原生网关提供的证书文件。 |
私钥文件 | 后端服务开启双向TLS认证后,云原生网关提供的私钥文件。 |
创建固定地址服务
前置条件
- 已开通云原生网关实例
操作流程
- 进入微服务引擎MSE控制台
- 在顶部菜单栏选择资源池
- 单击左侧导航栏云原生网关 -> 网关列表
- 您可以在网关列表页单击需要查看的网关实例ID或者 例名称 ,也可以单击操作列中的管理按钮
- 单击左侧导航栏服务列表
- 单击左上角按钮创建服务
在弹出的页面中选择添加固定地址类型的服务,如下图所示:
添加固定地址服务的配置参数包括:
参数 | 说明 |
---|---|
服务名称 | 用于唯一标识一个后端服务。 |
服务地址 | 1. 支持配置服务节点的地址、端口、权重和优先级。 2. 优先访问高优先级节点,只有在高优先级的节点不可用或者尝试过,才会访问一个低优先级的节点; 3. 只有在优先级相同时,权重才会生效; 4. 优先级默认值为0,可以取负数表示备份节点,表示只有其他节点均不可用时,才会启用备份节点; 5. 此处节点权重采用比例形式,表示不同节点之间的流量比例。 |
请求协议 | 后端服务的协议,支持HTTP、HTTPS、GRPC、GRPCS、DUBBO,默认为HTTP。 |
mTLS | 是否打开后端服务双向TLS认证(后端服务对网关证书认证)。 |
证书文件 | 后端服务开启双向TLS认证后,云原生网关提供的证书文件。 |
私钥文件 | 后端服务开启双向TLS认证后,云原生网关提供的私钥文件。 |
删除服务
前提条件
没有路由在引用要删除的服务(先删除引用当前服务的路由)
操作流程
- 进入微服务引擎MSE控制台
- 在顶部菜单栏选择资源池
- 单击左侧导航栏云原生网关 -> 网关列表
- 您可以在网关列表页单击需要查看的网关实例ID或者实例名称 ,也可以单击操作列中的管理按钮
- 单击左侧导航栏 服务列表
- 在右侧操作栏点删除按钮
编辑服务
云原生网关支持对已添加的服务进行编辑,本章节介绍服务编辑功能。
操作流程
- 进入微服务引擎MSE控制台
- 在顶部菜单栏选择资源池
- 单击左侧导航栏云原生网关 -> 网关列表
- 您可以在网关列表页单击需要查看的网关实例ID或者 实例名称 ,也可以单击操作列中的管理按钮
- 单击左侧导航栏 服务列表
- 在右侧操作栏点编辑按钮
当前允许编辑的服务选项包括:websocket选项、请求协议、mTLS配置
服务策略配置
云原生网关支持丰富的服务策略配置,点击服务列表项操作栏的策略配置按钮或者服务名称进入服务详情页面,可以实现后端服务级别的策略配置,包括负载均衡、超时重试、健康检查、后端访问签名、服务版本等,如下图:
策略配置项和支持的服务类型如下表:
配置项 | 说明 | 支持的服务类型 |
---|---|---|
负载均衡策略 | 后端多实例的负载均衡策略,当前支持: 1,轮询(Round Robin) 2,一致性哈希(CHash) 3,指数加权移动平均法(EWMA) 4,最小连接数(Least Conn) |
容器/注册中心/固定地址 |
超时 | 当前支持配置连接超时、发送超时、接收超时,默认都是6s。 | 容器/注册中心/固定地址 |
重试 | 重试次数,默认为0,表示不重试。 重试超时时间:原请求和重试的总耗时超过该时间则不再继续重试。 |
容器/注册中心/固定地址 |
健康检查 | 后端服务监控检查配置,包括主动健康检查和被动健康检查。 | 容器/注册中心/固定地址 |
后端访问签名 | 请求后端时基于HMAC算法计算签名,用于后端对网关的回源请求进行鉴权。 | 容器/注册中心/固定地址 |
服务版本 | 针对容器和Nacos服务,基于标签定义服务的不同版本,可以在路由配置中实现多版本的蓝绿和金丝雀发布能力。 | 容器/注册中心 |
健康检查配置
云原生网关对后端服务的健康检查分为主动健康检查和被动健康检查。
主动健康检查通过预设的探针,主动探测上游节点的存活性,目前支持 HTTP、HTTPS、TCP 三种探针类型。当发往某个健康节点的若干个连续探测请求都失败时,则该节点将被标记为不健康,不健康的节点将会被网关的负载均衡器忽略,无法收到请求;若发往某个不健康的节点的连续若干个探测请求都成功,则该节点将被重新标记为健康,进而可以被代理。
主动健康检查配置界面如下图:
主动健康检查支持的配置项有:
配置项 | 说明 |
---|---|
探测类型 | 当前支持TCP、HTTP、HTTPS探测。 |
超时时间 | 探测请求超时时间。 |
并行数量 | 并发主动探测的最大数量。 |
端口 | 探测的服务端口。 |
请求路径 | 探测请求的路径,仅对HTTP和HTTPS探测有效。 |
请求头部 | 探测时指定请求头部,仅对HTTP和HTTPS探测有效。 |
健康状态定义 | 对于不健康节点的探测配置,用于判断节点是否恢复健康。 1,探测时间间隔(秒) 2,成功次数:主动探测成功达到次次数时认为节点是健康的 3,状态码:对于HTTP和HTTPS探测,定义了哪些状态码是健康的,如2XX,3XX |
不健康状态定义 | 对于健康节点的探测配置,用于判断节点是否监控。 1,探测时间间隔(秒) 2,超时次数:超时次数大于或者等于该配置时认为节点不健康 3,状态码:定义了哪些状态码是异常的,如4XX,5XX 4,HTTP失败次数:HTTP失败次数大于等于该值时认为节点不健康 5,TCP失败次数:TCP失败大于等于该值时认为节点不健康 |
被动健康检查是指,通过网关接收到的上游节点的响应状态来判断对应的上游节点是否健康。相对于主动健康检查,被动健康检查的方式无需发起额外的探测请求,缺点是无法提前感知节点状态,需要有一定量的失败请求才能触发故障节点的剔除。若发向某个健康节点的若干个连续请求都被判定为失败,则该节点将被标记为不健康。
被动健康检查的配置如下图:
被动健康检查的配置说明:
配置 | 说明 |
---|---|
类型 | 当前支持TCP、HTTP、HTTPS三种类型。 |
健康状态定义 | 状态码:成功对应的状态码,主要是2XX、3XX等。 成功次数:成功的次数超过该值则认为节点健康。 |
不健康状态定义 | 超时次数:超时次数超过该值则认为节点不健康。 TCP失败次数:TCP失败超过该值则认为节点不健康。 HTTP失败次数:HTTP失败超过该值则认为节点不健康。 状态码:失败对应的状态码,包括4XX、5XX等。 |
后端访问签名
使用云原生网关的场景下,后端服务不直接对外暴露服务,而是通过云原生网关将请求转发到后端。从安全角度,配置认证鉴权策略限制只允许云原生网关等作为请求方访问自己。针对这种场景,云原生网关可以配置特定的签名策略,用于后端服务的认证鉴权。当前云原生网关添加服务时可以配置HMAC算法签名策略,如下图所示:
配置选项说明如下:
选项 | 说明 |
---|---|
认证算法 | 当前仅支持HMAC。 |
Access Key | 后端服务校验签名使用的HMAC access key。 |
Secret Key | 后端服务校验签名使用的HMAC secret key。 |
加密算法 | HMAC加密算法,支持hmac-sha1, hmac-sha256, hmac-sha512。 |
加密Headers列表 | 用于计算签名的header列表。 |
URL参数编码 | URL参数是否经过编码之后再计算签名,默认是。 |
服务版本管理
服务的版本一般是服务迭代过程中的概念,在云原生网关的场景下,服务版本引申为服务的标签概念,一个服务可能有多个版本(标签);基于服务的版本(标签)可以实现如标签路由、灰度发布、高可用部署等能力;如对于一个服务存在多个版本的场景,基于不同版本的实例上所携带的标签不同,将服务定义为多个不同的版本;根据请求的特征匹配,路由到不同版本的服务中可以实现标签路由;将服务的流量在多个版本之间分配,可以实现金丝雀、蓝绿等灰度功能;根据服务的部署标签定义的版本则可以应用在服务的高可用部署上。
对于容器或者Nacos来源的服务,云原生网关支持根据服务的元数据定义不同的版本,如下图对于容器服务,可以根据pod的标签定义不同的服务版本:
配置说明如下:
配置 | 说明 |
---|---|
版本名称 | 自定义的版本名称。 |
标签名 | 版本对应的标签名,可选值来自当前服务的元数据。 |
标签值 | 版本标签名对应的标签值,可选值来自当前服务的元数据。 |
实例数/比例 | 所选的标签选择到的实例数/相对于整体实例数的比例。 |
添加完服务版本则可以看到如下: