sql - ADFS 与 SQL 数据库之间连接的 ADFS 运行状况检查
问题描述
问题总结: 如果 ADFS 服务仍在运行但 ADFS 和 SQL 数据库之间的连接已断开,则对 ADFS 和 WAP 的 HTTP 探测是不够的。
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 数据库之间的数据库连接已断开的情况一样。我希望将健康检查作为第一站用于监控。其次,您可以构建一些可以通过此运行状况检查执行的恢复步骤。
解决方案
• 您可以创建一个“UDL”文件并在其中提及所需的数据库连接详细信息以及用于访问ADFS 服务器中提到的SQL Server 数据库实例的帐户的用户名和密码。请找到以下步骤来创建 UDL 文件:-
创建一个文本文件并将其扩展名更改为“.udl”并打开它。
在提供程序选项卡中,选择“Microsoft OLE DB Provider for SQL Server”,然后在连接选项卡上,输入服务器名称、用户名和密码,同时选中“允许保存密码”复选框。
然后,当通过文件完成数据库存在的初始连接时,从下拉列表中选择数据库并点击测试连接按钮。
无论来自该服务器的连接是否成功,您都将获得正确的结果。
您还可以指定连接超时(以秒为单位)以及要选择的该数据库的权限。此外,在“全部”选项卡中,您可以选择和设置有关此数据库连接检查的各种参数,包括保存用于测试数据库连接的安全信息。
完成后,您可以通过脚本设置任务调度程序以定期运行,并通过以下命令通过此文件检查连接状态:-
'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
推荐阅读
- laravel - 如何在模型关系视图中使用 if 条件。Laravel
- javascript - 如何在 .then() 中访问调用 ES6 Promise 的类实例?
- c - 为什么 K&R2 使用这么多全局变量?
- android - Kivy 相机显示屏旋转 -90 度
- javascript - 跨程序/线程共享变量的最佳方式?
- vb.net - 任务进程中的递增数字
- php - PHP Mailer 将字符添加到文本字段
- validation - Zip 文件的文件夹/目录结构的架构
- mysql - 允许远程访问 MySQL 服务器 (Windows | PyMySQL)
- python - 执行查询,然后在 pymysql python 中获取结果