![如何为 MS SQL AG Listener 分配 IP 地址?](https://linux22.com/image/792572/%E5%A6%82%E4%BD%95%E4%B8%BA%20MS%20SQL%20AG%20Listener%20%E5%88%86%E9%85%8D%20IP%20%E5%9C%B0%E5%9D%80%EF%BC%9F.png)
抱歉大家,这可能是一个愚蠢的问题,但我很纠结。所有手册都像这只需说“单击添加即可将静态 IP 地址添加到选定的子网...”,仅此而已。
我不明白它应该是什么样的地址。
(1) 它只是子网中未占用的可用地址吗?那么,侦听器就像是内部连接到我的网络的“设备”?但是,如果我无法指定网关,它如何神奇地找到通往哪个网关的正确路由?它会将自己添加到服务器路由表中吗?
-或者-
(2) 我首先需要将地址附加到服务器上的某个 LAN 接口。这听起来更合乎逻辑。但是,如果 IP 接口由操作系统管理,为什么我还要在向导中指定子网掩码?
到目前为止我尝试了这两种方法。两种方法都没有错误,创建成功。(1)看起来更像是应该是和更安全但我无法 ping 通它,无法连接到它,所以我猜它根本就不起作用。尝试重新启动 SQL 服务,但无济于事。
你怎么做到这一点?
更新:这是一个没有集群的读取扩展 AG。我想使用侦听器的原因是 Net Core 应用程序很少出现特定连接错误,而且侦听器似乎应该在这个特定设置中有所帮助。
更新2:此视频中的人https://www.youtube.com/watch?v=jWYmbZBheyk18:42 坚持认为它应该只是本地 IP,即 (2)
答案1
您也可以使用几行代码使用 PowerShell 执行此操作。在集群中的节点上打开 PowerShell
调整值以适应您的环境,它们以您的和网络名称开头
Import-Module FailoverClusters
$agListener = Get-ClusterResource -Name "YourAGListenerName"
$agListener | Set-ClusterParameter -Name HostRecordTTL -Value 300
$agListener | Set-ClusterParameter -Name DnsTtl -Value 300
$agListener | Set-ClusterParameter -Name RegisterAllProvidersIP -Value 0
$agListener | Set-ClusterParameter -Name Network -Value "YourNetworkName"
$agListener | Set-ClusterParameter -Name Address -Value "YourDesiredIPAddress"
Get-ClusterResource | where { $_.ResourceType -eq "Network Name" } | Update-ClusterResource
答案2
我想我知道答案。在群集环境中,创建侦听器会创建一个网络资源(这会导致将侦听器作为计算机添加到 AD)。WSFC 会处理此问题。此网络资源必须是实际网络侦听器的表示。
在读取比例 AG 中,似乎我们必须手动创建 IP,因此 (1) 是正确的,并且我们不需要 AD 中的所有这些东西。