首页 > 解决方案 > ADFS 与 SQL 数据库之间连接的 ADFS 运行状况检查

问题描述

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

ADFS 环境:

ADFS 环境

在环境中使用 HTTP 探针: 带有 HTTP 探针的 ADFS 环境

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 数据库之间的数据库连接已断开的情况一样。我希望将健康检查作为第一站用于监控。其次,您可以构建一些可以通过此运行状况检查执行的恢复步骤。

标签: sqladfshealth-checkprobe

解决方案


• 您可以创建一个“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 服务器之间的连接是否完好,作为进行健康检查的第一站。

请参考下面的截图以供参考:-

UDL 文件

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


推荐阅读