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 13listener 修改完毕(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 时不出现问题.
本文版权归作者所有, 未经作者同意不得转载, 谢谢配合!!!
来源: https://www.cnblogs.com/xuliuzai/p/10747343.html