根据下面的 MSDN 博客,我看到有 2 种方法可以创建负载均衡器侦听器。
但我没有找到需要使用它们的确切场景?我希望外部应用程序连接到我的高度可用的 SQL 服务器(AlwaysOn)。我应该配置哪个负载均衡器?
配置集群后,您将需要创建用于所有客户端访问的内部负载均衡器 (ILB)。连接到 SQL Server 的客户端将需要连接到 ILB,而不是直接连接到群集 IP 地址。如果您此时尝试直接连接到集群,您会看到无法从任何远程系统连接到集群。此时甚至 SQL Server Management Studio 也无法直接连接到集群
更新如何配置它
我正在使用下面的脚本来创建内部负载均衡器并且它成功了。
// Define variables
$ServiceName = "XYZ"
$AGNodes = "ABC01","ABC02"
$SubnetName = "MYSUBNETNAME"
$ILBStaticIP = "10.249.XXX.XXX"
$ILBName = "AGListenerLB"
// Create the ILB
Add-AzureInternalLoadBalancer -InternalLoadBalancerName $ILBName -SubnetName $SubnetName -ServiceName $ServiceName -StaticVNetIPAddress $ILBStaticIP
// Configure a load balanced endpoint for each node in $AGNodes using ILB
ForEach ($node in $AGNodes)
{
Get-AzureVM -ServiceName $ServiceName -Name $node | Add- AzureEndpoint -Name "ListenerEndpoint" -LBSetName "ListenerEndpointLB" -Protocol tcp -LocalPort 1433 -PublicPort 1433 -ProbePort 59999 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -InternalLoadBalancerName $ILBName -DirectServerReturn $true | Update-AzureVM
}
一旦上面的脚本成功,那么我们需要运行下面的脚本
# Define variables
$ClusterNetworkName = "Cluster Network 1" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
$IPResourceName = "DEVAG_10.249.XXX.XXX" # the IP Address resource name
$ILBIP = “10.249.XXX.XXX” # the IP Address of the Internal Load Balancer (ILB)
Import-Module FailoverClusters
如果您使用的是 Windows Server 2012 或更高版本,请使用 Get-Cluster Resource 命令。如果您使用的是 Windows Server 2008 R2,请使用 cluster res 命令。这两个命令都被注释掉了。选择适用于您的环境的选项并删除行首的 # 以将注释转换为可执行的代码行。
Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
# cluster res $IPResourceName /priv enabledhcp=0 address=$ILBIP probeport=59999 subnetmask=255.255.255.255
外部 - 使用托管虚拟机的云服务的公共虚拟 IP 地址。当您需要从虚拟网络外部(包括互联网)访问侦听器时使用,即面向公众
内部 - 使用内部负载平衡 (ILB) 和侦听器的专用地址。当您仅从同一虚拟网络中访问侦听器时使用。这包括混合场景中的站点到站点 VPN,即不面向公众