当两个 Active Directory 服务器中只有一个关闭时应用程序失败

当两个 Active Directory 服务器中只有一个关闭时应用程序失败

当我拔掉其中一个 Active Directory 服务器的以太网电缆时,我的应用程序无法验证用户身份,尽管网络上有另一个 Active Directory 服务器可用。这是为什么?我希望如果其中一个 Active Directory 服务器发生故障,其他服务器可以处理请求。

我使用 Windows Server 2008 R2 64 位。

我有一个 IIS 应用程序,它根据 Active Directory 对用户进行身份验证。

        string serverName = ConfigurationManager.AppSettings["AD.Server"];
        string userName = ConfigurationManager.AppSettings["AD.User"];
        string password = ConfigurationManager.AppSettings["AD.Password"];
        _principalContext = new PrincipalContext(ContextType.Domain, serverName, userName, password);

以下是配置设置:

<add key="AD.Server" value="192.168.0.1"/> <!---  THIS IS THE PRIMARY PRODUCTION SERVER -->
<add key="AD.User" value="Domain\Administrator"/>
<add key="AD.Password" value="******"/>

然后我设置了另一个 Active Directory 服务器(设为 192.168.0.2)。它成功与生产服务器同步。后来,当我关闭第二个 AD 服务器时,我的应用程序失败,并出现异常“服务器无法运行”。

这是为什么?为什么应用程序依赖于第二台服务器,尽管在配置中明确指定了另一台服务器?

答案1

你的 DC 应该按照你期望的方式工作。

  • 跑步DCdiag /a,它是否报告任何故障?
  • 如果您在“工作”DC 处于离线状态时重新启动应用程序,它是否可以工作,大概现在指向另一个 DC(即,它是否存在一个问题,即它在启动时绑定到一个 DC,然后在它正在使用的 DC 不可用时无法重新绑定到另一个 DC)?
  • 新的 DC 启动了多长时间 - IIS 需要有机会知道它的存在。
  • 您不需要指定域控制器 - 您应该将您的应用程序指向域,而不是服务器。

我对发生的事情有点困惑,在你的问题中,你首先说你希望它进行故障转移,但你明确告诉它要使用哪个 DC。如果你需要提供服务器名称,请尝试域的 DNS 名称本身(company.local 或其他)。这将解析为域中每个 DC 的 IP 列表。

答案2

您是否已将 Active Directory 中的所有计算机设置为了解该辅助域控制器 IP 地址?您可以在网络配置的 DNS 部分中执行此操作。

相关内容