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显示如下:
4. 测试步骤
(第一部分更新主节点的server ip为临时ip,即将40.112-->40.118)
step 1 通过控制面板更新主server ip
step 2 更新前为40.112
step 3 更新后为40.118
step 4 更新后查看状态如下(更新后,短暂不可访问,ag状态resolving。约15s自动恢复正常)
此时环境调整为:
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
step 6 选中地址ip,单击,使edit栏位变成活跃状态,点击edit。
step 7 弹出警告,单击yes选项。
step 8 修改listener ip
修改前:
修改后:
step 9 修改完毕,点击ok。
step 10 弹出警告,单击yes选项
step 11 修改后可用组stop, ag状态为resolving。
step 12 重启ag role。
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。
测试环境下:
- 更改主server ip为temp ip时,ag自动恢复正常状态需要耗时约15秒。
- 更改listener ip为原主server ip时,需要手动重启一次ag role,耗时约3~4秒。
- 更改temp ip为原listener ip,ag自动恢复正常状态需要耗时约15秒。
正式环境下,可能需时要长一些,可能需要1~2分钟,甚至更长。
所以,请在周末或假期等业务线操作不繁忙的时候进行调换作业,避免出现异常时无足够的处理时间。
切换完成后,建议做两次auto-failover切换(最后恢复到辅server还是辅server),同时请支持部门的同学配合测试程序,确保真正发生auto-failover时不出现问题。
本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!