ACK One支持通过ALB多集群网关来实现异地容灾系统,异地容灾可以防范地域性质的灾难损害,例如地震、水灾等灾害,但同时会带来更高的延迟、更高的费用及维护成本。本文将介绍通过ALB多集群网关来实现异地容灾系统的架构和使用场景。
方案架构
在两个地域中各创建一个ACK集群,并在地域1中创建ACK One舰队和ALB多集群网关,在Cluster 2中安装ALB Ingress Controller,创建出ALB 2,用于冷备。
通过GTM对接地域1中的ALB多集群网关和地域2的ALB实例,以实现地域1发生地质灾害后,可以切换到地域2中的ALB 2。
在舰队中,通过多集群网关实现跨地域的两个集群灵活的7层流量转发,如QUIC的0-RTT、基于header转发等,二者互作灾备。
Cluster 1和Cluster 2通过CEN或VPC对等连接等方式打通后,跨地域流量通过专线转发,保证可靠性。
RDS数据同步需要依赖中间件自身能力。
方案优势
基于ACK One ALB多集群网关的异地容灾系统方案,具有以下优势:
更强的多集群路由转发能力:提供基于内容的高级路由功能,以及比传统GTM更灵活的健康检查机制,以适应更复杂的应用场景。
统一多集群流量管理入口:通过一个控制面(舰队)管理Ingress配置和服务,更容易扩展和维护服务和应用,降低管理成本。
缓解DNS客户端缓存问题:通过容灾场景可以看出,高频率服务异常或集群异常,无需DNS切换域名解析IP,可实现秒级故障转移。
使用场景
通过ALB多集群网关来快速实现多地域容灾系统主要适用以下场景:
跨地域高可用、本地域资源不足。例如在AI热潮的当下,GPU资源异常紧缺等情况。
客户端应用对时延要求不高,但需要更强的多集群流量管理能力。
完整的容灾能力由ALB多集群网关和GTM共同实现,ALB多集群网关可以统一管理多集群的流量路由和转发。以下故障恢复场景为您介绍何时由GTM切换流量,何时由多集群网关处理。
对于地域1内的集群故障或服务出现异常,或者地域2发生地质灾害时,ALB多集群网关都会自动切流到健康集群,无需切换DNS IP。
只有在地域1发生地质灾害或ALB服务故障时,GTM才会基于健康检查将流量切换到地域2的ALB。
前提条件
已购买GTM实例。
已开启舰队管理功能。具体操作,请参见开启舰队管理功能。
已从ACK One控制台获取Fleet实例的KubeConfig,并通过kubectl连接至Fleet实例。
步骤一:规划网络及跨地域网络互联互通
步骤二:基于ALB多集群网关实现异地容灾
异地容灾主要流程如下。详细操作,请参见构建同城容灾系统。
在ACK One舰队中通过创建AlbConfig来创建ALB多集群网关,并将两个ACK集群添加到网关。
根据如下示例在ACK One舰队中创建路由/转发规则(Ingress)实现同城异地容灾。更多路由能力,请参见不同场景下的流量管理方式和配置Ingress。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/listen-ports: | [{"HTTP": 8001}] alb.ingress.kubernetes.io/cluster-weight.${cluster1-id}: "20" alb.ingress.kubernetes.io/cluster-weight.${cluster2-id}: "80" name: web-demo namespace: gateway-demo spec: ingressClassName: alb rules: - host: alb.ingress.alibaba.com http: paths: - path: /svc1 pathType: Prefix backend: service: name: service1 port: number: 80
步骤三:定期备份Ingress资源
为了保证地域1发生故障时服务的持续运行,应定期备份地域1舰队中的Ingress资源和AlbConfig。在故障发生时,将这些Ingress资源同步到Cluster 2,使ALB 2能够将流量转发到Cluster 2的后端服务,从而确保服务的正常运行。
您可以自行选择备份方式,例如将数据备份到地域2的OSS等。
步骤四:配置GTM主备容灾
完成上述步骤后,您将具备对异地两个集群的统一管理能力以及部分容灾能力。当地域1的集群或服务出现异常,或者地域2发生故障时,ALB多集群网关将自动平滑地将流量故障转移。此外,对于地域1发生地质灾害或地域1 ALB服务故障的情况,我们借助云解析DNS的全局流量管理(GTM)进行主备容灾管理。本步骤可在地域1发生故障时,再做配置。具体流程如下:
在地域2的ACK Cluster 2中通过ALB Ingress创建ALB实例。相关操作,请参见创建AlbConfig。
将地域1的ALB多集群网关和地域2的ALB实例的DNSName配置到GTM,形成主备结构,以便在地域1发生故障时,GTM可以基于健康检查自动切换到由地域2提供服务。相关操作,请参见GTM如何实现主备容灾。
说明此步骤中的GTM切换仍会因DNS客户端的本地缓存问题而导致较长时间的服务中断。