SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

1. 背景

SQL Server 搭建AlwaysOn后,我们就希望程序连接时使用虚拟的侦听IP(Listener IP),而不再是主Server 的IP。如果我们有采用中间件,则可以在配置中,直接用Listener IP 替换掉 Server IP,可有时候,我们不太确定,是否有些旧程序、不太常用的程序在使用。甚至在很多公司根本就没有使用中间件,这时候去修改每个应用、APP、程序的数据库连接配置,太难了。

那么有没有其它好的方案呢?有一个---调换主Server IP与Listener IP,即将Server IP与Listener IP互换。

2. 测试目的

为减少因使用AlwaysOn的Listener IP而必须调整现有程式的工作,考虑测试把Listener IP改成原主Server IP。

对调的好处:

1)减少应用、APP、程序的数据库连接配置的修改。

2) 外部接口(厂商、SAP、ETL、xDS、BI、MIS, etc)不用修改;如修改,沟通成本大。

3) 不用担心有老旧程序未修改为调用Listener IP。

3. 测试环境

Node1 Node2 Node3 Cluster IP Listener IP
168.172.40.112 168.172.40.113 168.172.40.114 168.172.40.115 168.172.40.117

Role:Primary

 Availability Mode:Asynchronous Commit

Role:Secondary

Availability Mode:Asynchronous Commit

Role:Secondary

Availability Mode:Asynchronous Commit

SSMS 连接登入各IP显示如下:

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

4. 测试步骤

(第一部分更新主节点的server IP为临时IP,即将40.112-->40.118

Step 1 通过控制面板更新主Server IP

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 2 更新前为40.112

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 3 更新后为40.118

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 4  更新后查看状态如下(更新后,短暂不可访问,AG状态resolving。约15S自动恢复正常)

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

此时环境调整为:

Node1 Node2 Node3 Cluster IP Listener IP
168.172.40.118 168.172.40.113 168.172.40.114 168.172.40.115 168.172.40.117

Role:Primary

Availability Mode:Asynchronous Commit

Role:Secondary

Availability Mode:Asynchronous Commit

Role:Secondary

Availability Mode:Asynchronous Commit

(第二部分更新listener IP为原主server IP,即将 40.117--->40.112

Step 5 打开FailOver管理器--->Role--->Resources--->AGName--->Properties

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 6  选中地址IP,单击,使Edit栏位变成活跃状态,点击Edit。

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 7 弹出警告,单击Yes选项。

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 8  修改Listener IP

 修改前:

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

修改后:

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 9 修改完毕,点击OK。

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 10 弹出警告,单击Yes选项

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 11 修改后可用组Stop, AG状态为Resolving。

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 12 重启AG Role。

SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

Step 13  listener 修改完毕(117—>112)

此时环境调整为:

Node1 Node2 Node3 Cluster IP Listener IP
168.172.40.118 168.172.40.113 168.172.40.114 168.172.40.115 168.172.40.112

Role:Primary

Availability Mode:Asynchronous Commit

Role:Secondary

Availability Mode:Asynchronous Commit

Role:Secondary

Availability Mode:Asynchronous Commit

 (第三部分更新原主的server的 IP由临时IP调整为Listener IP,即将 40.118--->40.112

Step 14 参照step 1—>step 5,可把原主server IP由临时IP调整为Listener IP (118-->117)

此时环境调整为:

Node1 Node2 Node3 Cluster IP Listener IP
168.172.40.117 168.172.40.113 168.172.40.114 168.172.40.115 168.172.40.112

Role:Primary

Availability Mode:Asynchronous Commit

Role:Secondary

Availability Mode:Asynchronous Commit

Role:Secondary

Availability Mode:Asynchronous Commit

5. 总结

可以成功实现调换主Server IP与Listener IP。

测试环境下:

  1. 更改主Server IP为temp IP时,AG自动恢复正常状态需要耗时约15秒。
  2. 更改Listener IP为原主Server IP时,需要手动重启一次AG Role,耗时约3~4秒。
  3. 更改temp IP为原Listener IP,AG自动恢复正常状态需要耗时约15秒。

正式环境下,可能需时要长一些,可能需要1~2分钟,甚至更长。

所以,请在周末或假期等业务线操作不繁忙的时候进行调换作业,避免出现异常时无足够的处理时间。

切换完成后,建议做两次auto-failover切换(最后恢复到辅Server还是辅Server),同时请支持部门的同学配合测试程序,确保真正发生Auto-failover时不出现问题。

 本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!