DHCP 故障转移允许两个Microsoft DHCP 服务器共享可用性信息,通过复制主服务器与其故障转移伙伴之间的 IP 地址租约和设置来确保高可用性。
所有范围信息都在两个 DHCP 服务器之间共享,包括活动租约。 这使任一 DHCP 服务器能够在其他服务器不可用时承担 DHCP 客户端的责任。
本文概述了 DHCP 故障转移。
DHCP 故障转移简介
使用 DHCP 故障转移时,DHCPv4 范围将从主 DHCP 服务器复制到合作伙伴 DHCP 服务器,从而实现 DHCP 服务的冗余和负载均衡。 共享已启用故障转移的 DHCP 范围的 DHCP 服务器称为 故障转移合作伙伴。 MICROSOFT DHCP 故障转移的实现基于 Internet 工程工作队 (IETF) DHCP 故障转移协议草案。
为故障转移配置两个 DHCP 服务器时,它们共享范围信息,包括所有活动租约。 这样,两台 DHCP 服务器就可以为负载均衡或冗余目的提供同一子网的租约。 首次配置 DHCP 故障转移时,将复制范围设置,如果进行了配置更改,则可以稍后再次复制。
下图演示了启用故障转移的 DHCP 范围的组件和设置如何在两个 DHCP 服务器之间共享。
与为 DHCP 故障转移配置的 DHCP 服务器一起使用的范围和设置是使用名为 DHCP 故障转移关系的新对象共享的。 DHCP 故障转移提供了多个配置选项。 可以在 DHCP 服务器上存在的所有作用域上配置故障转移,也可以仅在某些作用域上配置故障转移。 还可以通过将相同的 DHCP 故障转移设置添加到同一故障转移关系,轻松地对许多范围使用它们。 故障转移关系始终仅限于两个 DHCP 服务器之间。 但是,服务器可以具有许多故障转移关系,每个故障转移关系可以对应不同的 DHCP 服务器。
重要
如果对启用了故障转移的范围进行更改,则必须手动将这些更改复制到合作伙伴服务器,以便同步两个 DHCP 服务器上的范围。 复制会将范围设置从 DHCP 服务器复制,其中复制启动到合作伙伴服务器,覆盖伙伴服务器上的设置。 因此,请务必始终从具有要使用的 DHCP 范围设置的服务器启动复制。
DHCP 故障转移规范
以下规范适用于 DHCP 故障转移。
DHCP 范围:
不能在 DHCP 范围内配置 DHCP 故障转移,以包含两个以上的 DHCP 服务器。
DHCP 故障转移仅支持 DHCPv4 范围。 DHCPv6 范围无法启用故障转移。
如果修改了启用故障转移的范围的参数,则必须将这些设置手动复制到合作伙伴 DHCP 服务器。
范围设置的复制可以从任一 DHCP 服务器启动到其故障转移伙伴服务器。
DHCP 客户端/服务器:
DHCP 客户端必须能够与两个 DHCP 故障转移伙伴服务器通信,直接或通过 DHCP 中继。
启用 DHCP 故障转移后,DHCP 客户端租约可由与最初颁发它的服务器不同的服务器续订。
每个 DHCP 故障转移伙伴服务器独立维护两个单独的同步客户端租约数据库。
配置为故障转移伙伴的 DHCP 服务器可以位于不同的子网上,但这不是必需的。
群集 DHCP 与 DHCP 故障转移一起受支持。 出于故障转移目的,DHCP 群集被视为单个 DHCP 服务器。
可以配置 DHCP 故障转移,并且可以修改设置,而无需暂停、停止或重启 DHCP 服务器服务。
DHCP 故障转移合作伙伴:
DHCP 故障转移合作伙伴必须至少运行 Windows Server 2016。
配置为故障转移伙伴的两台 DHCP 服务器会尝试维护持久性 TCP/IP 连接。
配置为故障转移伙伴的 DHCP 服务器均对另一台服务器上的 DHCP 服务状态有所了解,并在几乎没有延迟的情况下被告知该状态的任何变化。
如果配置为故障转移伙伴的两台 DHCP 服务器无法通信,则采取预防措施,以避免向两个不同的 DHCP 客户端颁发相同的 IP 地址租约。
如果 DHCP 服务器在能够成功将所有 DHCP 客户端信息与其故障转移合作伙伴同步之前变得不可用,则采取预防措施来确保 DHCP 客户端的 DHCP 租约连续性。
每个 DHCP 故障转移伙伴服务器独立维护两个单独的同步客户端租约数据库。
重要
在具有不同操作系统版本的 DHCP 故障转移伙伴服务器之间复制设置时,请始终从操作系统版本较新的 DHCP 服务器修改设置并启动复制。 这可确保故障转移合作伙伴识别设置并一致地复制。
可以使用服务器管理器或 Windows PowerShell 配置 DHCP 故障转移。 有关使用 Windows PowerShell 的信息,请参阅 Windows PowerShell 中的 DHCP 服务器 Cmdlet。 有关在服务器管理器中配置 DHCP 的说明,请参阅此 分步指南。
DHCP 故障转移和 IPv6
Internet 协议版本 6 (IPv6) 范围不支持 DHCP 故障转移。 使用 IPv6 的网络适配器通常使用无状态 IP 自动配置来确定自己的 IPv6 地址。 在此模式下,DHCP 服务器仅提供 DHCP 选项配置,服务器不维护任何租约状态信息。 可以通过设置两个具有相同选项配置的服务器,实现无状态 DHCPv6 的高可用性部署。 即使在监控状态的 DHCPv6 部署中,范围也不在高地址利用率的情形下运行,这使得拆分范围成为高可用性的一个可行方案。
DHCP 故障转移模式
创建 DHCP 故障转移关系时可以使用两种 DHCP 故障转移模式:
热备用模式:此模式为 DHCP 服务提供冗余。
负载均衡模式:此模式跨两个服务器分配 DHCP 客户端租约。
如果需要,可以在热备用模式和负载均衡模式之间切换,但一次只能将一个模式用于单个 DHCP 范围。 如果配置了多个故障转移关系,则还可以在同一 DHCP 服务器上使用这两种模式。 根据网络的物理体系结构自定义部署。
热备用模式
在热备用模式下,两个服务器在故障转移关系中运行,其中活动服务器负责将 IP 地址和配置信息租赁给范围或子网中的所有客户端。 仅当活动服务器不可用时,合作伙伴服务器才承担向 DHCP 客户端颁发租约的责任。 热备用模式非常适合故障转移伙伴仅在活动服务器不可用时暂时使用的情况。
服务器在故障转移关系的上下文中处于活动状态或备用。 例如,对给定关系具有活动角色的服务器可能是另一个关系的备用服务器。 默认情况下,用于创建故障转移关系的服务器是活动服务器,但这不是必需的。
选择热备用时,还必须在活动服务器上配置保留用于备用服务器的 IP 地址百分比(如果活动服务器未响应)。 默认情况下,此保留百分比为 5%。
预留百分比用于新的 DHCP 租约。 如果 DHCP 客户端尝试使用无法联系活动服务器的备用服务器续订 DHCP 租约,则会续订以前分配给 DHCP 客户端的同一 IP 地址。 在这种情况下,将授予临时租约的最大客户端提前期 (MCLT) 持续时间,而不是完整的范围租约时间。
如果备用服务器在 MCLT 过期之前向新 DHCP 客户端发出其所有可用预留百分比租约,则它拒绝颁发新的 DHCP 租约,并继续续订现有租约。 MCLT 过期后,允许备用服务器将整个可用的 IP 地址池用于新的 DHCP 租约。 如果服务器仍处于通信中断状态,则它不会将整个可用的 IP 地址池用于新的 DHCP 租约。
在热备用模式下,中央办公或数据中心服务器通常充当备用备份服务器。 此服务器为远程站点上的本地 DHCP 服务器提供冗余,后者直接为 DHCP 客户端提供服务。 在此类部署中,备用服务器应仅在本地 DHCP 服务器不可用时服务客户端。
负载均衡模式
负载均衡模式是部署的默认模式。 在此模式下,两个 DHCP 服务器同时为给定子网上的客户端提供 IP 地址和选项。 DHCP 客户端请求在两个 DHCP 服务器之间进行负载均衡和共享。 两台服务器之间的默认负载均衡比率为 50:50,但可以将其自定义为从 0% 到 100%之间的任意比率。
负载均衡机制在 RFC 3074 中定义,其中从每个 DHCP 客户端请求中包含的 MAC 地址计算哈希。 根据配置的负载均衡百分比,将一系列哈希值(也称为哈希桶)分配给每个 DHCP 服务器。 服务器根据分配的哈希桶确定它们是否被指定为响应客户端。
在负载均衡模式下,当 DHCP 服务器与其故障转移伙伴失去联系时,它将开始向所有 DHCP 客户端授予租约。 如果它从分配给其故障转移伙伴的 DHCP 客户端收到租约续订请求,则会在 MCLT 期间临时续订相同的 IP 地址租约。 如果它从以前未分配租约的客户端收到请求,则会从其免费 IP 地址池授予新租约,直到用尽,然后开始使用其故障转移伙伴的免费 IP 地址池。 如果 DHCP 服务器进入合作伙伴关闭状态,它将等待 MCLT 持续时间,然后承担 100% IP 地址池的责任。
负载均衡操作模式最适合处于故障转移关系中的两个服务器部署于同一物理站点的情况。 这两个服务器都根据管理员配置的负载分配比率响应 DHCP 客户端请求。
DHCP 故障转移和 Windows 故障转移群集
以下配置支持群集 DHCP 的 DHCP 故障转移:
单个 DHCP 服务器可与 DHCP 故障转移群集建立故障转移关系。
DHCP 故障转移群集可以与其他 DHCP 故障转移群集建立故障转移关系。
在这两种情况下,都必须将 DHCP 故障转移配置为使用群集的名称或 IP 地址,而不是群集节点的名称或 IP 地址。 如果将单个群集节点配置为故障转移伙伴,则当 DHCP 服务器服务移动到群集中的其他节点时,主服务器将进入通信中断状态。
重要
如果使用共享机密,则必须手动将共享机密复制到所有群集节点。 可以使用 PowerShell cmdlet Set-DhcpServerv4Failover 在活动群集节点上复制共享机密。
DHCP 故障转移和 DNS 动态更新
如果将 DHCP 服务器配置为代表客户端计算机执行 DNS 动态更新,则 DHCP 故障转移关系中的两个 DHCP 服务器都必须使用相同的 DNS 凭据来更新 DNS 记录。 如果故障转移伙伴尝试使用不同的凭据更新 DNS 资源记录,此更新将失败。
以下步骤描述客户端计算机使用不同的 DHCP 服务器时 DNS 动态更新如何失败:
Windows DHCP 服务器代表 DHCP 客户端执行动态更新。
DHCP 服务器创建客户端的 DNS 名称,并成为该名称的所有者。
现在,只有 DHCP 服务器本身才能更新客户端名称的 DNS 记录。
原始服务器失败,第二个备份 DHCP 服务器联机;现在,第二台服务器无法更新客户端名称,因为它不是名称的所有者。
另请参阅 DNS 记录所有权和 DnsUpdateProxy 组,以了解对此方案的讨论。
部署注意事项
在部署 DHCP 故障转移之前,请考虑以下事项:
时间同步
若要使 DHCP 故障转移正常工作,必须在故障转移关系中的两个服务器之间保持同步时间。 可以通过部署网络时间协议(NTP)或任何其他替代机制来维护时间同步。 运行故障转移配置向导时,它将比较为故障转移配置的服务器上的当前时间。 如果服务器之间的时差超过一分钟,故障转移设置过程就会停止,出现严重错误,并要求同步服务器上的时间。
每个故障转移协议消息都包含一个时间字段,该字段在源服务器传输消息时填充了协调世界时(UTC)。 对于每个消息,接收服务器将检查数据包中的时间戳字段与接收服务器的时间之间的时间差。 如果发现此时间差大于一分钟,接收服务器将记录一个关键事件,指示两个服务器未同步时间。
基于策略的分配
Windows Server 包含基于策略的 IP 地址分配功能,允许 Windows DHCP 管理员按客户端的特定属性(例如供应商类、用户类、客户端标识符或 MAC 地址)对 DHCP 客户端进行分组。 管理员基于这些属性对客户端进行分组,并且可以将 IP 地址、默认网关、DNS 服务器和其他 DHCP 选项等参数分配给客户端的特定分组。 这样,管理员就可以更好地控制传递到最终主机的配置参数。 此功能引入了单个范围内多个 IP 地址范围的概念。 为了适应这一点,在负载共享模式下的 DHCP 故障转移地址分布基于每个 IP 地址范围完成。
Windows 防火墙
DHCP 故障转移使用 TCP 端口 647 侦听两个故障转移伙伴服务器之间的故障转移消息。 要让 Windows 防火墙允许此流量,将添加以下入站和出站防火墙规则,然后安装 DHCP 服务器角色:
Microsoft-Windows-DHCP-Failover-TCP-In
Microsoft-Windows-DHCP-Failover-TCP-Out
中继代理
初始 DHCPDISCOVER 消息由其所属子网上的 DHCP 客户端广播。 由于路由器通常不转发广播流量,因此,如果 DHCP 服务器不位于同一子网上,则需要一种机制,使 DHCP 客户端能够与 DHCP 服务器通信。 中继代理(通常在路由器上提供)旨在执行此功能、中继 DHCP 和不同子网上的服务器之间的 BOOTP 消息。 中继代理通常在网络设备上配置,也可以在安装了远程访问角色的 Windows Server 上配置 DHCP 中继。 有关详细信息,请参阅 部署 DHCP 中继代理。
如果在网络设备上配置了 DHCP 中继,请参阅供应商的文档了解详细信息。
辅助地址命令通常用于在网络设备上配置 DHCP 中继,例如 ip helper-address 10.0.1.1
。
部署 DHCP 故障转移时,单个 DHCP 中继地址可能不够,因为 DHCP 客户端必须始终能够与主 DHCP 服务器和故障转移伙伴服务器通信。 如果两个 DHCP 服务器位于与 DHCP 客户端不同的子网上,则这至少需要两个 DHCP 中继代理。 例如:ip helper-address 10.0.1.1
、ip helper-address 10.0.1.2
。
在此示例中,这两个 DHCP 服务器位于同一子网(10.0.1.0/24)。 主 DHCP 服务器的 IP 地址为 10.0.1.1,10.0.1.2 是故障转移伙伴服务器的 IP 地址。 如果两个 DHCP 服务器都位于同一子网上,则还可以将子网广播地址(例如:10.0.1.255)配置为单个 DHCP 中继。 如果 DHCP 服务器位于单独的子网上,则无法将子网广播地址用作单个 DHCP 中继。
重复中继代理
虚拟路由器冗余协议(VRRP)是另一种故障转移协议,用于在网络设备上启用冗余。 VRRP 的示例包括热备用路由器协议(HSRP),这是 Cisco 专有 VRRP。 如果在还配置了一个或多个 DHCP 中继的网络设备上配置 VRRP/HSRP,这可能会导致将重复的 DHCP 中继消息发送到同一 DHCP 故障转移服务器。
如果为 DHCP 故障转移配置的单个 DHCP 服务器收到重复的租约请求,这可能会导致客户端租约持续时间不一致,客户端可能会租用属于其他客户端的 IP 地址。 请参阅供应商文档,确定路由器冗余协议是否需要特定配置来支持 DHCP 中继。 例如,Cisco 使用虚拟路由器组为 HSRP 协议提供 DHCP 中继支持。