跳转到内容
搜索文档

DNS 持久性

最后更新 查看 MarkdownAgent 设置

本指南说明如何在使用 Cloudflare Load Balancing 时实现 DNS 持久性,类似于传统基于 DNS 的负载均衡器提供的功能。

DNS 持久性确保来自同一本地 DNS 服务器的后续 DNS 请求收到相同的 IP 地址。这对于需要会话一致性的应用(如 VPN 连接或身份验证系统)非常有用。

Cloudflare Load Balancing 可以使用不同的配置方法为仅 DNS 的负载均衡实现 DNS 持久性。


仅 DNS 负载均衡持久性

对于仅 DNS 的负载均衡,Cloudflare 提供三种实现 DNS 持久性的方法:

方法 1:基于 PoP 位置的地理导向(推荐)

此方法使用接收 DNS 请求的 Cloudflare Point of Presence (PoP) 的地理位置进行地理导向。

配置步骤

  1. 为每个端点创建一个池。不要对任一池应用负载卸载。
  2. 创建仅 DNS 的负载均衡器并添加两个池。确保 pool_1 排在 pool_2 之前。
  3. Traffic Steering(流量导向) 下,选择 Geo Steering(地理导向)
  4. 为一个区域(例如 Eastern North America(北美东部))创建地理导向规则,选择相同的池但顺序相反(pool_2 在前,然后 pool_1)。
  5. 使用 Never prefer ECS(从不优先使用 ECS)PoP location(PoP 位置) 来确定请求来源。

工作原理

指定区域 Cloudflare PoP 收到的所有请求都发送到一个端点,而其他区域的请求发送到另一个端点。

为什么推荐

使用接收请求的 Cloudflare PoP 作为导向标准比 IP 哈希或分割 IP 空间更稳定,因为它不受递归 DNS 提供商使用不同出口 IP 的影响。

方法 2:带 IP 哈希的负载卸载

此方法使用负载卸载基于递归 DNS 解析器的源 IP 地址分配流量。

配置步骤

  1. 为每个端点创建一个池(例如 pool_1endpoint_1pool_2endpoint_2)。
  2. 在第一个池上,在 Endpoint Steering(端点导向) 下选择 Hash(哈希)
  3. 配置 Load Shedding(负载卸载)
    • Policy(策略):IP Hash
    • Shed %(卸载百分比):50%(在两个池之间平均分配流量)
  4. 创建仅 DNS 的负载均衡器并添加两个池。确保 pool_1 排在 pool_2 之前。
  5. 不要配置额外的流量导向或规则。

工作原理

此配置使用 IP 哈希将一半请求卸载到第二个池,并按递归解析器的源 IP 尊重会话亲和性。

限制

某些递归 DNS 提供商(如 Google DNS 8.8.8.8 或 Quad9 9.9.9.9)可能随机使用不同的出口 IP,这会降低持久性稳定性。

方法 3:带 IP 源过滤的自定义规则

此方法使用自定义规则基于 IP 地址范围分割流量。

配置步骤

  1. 为每个端点创建一个池。不要对任一池应用负载卸载。
  2. 创建仅 DNS 的负载均衡器并添加两个池。确保 pool_1 排在 pool_2 之前。
  3. 不要配置流量导向。
  4. 创建 Custom Rule(自定义规则)
    • Field(字段):IP Source Address
    • Operator(运算符):is in
    • Value(值):IP 空间的子集(例如 0.0.0.0/1 表示 IPv4 空间的下半部分)
  5. 对于规则操作,选择 Override(覆盖) > Endpoints(端点) 并将池按相反顺序设置(pool_2pool_1)。

工作原理

源 IP 在 IPv4 空间下半部分的流量发送到一个端点,上半部分的流量发送到另一个端点。

限制

与方法 2 类似,此方法在使用不同出口 IP 的递归 DNS 提供商处可能不太稳定。


相关资源

这篇文档对您有帮助吗?