You need to enable JavaScript to run this app.
导航

通过 GTM 在 CDN 中实现自定义的负载均衡、健康检查和容灾切换

最近更新时间2024.05.08 14:05:07

首次发布时间2024.05.08 14:05:07

火山引擎内容分发网络(CDN)由遍布全球的缓存节点组成。火山引擎 CDN 将站点内容分发至靠近用户的缓存节点,使得用户可就近快速获取所需内容,有效地解决公网拥塞、网络延迟等问题,优化用户访问体验。在火山引擎 CDN 中,您可以配置多个源站实现源站间的故障转移。通过设置每个源站的权重,实现回源请求在源站间的负载均衡。

火山引擎 CDN 提供的负载均衡和故障转移机制是不可定制的,但是可以满足大部分业务的需求。但是,如果您的业务需要自定义源站负载均衡和故障转移的逻辑,可以使用火山引擎云调度(GTM)。

同时,如果您有来自多个云厂商的 CDN 服务,您需要将用户请求按照特定的规则在不同云厂商之间分配,您也可以使用云调度 GTM。

在火山引擎 CDN 中对源站进行负载均衡、健康检查和容灾切换

您可以通过云调度 GTM 在火山引擎 CDN 中实现源站在多可用区或多地域之间的负载均衡、健康检查与容灾切换:

  • 假设您的源站部署在公有云服务或自建 IDC 服务中一个地域的多个可用区。当某个可用区的服务发生故障时,您可以根据容灾预案进行自动或手动的故障转移,把用户流量切换到其他可用区,以确保服务不中断或快速恢复。参见 互联网服务的同城容灾
  • 您的源站在多个地域部署服务时,需要实现地域级别故障下的异地灾备,确保服务在故障发生时可以快速恢复或继续运行。您可以通过异地多活架构实现地域级别故障下的流量管理和异地灾备。异地多活架构同时支持一个区域内多个可用区和跨地域的容灾。参见 互联网服务的异地多活

下图展示了源站部署在公有云服务中一个地域的多个可用区时,您通过云调度 GTM 实现的负载均衡、健康检查和容灾切换方案。域名为 www.example.com 的网站连接到火山引擎 CDN 服务。网站的域名会通过 CNAME 记录指向火山引擎 CDN 的 CNAME www.example.com.volcgslb.com。同时,您在火山引擎 CDN 中把域名的回源地址设置为云调度 GTM 的调度域名 www.example.com.gtm.volcdns.com。火山引擎 CDN 的回源节点向回源地址发起回源请求时,云调度 GTM 会根据您设置的路由策略返回主源站或备源站的 IP 地址。主源站和备源站位于相同地域的不同可用区。源站之间的距离较近,因此流量切换对网络延迟造成的影响较小。主源站和备源站采用同城双活模式,即主源站承担 50% 的回源请求,备源站承担 50% 的回源请求。

注意

如果源站是私有存储桶,则不适用该方案。

云调度 GTM 会定期对主源站和备源站的服务器进行健康检查,判定每个源站的服务器是否可用:

  • 如果主源站的所有服务器都不可用,主源站所承担的回源请求会被全部转移到备源站。
  • 如果在下一次健康检查时,主源站的服务器又恢复可用,那么恢复可用的服务器会重新承担其权重所对应的比例的回源请求。

实现步骤

参见以下步骤实现上图所示的多个可用区之间的负载均衡和容灾。

步骤一:配置云调度 GTM

在云调度 GTM 中,完成以下步骤:

  1. 创建一个 GTM 实例。参见 创建 GTM 实例。您需要把接入方式设置为 CNAME接入。您可以设置任意一个调度域名。
  2. 配置 GTM 实例。您需要:
    • 创建两个地址池。参见 创建地址池。每个地址池所包含的目标地址如下:

地址池

目标地址

目标地址权重

源站(主)

1.11.xx.xx
1.21.xx.xx

25
25

源站(备)

2.11.xx.xx
2.21.xx.xx

25
25

  • 添加一条路由规则。参见 添加路由规则。然后,在路由规则中添加 3 个地址池集合。
    • 地址池集合 A:包含源站(主) 和源站(备)地址池。优先级为 1。
    • 地址池集合 B:包含源站(主)地址池。优先级为 2。
    • 地址池集合 C:包含源站(备)地址池。优先级为 3。
  1. 启用 GTM 实例调度。参见 启用或停用 GTM 实例调度。启动成功后,您就实现了多个可用区之间的负载均衡和容灾。

步骤二:配置火山引擎 CDN

在火山引擎 CDN 中,完成以下步骤:

  1. 创建一个加速域名 www.example.com,并根据您的需求配置该加速域名。参见 新增域名
  2. 把回源地址设置为云调度 GTM 的调度域名。参见 配置源站

多个 CDN 厂商间的负载均衡和容灾

您的网站需要通过 CNAME 记录连接到 CDN 服务。不同 CDN 厂商的 CNAME 域名不同。在云调度 GTM 中,您可以把不同 CDN 厂商的 CNAME 域名设置为目标地址并配置路由策略。用户在访问网站域名时,云调度 GTM 会根据您设置的路由策略返回一条合适的 CNAME 记录,从而把用户连接到 CNAME 记录对应的 CDN 厂商。

在下图中,用户访问域名为 www.example.com 的网站时,云调度 GTM 会根据路由策略返回一条合适的 CNAME 记录。

火山引擎内容分发网络(CDN)承担 70% 的用户请求,第三方 CDN 厂商承担 30% 的用户请求。云调度 GTM 会定期对 CNAME 域名进行健康检查。如果第三方 CDN 厂商不可用,第三方 CDN 厂商所承担的用户请求会被转移到火山引擎内容分发网络(CDN)。

实现步骤

参见以下步骤实现上图所示的多 CDN 厂商间的负载均衡和容灾。

步骤一:配置 CDN

在火山引擎 CDN 和其他 CDN 厂商中,创建加速域名,并根据您的需求配置该加速域名。参见 新增域名

步骤二:配置云调度 GTM

在云调度 GTM 中,完成以下步骤:

  1. 创建一个 GTM 实例。参见 创建 GTM 实例。您需要把域名设置为 www.example.com
  2. 配置 GTM 实例。参见 创建地址池。您需要:
  • 创建一个地址池。地址池所包含的目标地址如下:

目标地址

目标地址权重

www.example.com.volcgslb.com

70

www.example.com.xxx.xxx

30

  • 添加一条路由规则。参见 添加路由规则。在路由规则中添加一个地址池集合。地址池集合包含您创建的地址池。
  1. 启用 GTM 实例调度。参见 启用或停用 GTM 实例调度。启动成功后,您就实现了多个 CDN 厂商之间的负载均衡和容灾。