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. 测试环境

Node1Node2Node3Cluster IPListener IP
168.172.40.112168.172.40.113168.172.40.114168.172.40.115168.172.40.117

Role:Primary

 Availability Mode:Asynchronous Commit

Role:Secondary

Availability Mode:Asynchronous Commit

Role:Secondary

Availability Mode:Asynchronous Commit

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

640?wx_fmt=jpeg

4. 测试步骤

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

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

640?wx_fmt=png

Step 2 更新前为40.112

640?wx_fmt=jpeg

Step 3 更新后为40.118

640?wx_fmt=png

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

640?wx_fmt=png

此时环境调整为:

Node1Node2Node3Cluster IPListener IP
168.172.40.118168.172.40.113168.172.40.114168.172.40.115168.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

640?wx_fmt=png

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

640?wx_fmt=jpeg

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

640?wx_fmt=png

Step 8  修改Listener IP

修改前:

640?wx_fmt=png

修改后:

640?wx_fmt=png

Step 9 修改完毕,点击OK。

640?wx_fmt=jpeg

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

640?wx_fmt=png

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

640?wx_fmt=jpeg

Step 12 重启AG Role。

640?wx_fmt=png

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

此时环境调整为:

Node1Node2Node3Cluster IPListener IP
168.172.40.118168.172.40.113168.172.40.114168.172.40.115168.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)

此时环境调整为:

Node1Node2Node3Cluster IPListener IP
168.172.40.117168.172.40.113168.172.40.114168.172.40.115168.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时不出现问题。

原文地址:https://www.cnblogs.com/xuliuzai/p/10747343.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 
640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 DotNetCore 3.0 程序中使用通用协议方式启动文件关联应用

问题描述在传统的基于 .NET Framework 的 WPF 程序中,我们可以使用如下代码段启动相关的默认应用:Copy# 启动默认文本编辑器打开 helloworld.txtProcess.Start("helloworld.txt");# 启动默认浏览器打开 https:Process.Start("https://hip…

.NetCoreLinuxDockerPortainer踩坑历险记

最近有一个云服务器和数据库的迁移任务,踩坑爬坑无数次,觉得必须要记录一下。大家瓜子花生准备好,听我慢慢讲故事#手动笑哭#。故事背景公司是做电商业务的,在天猫有几家旗舰店数据量也很大。阿里有一个称为聚石塔的平台&#xff0…

深入源码理解.NET Core中Startup的注册及运行

开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程序的起点。通过使用Startup,可以配置化处理所有向应用程序所做的请求的管道,同时也可以减少.NET应用程序对单一服务器的依赖性,使我们…

Python、Java、TypeScript 和 Perl 作者谈语言设计

Python 作者 Guido van Rossum、Java 作者 James Gosling、Turbo Pascal 和 TypeScript 作者 Anders Hejlsberg,以及 Perl 作者 Larry Wall 本月早些时候齐聚一堂,讨论了(YouTube)编程语言设计的过去和未来。Guido van Rossum 说,设计一种语言…

Asp.Net Core Web应用程序—探索

前言作为一个Windows系统下的开发者,我对于Core的使用机会几乎为0,但是考虑到微软的战略规划,我觉得,Core还是有先了解起来的必要。因为,目前微软已经搞出了两个框架了,一个是Net标准(.NetFramework)&#…

智能优化算法应用:基于跳蛛算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于跳蛛算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于跳蛛算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.跳蛛算法4.实验参数设定5.算法结果6.参考文献7.MA…

让你的ASP.NET Core应用程序更安全

对于ASP.NET Core应用程序,除了提供认证和授权机制来保证服务的安全性,还需要考虑下面的一些安全因素:CSRF强制HTTPS安全的HTTP HeadersCSRFASP.NET Core通过AntiForgeryToken来阻止CSRF攻击,一般来说,当用户做表单提交…

.net core 中间件管道底层剖析

.net core 管道(Pipeline)是什么?由上图可以看出,.net core 管道是请求抵达服务器到响应结果返回的中间的一系列的处理过程,如果我们简化一下成下图来看的话,.net core 的管道其实就是中间件的部分。微软中…

架构为什么要以领域为核心

很久以前, 人们以为地球是太阳系的中心.然后一位聪明人, 哥白尼, 他改变了我们对太阳系的看法. 他认为太阳是太阳系的中心:这是对太阳更好的一个解释, 更简单也更具说服力. 事实上, 以太阳为中心的模型确实是更优雅的.上面这件事也发生在软件开发里. 下面这个就是很多开发者惯用…

201403-5 任务调度

哇&#xff0c;ccf csp认证考试 历年真题解&#xff08;一本书&#xff09;真厉害。 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring>using namespace std;typedef long long LL; typedef pair<int,int> PII; con…

C# - 为引用类型重定义相等性 - 继承相关

派生类这是上面Citizen类的一个子类&#xff1a;下面我重写object.Equals() 方法&#xff1a;大部分逻辑都在base.Equals()方法里了&#xff0c;首先如果父类的Equals()方法返回false&#xff0c;那么下面也就不用做啥了。但是如果父类Equals()认为这两个实例是相等的&#xff…

微软百名员工签名力挺996.ICU

中国程序员上传到 GitHub 的 996.ICU repo 火速在互联网广泛传播时&#xff0c;996 工作制引起了全球的广泛关注&#xff0c;Python 之父直指这是不人道的行为&#xff0c;事情经过不断发酵&#xff0c;中国官方媒体也接连发声表态要警惕「996 工作制」。就在今日&#xff0c;微…

P1174 打砖块

P1174 打砖块 题意&#xff1a; 题解&#xff1a; 参考题解&#xff1a; I_AM_HelloWord danxmz2006 这两个博客结合看&#xff0c;大致就能理解 我们只在N处转移&#xff0c;面对Y类的块无需决策&#xff0c;因为Y类的块可以一直打 不同的打砖块的顺序&#xff0c;决定了我…

包治百病 | 如何将一个.NET Core类库发布到NuGet

点击上方蓝字关注“汪宇杰博客”NuGet是.NET世界的包管理器&#xff0c;有官方的nuget.org&#xff0c;也允许构建公司和私人的服务器。在.NET Core的时代&#xff0c;封装一个NuGet包比以往更容易&#xff0c;我们来看看吧&#xff01;NuGet账号如果你想和微软一起予力众生&am…

如何在ASP.NET Core中使用Azure Service Bus Queue

原文&#xff1a;USING AZURE SERVICE BUS QUEUES WITH ASP.NET CORE SERVICES作者&#xff1a;damienbod[1] 译文&#xff1a;如何在ASP.NET Core中使用Azure Service Bus Queue地址&#xff1a;https://www.cnblogs.com/lwqlun/p/10760227.html作者&#xff1a;Lamond Lu源代…

从B站的代码泄露事件中,我们能学到些什么?

先声明一下&#xff0c;本文不聊ISSUE中的七七八八&#xff0c;也不聊代码是否写的好&#xff0c;更不聊是不是跟蔡徐坤有关之类的吃瓜内容。仅站在技术人的角度&#xff0c;从这次的代码泄露事件&#xff0c;聊聊在代码的安全管理上&#xff0c;通常都需要做哪些事来预防此类事…

[Abp vNext 源码分析] - 3. 依赖注入与拦截器

一、简要说明ABP vNext 框架在使用依赖注入服务的时候&#xff0c;是直接使用的微软提供的 Microsoft.Extensions.DependencyInjection 包。这里与原来的 ABP 框架就不一样了&#xff0c;原来的 ABP 框架还需要抽象出来一个 IIocManager 用来管理整个 IoC 容器&#xff0c;现在…

dotnet core 微服务教程

这个教程主要是对于第一次使用dotnet core开发的同学。运行环境是在centos 7 &#xff0c;使用了docker容器。即这是一篇运行在linux的docker容器上的微服务的简单应用。一. 安装.NET SDK安装.NET之前&#xff0c;先安装一些依赖&#xff0c;运行下面的命令sudo rpm -Uvh https…

eShopOnContainers 是一个基于微服务的.NET Core示例框架

找到一个好的示例框架很难&#xff0c;但不是不可能。大多数是小型Todo风格的应用程序&#xff0c;通常基于SimpleCRUD。值得庆幸的是&#xff0c;Microsoft已经为eShopOnContainers创建了一个基于微服务的.NET Core示例应用程序。eShopOnContainers是 .NET Core示例应用框架&a…

「拥抱开源, 又见 .NET」系列第三次线下活动简报

「拥抱开源, 又见 .NET」随着 .NET Core的发布和开源&#xff0c;.NET又重新回到人们的视野。自2016年 .NET Core 1.0 发布以来&#xff0c;其强大的生命力让越来越多技术爱好者对她的未来满怀憧憬&#xff0c;越来越多的平台、框架热衷于为.NET Core不断更新的版本提供最有力的…