启用 DNS 全局负载均衡

GSLB(全球服务器负载均衡)是一种基于 DNS 的流量分发功能,能够智能地在多个服务器集群之间分配流量。GSLB 结合了服务器可用性、距离、系统负载、RPS(每秒请求数)和连接数等指标,通过 DNS 响应将用户请求引导到最合适的服务器上。

要启用 DNS > Global Server Load Balancing,需要配置以下参数:

全局配置

  • Plan update interval:全局负载均衡计划的更新间隔。
  • Max number of DNS results:限制 DNS 解析记录的数量,如果返回的解析记录超过限制,将不返回超出限制的解析记录。

节点配置

  • Low Watermark:当节点的指标超过低水位时,按照概率将流量分发到其他节点。
  • High Watermark:当节点的指标超过高水位时,不再将流量分发到该节点。
  • Metric:负载均衡参考指标(如果不选择指标,则按照 DNS 配置进行应答,不进行智能重分发)。
    • load_1m:当前节点 1 分钟内的负载均值。例如,对于 4 核系统,低水位为 1,高水位为 4。
    • load_5m:当前节点 5 分钟内的负载均值。例如,对于 4 核系统,低水位为 1,高水位为 4。
    • load_15m:当前节点 15 分钟内的负载均值。例如,对于 4 核系统,低水位为 1,高水位为 4。
    • rps:当前节点每秒处理的请求数。例如,最大 RPS 为 1000 的系统,低水位为 100,高水位为 1000。
    • active_conns:当前节点的活跃连接数。例如,最大活跃连接数为 10000 的系统,低水位为 1000,高水位为 10000。

以上配置完成后,Admin 就会根据实际节点指标按照更新间隔定时生成负载均衡计划并下发到各个节点,生成的计划可以在计划列表中查看。

查看负载均衡计划

全局负载均衡计划生成后,可以在计划列表中看到这些图表。

Total Traffic Distribution 显示各集群网络流量(入口和出口流量)的分布图。

左侧包含两类图表:

Traffic Distribution 展示了各集群节点的真实流量分布图。

Original DNS Plan 展示了不开启全局负载均衡,仅按照 DNS 解析结果进行负载均衡的流量分布图。

右侧的 GSLB Plan 显示生成的负载均衡流量分布图。

如果与左侧图表的集群节点流量分布有差异,箭头颜色将显示为红色或绿色,分别代表减少该节点的流量流入和增加节点的流量流入。 单击 Previous PlanNext Plan 可以查看之前的计划历史。

示例

下面以我们 mini-CDN 的北京集群为例,未配置节点指标之前,两个节点的流量分布是相似的。

假设北京节点 2 (127.0.0.3) 的配置较低,只能处理少量请求。以每秒请求数 (RPS) 作为节点的参考指标,我们将北京节点 2 的高水位配置调整为一个较低的数值。

等待计划更新,一段时间后我们可以观察到负载均衡已经生效。第二个节点的流量开始下降,大部分请求会被分发到北京节点 1 (127.0.0.2),而部分请求也会被分发到杭州节点 (127.0.0.1)。

我们配置一条 DNS 记录:www.test.com,将其解析为北京的网关集群。

使用 dig 命令向指定 Node 节点连续请求 www.test.com 1000 次,可以看到解析的分布结果与全局负载均衡计划中的结果是近似的。

$ for i in {1..1000}; do dig www.test.com @127.0.0.1 +short; done | sort  | uniq -c
    168 127.0.0.1
    832 127.0.0.2