为了保障业务稳定性,通常采用多个ACK集群对等部署的方式来实现高可用。云原生API网关支持多ACK集群接入,通过一个网关实例同时关联多个集群,将同名服务合并,在多个服务端点之间做负载均衡。搭配网关的健康检测功能,自动探测服务可用性,实现更高效的故障自动切流。本文以两个ACK集群为例,介绍如何通过云原生API网关管理多个ACK集群。
前提条件
创建两个ACK集群。具体操作,请参见创建ACK托管集群。
在两个集群中配置同名的服务。以
httpbin
服务为例,示例配置如下所示。
背景信息
在生产实践中,若对业务稳定性要求非常高,通常会采用多ACK集群对等部署的方式来保障高可用。例如,集群A部署在可用区A,集群B部署在可用区B,A与B两个集群部署的服务一致,当其中一个集群故障时可以快速切换流量。
云原生API网关为了支持业务的高可用部署诉求,提供了多ACK集群接入功能。即用一个云原生API网关实例同时关联A、B两个集群,网关会将两个集群的同名服务进行合并,合并后的服务名称与原来保持一致,但是服务的IP地址列表会同时包含两个服务的所有IP地址。如果A或者B集群故障,利用云原生API网关的路由能力会自动将流量分发到正常集群。推荐搭配网关的主动健康检测功能一起使用,由网关主动探测服务的IP地址可用性,从而带来更高效的故障自动切流。
如下图所示,云原生API网关管理着来自两个ACK集群的A、B两个服务。当ACK集群B发生crash时,仍然能够通过网关访问到集群A的A、B两个服务,且该切流动作自动发生,无需人工干涉。
步骤一:在云原生API网关中添加容器服务来源
登录云原生API网关控制台。
在左侧导航栏,选择实例,并在顶部菜单栏选择地域。
在实例页面,单击目标网关实例名称。
在左侧导航栏,选择服务,并单击来源页签。
单击创建来源。在创建来源面板,选择来源类型为容器服务,并配置相关参数,然后单击确定。具体操作,请参见创建服务来源。
步骤二:在云原生API网关中分别添加服务A与B
登录云原生API网关控制台。
在左侧导航栏,选择实例,并在顶部菜单栏选择地域。
在实例页面,单击目标网关实例名称。
在左侧导航栏,选择服务,并单击服务页签。
单击创建服务。在创建服务面板,选择服务来源为容器服务,并选择命名空间和服务列表,然后单击确定。具体操作,请参见创建服务。
步骤三:在云原生API网关中为目标服务添加路由配置
创建HTTP API,具体操作,请参见创建HTTP API。
单击目标API,在左上角单击创建路由。
在创建路由页面,配置相关参数,然后单击保存并发布。具体操作,请参见创建路由。
结果验证
当集群A、B正常时
在服务列表页面查看服务地址。
可观察到服务地址中有两条记录。
多次访问网关,具体代码如下所示,可看到会返回两个不同的hostname。
curl <网关的环境二级域名地址>/version
当集群A异常时
在集群A中删除httpbin服务。
此时,服务地址只有一条记录。
多次访问网关,具体代码如下所示,可看到hostname只有一个。
curl <网关的环境二级域名地址>/version