Date: 6月 19, 2018
在SQL Server故障转移实例群集连接中排查Azure ILB连接问题
我使用以下工具来帮助我解决SQL Server故障转移群集实例连接问题的疑难解答。特别是那些讨厌的Azure ILB连接问题。每当我找到一个新工具时,我都会尝试更新这篇文章。
NETSTAT
第一个工具是一个简单的测试,用于验证SQL群集IP是否正在侦听它应该侦听的端口。在这种情况下,SQL群集IP地址是10.0.0.201。但它使用的是端口1433的默认实例。
这里是帮助你快速识别活动节点是否在该端口上侦听的命令。在我们的情况下,一切看起来很正常
C: Users dave.SIOS> netstat -na |找到“1433”
TCP 10.0.0.4:49584 10.0.0.201:1433 ESTABLISHED
TCP 10.0.0.4:49592 10.0.0.201:1433 ESTABLISHED
TCP 10.0.0.4:49593 10.0.0.201:1433 ESTABLISHED
TCP 10.0.0.4:49595 10.0.0.201:1433 ESTABLISHED
TCP 10.0.0.201:1433 0.0.0.0:0听
ESTABLISHED
TCP 10.0.0.201:1433 10.0.0.4:49592 ESTABLISHED
TCP 10.0.0.201:1433 10.0.0.4:49593 ESTABLISHED
TCP 10.0.0.201:1433 10.0.0.4:49595 ESTABLISHED
一旦我确定SQL正在监听正确的端口,我使用PSPING尝试远程连接到端口。
PSPING
PSPing是Microsoft提供的PSTools软件包的一部分。我通常下载该工具并将PSPing直接放在我的System32文件夹中,这样我就可以随时使用它而无需更改目录。
现在,假设从ILB,集群和防火墙的角度来看,所有配置都是正确的,那么您应该能够从被动服务器ping SQL集群IP地址和端口1433。你会得到下面显示的结果…
C: Users dave.SIOS> psping 10.0.0.201:1433
PsPing v2.01 - PsPing - ping,延迟,带宽测量工具
Copyright(C)2012-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
TCP连接到10.0.0.201:1433:
5次迭代(热身1)连接测试:
连接到10.0.0.201:1433(热身):6.99ms
连接到10.0.0.201:1433:0.78ms
连接到10.0.0.201:1433:0.96ms
连接到10.0.0.201:1433:0.68ms
连接到10.0.0.201:1433:0.89ms
如果事情没有正确配置,您可能会看到与以下类似的结果...
C: Users dave.SIOS> psping 10.0.0.201:1433
TCP连接到10.0.0.102:1433:
5次迭代(热身1)连接测试:
连接到10.0.0.102:1433(预热):
由于超时期限到期,此操作返回。
连接到10.0.0.102:1433(预热):
由于超时期限到期,此操作返回。
连接到10.0.0.102:1433(预热):
由于超时期限到期,此操作返回。
连接到10.0.0.102:1433(预热):
由于超时期限到期,此操作返回。
连接到10.0.0.102:1433(预热):
由于超时期限到期,此操作返回。
如果PSPing连接,但您的应用程序连接出现问题,则可能需要深入一点。我见过像Great Plains这样的应用程序也想连接到445端口。如果您的应用程序无法连接,但PSPing可以很好地连接到1433。然后,您可能需要执行网络跟踪并查看应用程序尝试连接的其他端口。最后一步是为这些端口添加负载平衡规则。
命名实例
计划使用命名实例?您需要确保锁定TCP服务以使用静态端口。 同时,您还需要确保向负载平衡器添加规则,以重定向SQL浏览器服务的UDP 1434。否则,您将无法连接到您的命名实例。
FIREWALL
打开TCP端口1433和59999应该涵盖所有需要的手动步骤。但是,在解决连接问题时,我通常关闭Windows防火墙以消除防火墙,将其视为问题的可能原因。别忘了。Azure还有一个称为网络安全组的防火墙。如果有人将其从可能阻止流量的默认设置改变。
姓名解析
尝试ping SQL集群名称。它应该解析为SQL Server群集iP地址。尽管我已经看到过几次,但与SQL群集网络名称关联的DNS A记录神奇地从DNS中消失。如果是这种情况,请继续阅读 – 在SQL中将SQL Custer名称和IP地址作为A记录进行读取。
SQL配置管理器
在SQL配置管理器中,您应该看到列出的SQL群集IP地址和端口1433。如果碰巧你安装了一个命名实例,你当然需要进入这里并将端口锁定到一个特定的端口,并使你的负载平衡规则反映该端口。由于Azure ILB仅限于每个AG的ILB限制,所以实际上我没有看到使用命名实例的有效理由。让自己更容易,只使用SQL的默认实例。(更新:截至2016年10月,每个ILB可以有多个IP地址,因此您可以在群集中安装多个SQL实例。)
经过Clustering For Mere Mortals的许可转载。