启用用户和设置属性时如何处理DC复制延迟?

问题描述 投票:0回答:1

我正在开发一个应用程序,需要对从域控制器 (DC) 获取的用户执行一些操作。这些操作包括启用用户然后为他们设置属性。对于用户来说,启用和应用属性是一个原子操作。

我面临的问题是 DC 复制大约需要 15 秒才能复制到站点中的所有 DC。由于这种延迟,我后来的请求有时会到达数据尚未同步的 DC,从而导致用户尚未启用的错误。

例如,假设我有一个名为“John Doe”的用户,该用户当前已被禁用。我执行以下步骤:

  • 在 DC1 上启用“John Doe”(负载均衡器可以将请求定向到 DC1)。
  • 立即尝试在 DC2 上设置“John Doe”的属性。 由于 DC 复制大约需要 15 秒,因此 DC2 可能没有启用“John Doe”的更新信息。因此,设置属性的请求失败,并出现错误,指示用户尚未启用。

如何处理这种复制延迟以确保我的请求不会失败?

我正在考虑的方法是:

  1. 在第一个请求后添加 15 秒的延迟,即让它们在尝试应用属性之前等待 15 秒。
  2. 添加第二个请求失败时的重试。这种方法导致我们的系统出现一些回归。
active-directory replication domaincontroller
1个回答
0
投票
  1. 显式选择特定的域控制器 - 不是通过第三方负载均衡器(从您的描述来看,它似乎只用于处理读取,而不是写入),而是通过 DNS SRV 记录获取 DC 列表并选择一个用于操作的持续时间,这是 Windows 本身通常会执行的操作。

  2. 对所有更改重新使用单个 LDAP 连接(通过单个 TCP 连接,隐式绑定到特定 DC)。特别是如果所有这些更改都是“立即”完成,您的代码就没有理由在每次操作之间断开连接并重新连接到 LDAP。

© www.soinside.com 2019 - 2024. All rights reserved.