【问题标题】:ADFS health check for connection between ADFS and SQL DatabaseADFS 与 SQL 数据库之间连接的 ADFS 运行状况检查
【发布时间】:2021-10-30 07:38:22
【问题描述】:

问题总结: 如果 ADFS 服务仍在运行但 ADFS 和 SQL 数据库之间的连接已断开,则对 ADFS 和 WAP 的 HTTP 探测是不够的。

ADFS 环境:

ADFS Environment

在环境中使用 HTTP 探测: ADFS environment with HTTP Probes

HTTP 探测: 对 ADFS 环境进行健康检查的常规方法是设置 HTTP 探测器,对每个 WAP 和 ADFS 服务器 URL 或 IP 运行 HTTP 检查。 他们通过 HTTP 端口 80 运行健康检查。返回 200(OK)。 对这些探测端点的响应是 HTTP 200 OK,并且仅在本地检查服务器/服务,不依赖后端服务(SQL 集群\数据库)

结论: 对 ADFS 和 WAP 服务器使用 HTTP 探测是不够的

问题描述: HTTP 端口分别直接连接到 WAP 和 ADFS 服务器。 这意味着他们只检查服务器和服务本身是否正常。 ADFS 后端之间的连接存在一个已知问题 SQL 服务器死了 2-3 分钟。在这段时间, 如果您不走运,ADFS 后端服务器会超时。 这里的问题是当 ADFS 后端服务器超时时, ADFS 服务 本身仍在运行。(就 HTTP 探测而言,ADFS 是 仍在启动和运行。)HTTP 探测器发出信号表明 ADFS 服务正常。 所以负载均衡器直到将最终用户发送到 与 SQL 数据库有死连接的 ADFS 服务 因为它的服务仍在运行。 最终用户在身份验证期间最终会出错。

问题: 如何在 ADFS --> SQL 集群/数据库之间设置适当的运行状况检查? 这样就可以看到 ADFS 之间的通信 --> SQL 不起作用 如预期。就像 ADFS 服务器上的服务仍在运行,但 ADFS 和 SQL 数据库之间的数据库连接已断开的情况一样。 我希望将健康检查作为第一站用于监控。其次,您可以构建一些可以通过运行状况检查执行的恢复步骤。

【问题讨论】:

    标签: sql adfs health-check probe


    【解决方案1】:

    • 您可以创建一个“UDL”文件并在其中提及所需的数据库连接详细信息以及用于访问 ADFS 服务器中提到的 SQL Server 数据库实例的帐户的用户名和密码。请按照以下步骤创建 UDL 文件:-

    1. 创建一个文本文件并将其扩展名更改为“.udl”并打开它。

    2. 在提供程序选项卡中,选择“Microsoft OLE DB Provider for SQL Server”,然后在连接选项卡上,输入服务器的名称、用户名和密码,同时选中“允许保存密码”复选框。

    3. 然后在通过文件完成数据库存在的初始连接后,从下拉列表中选择数据库并点击测试连接按钮。

    4. 无论来自该服务器的连接是否成功,您都会得到正确的结果。

    5. 您还可以指定连接超时(以秒为单位)以及要选择的该数据库的权限。此外,在“全部”选项卡中,您可以选择和设置有关此数据库连接检查的各种参数,包括保存用于测试数据库连接的安全信息。

    6. 完成后,您可以通过脚本设置任务调度程序以定期运行,并通过以下命令通过此文件检查连接状态:-

      'Get-content C:\UDLs\Test.udl' --> 运行此文件后

    通过这种方式,您可以探测 ADFS 和 SQL 服务器之间的连接是否完好,作为进行健康检查的第一站。

    请参考以下截图:-

    https://docs.microsoft.com/en-us/sql/connect/oledb/help-topics/data-link-pages?view=sql-server-ver15

    【讨论】:

    • 嗨@Masen,如果答案有帮助,请您接受它作为答案,以便遇到相同问题的其他人可以找到此解决方案并解决他们的问题
    • "在其中提及所需的数据库连接详细信息以及用于访问 ADFS 服务器中提到的 SQL Server 数据库实例的帐户的用户名和密码" 您是指哪个帐户?用于运行“ADFS”服务的服务帐户?
    • 用于连接到 ADFS DB 的服务帐户,希望在 Windows Server 上配置 ADFS 角色时,指定将管理 ADFS 服务的服务帐户详细信息,该服务依次连接到SQL DB 代表 ADFS 服务作为服务主体。
    • 嗨@Masen,你能解决你的问题吗??
    • 感谢您抽出宝贵时间回答并感谢您对 Kartik 的所有意见。但是我的故障排除使我得出结论,监视 ADFS 服务和 SQL 数据库之间的连接的最佳方法是利用联合元数据。构建了一个用于监控和恢复 ADFS 服务的小应用程序(Windows 服务)。此服务每分钟轮询两次 adfs 联合元数据文件。如果返回 200,那么一切都很好。如果在 X 时间内返回任何其他内容,则重新启动 ADFS 服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 2017-10-07
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多