WMI服务默认开启哪个端口(简单而快速地搞定 SQL Server 高可用(上篇))



网络管理员肖佳/sysadm.cc

公司有一台安装了SQL Server的旧电脑服务器,已经运行了三年。

多年来一直无人问津,积满灰尘。最近系统不是卡死就是死机。快吗?

就像人一样。就算是机器,虽然天生就是凡人,但谁也不愿意期待这一天的早日到来吧?

嗯,除非是有病!

哎,又不是真的有病!

有病就要治。至少药不能停!

就算暂时不考虑换服务器,也要提前研究好后续解决方案!


首先声明一下,这个服务器不是我装的。最早不知道是哪个供应商从相关部门拿到的。

目前,当务之急是考虑SQL Server服务不能失败停止的问题,也就是说,不能有任何工作和业务的中断。

如何防止SQL Server服务中断?我想到的是冗余服务,也就是高可用性。

于是就有了踩在身后坑的经历。


换句话说,以前也研究过MySql的主从复制,不是很复杂,但是这个SQL Server没有集成。

网上有不少关于SQL Server高可用实现的文章,但我发现有几篇文章让我的头长大了好几倍。

不过还好用了好几天,最后真的折腾出来了。

不过说实话,虽然Windows的图形化操作都是点和下一步,但是里面的漏洞实在太多了,我整理出来分享给朋友们。

因为内容多,篇幅长,所以分为上、中、下三部分,让大家看得清楚,学得扎实。

好,仔细听我说!


原理简介及实现目标

复杂难做的事情我们当然不能急着动手,而是要先熟悉其中的原理以及想要达到的效果和目标。

SQL Server的永不停机数据同步模式有两种,即同步提交模式和异步提交模式。

同步提交模式和异步提交模式的主要区别在于,同步提交模式的数据可靠性更高,但切换时会有一定的延迟,而异步提交模式的数据服务性能会更高。

如果你想保证更可靠的数据,允许牺牲一些服务性能(其实没那么夸张),那就选择同步提交模式。


提交同步模式示意图。

详细原理可参考网友文章。

文章:https://www.cnblogs.com/xuliuzai/p/9847301.html






本文具体的创建和测试操作都是在同步提交的模式下进行的。

最终效果是,当任何一个节点出现故障时,另一个节点可以提供正常的SQL Server服务。

当故障节点恢复时,两个节点可以同步更新数据库。

好了,清楚了吗?我们开始吧!


准备工作

锋利的工具能做好工作。

好的准备,快乐的收获缺一不可!


1、各系统命名、IP地址及功能备注

这里有几个词。为了保证系统的可靠性(域名解析、故障转移和认证等。),我们直接利用域环境来构建高可用的SQL Server系统。

至于在网上使用证书验证的方式,虽然我最后做的很成功,但是因为它的设置比较复杂,比较麻烦,容易出错,而且涉及到很多其他的设置,真心建议小伙伴们可以通过AD域环境实现高可用性。


  • A89230 192.168.89.230 SQL Server节点1(主)
  • A89231 192.168.89.231 SQL Server节点2(辅助)
  • 192.168.89.219文件共享服务器(共享见证)
  • A89220 192.168.89.220 AD服务器(域名服务器)域名:sysadm.local
  • MSSql_Cluster 192.168.89.232群集名称(虚拟IP地址)
  • MSSQL _ Listener 192 . 168 . 89 . 233 SQL Server始终在线可用性组侦听器(虚拟IP地址)

  • 看完上面的清单,我简单补充几句。

    A.本例中有两个服务器节点,一个主节点和一个辅助节点。

    B.共享服务器和广告服务器已经预先设置好了。为了保证高可用性和稳定性,两者都独立于节点服务器。

    C.集群和监听器的IP地址是虚拟地址,它们都用于直接访问管理。

    D.创建高可用性后,监听器的IP地址应该作为服务地址,而不是直接使用任何节点的IP地址。


    2、安装 .Net Framework 3.5和 故障转移群集管理器

    操作对象:主副服务器


    打开服务器管理器,选择菜单项“管理”>“添加角色和功能”。






    检查。Net Framework 3.5和功能选择界面中的故障转移集群。






    在确认安装所选内容的界面中,点击指定备用源路径。






    输入以光盘盘符开头的安装路径,如D:sources XSS,将Windows 2016安装光盘放入光驱。






    一切准备就绪后,开始安装。


    3、系统服务

    操作对象:主副服务器


    确保下列系统服务已启用并正常运行。

  • 共享服务器服务器服务器
  • 远程注册表服务远程注册表
  • WMI服务窗口管理规范

  • 4、组策略

    操作对象:主副服务器


    使用命令gpedit.msc打开组策略编辑器。

    在窗口左侧,找到计算机配置>:Windows设置>:安全设置>:本地策略>:安全选项。

    在窗口的右侧,找到网络访问的共享和安全模型:本地帐户,并确保它设置为经典-认证本地用户,而不改变他们的原始身份。

    通常,该默认值是预期的设置值。


    5、防火墙

    操作对象:主副服务器


    打开windows management instrumentation(wmi)应用程序访问。






    在防火墙的高级设置中添加入站规则,并打开端口1433和5022。

    前者是SQL Server的默认服务端口,后者是集群的默认服务端口。






    除了上述打开的防火墙规则或端口之外,可能还有许多规则被打开,例如服务器服务或远程管理。

    通常情况下,它们是默认打开的,但我们应该注意检查它们,以免出现不可描述的问题。


    6、DNS 解析

    操作对象:主副服务器


    要保证所有系统都能正常通信,DNS的正常解析极其重要。

    这种实践是在领域环境中实现的。只要DNS指的是域内的域名服务器,DNS解析一般不会有问题。

    但是,在一种情况下,解析不完整的域名(只有一个主机名)可能会导致问题。

    所以如果可以的话,不要偷懒。建议朋友们在C:Windows System32 Drivers etc hosts文件中手动追加对应系统的域名解析记录。

    # hosts域名解析记录示例 192 . 168 . 8 . 88 your host 192 . 168 . 8 . 88 your host . SYSADM . local

    7、群集见证共享


    节点之间最简单有效的见证方式就是通过共享进行传输和验证。

    这个集群见证共享其实就是一个普通的共享文件夹,但是为了保证其可靠性和稳定性,建议在独立于各个节点的第三方建立这个共享。

    这样,即使一个集群节点服务器出现故障,共享访问也不会受到影响。

    在此示例中,A89219被设置为共享服务器,并且建立了共享文件夹A89219ClusterSharing。

    为确保所有节点都能正常访问,应释放该共享文件夹的权限。

    那么,这种权限是如何释放的,释放到什么程度?


    经过多次查找资料和测试,我得出的结论是这个分享权应该是开放给大家的修改权

    你在开玩笑吗?肯定有朋友会问,这个分享就不能有人接入吗?

    是的,所以为了保证系统的安全性,只能通过一些其他的折中方法来达到屏蔽非法访问的目的,比如限制只有节点服务器的IP访问,等等。

    如何安全加固取决于小伙伴们自己的需求,这里就不多举例了。


    以上准备工作完成后,我们开始本文的重点。让我们振作起来,朋友们!


    建立群集及故障转移

    集群是我们实现高可用性的基础,因为要保证高可用性,必须使用两台或多台服务器。

    将这些服务器集成在一起称为构建集群,这些服务器在集群中称为节点


    故障转移是在一个节点服务器出现故障后平稳切换到其他标准服务器的功能。

    要实现故障转移,必须将特定的服务设置为集群的角色

    例如,SQL Server的故障转移功能是作为集群的一个角色来实现的。


    我们需要稍后在SQL Server中详细解释故障转移功能的角色设置。

    现在来说说集群的建立。怎么做?


    1、建立群集

    操作对象:主服务器(A89230)


    打开服务器管理器,然后单击工具>:故障转移群集管理器。






    在故障转移群集管理器界面中,右键单击左侧项目,并从右键单击菜单中选择验证配置。






    根据您需要添加多少节点服务器,依次输入服务器的名称,然后单击添加。

    小心,不要点击浏览,那没有任何作用。





    wmi服务


    添加之后,运行所有的测试,一直进行到下一步。











    如果测试出现错误,请参考前面的准备工作,确保通信和权限设置正确。

    测试成功完成后,您可以直接创建一个集群,只需立即选中创建具有已验证节点的集群即可...在测试结果界面的底部,点击完成按钮。






    在创建集群向导界面中,输入您喜欢的集群名称,例如MSSql_Cluster。

    然后在下表中填写集群IP地址。这个IP地址必须是空空闲虚拟的,但是必须和每个节点在同一个网段,比如192.168.89.232。

    注意,这个集群名是一个DNS名,也就是必须解析到你设置的IP地址,同时,它的完整域名也要正确解析到这个IP地址。

    例如,本例中的MSSql_Cluster.sysadm.local也应该能够解析为192.168.89.232。






    一切就绪后,单击Next开始创建集群。






    稍等片刻,集群创建即可初步完成。






    哎,怎么叫初步完成?

    朋友们还应该注意到,在最终完成屏幕中有一个警告,即系统无法为见证磁盘找到合适的磁盘。

    这是什么意思?

    其实简单来说,当出现故障,需要故障转移时,系统需要一个判断,这个判断叫做仲裁

    为什么要这个仲裁?

    因为没有这个判断,系统就不知道谁是故障,谁是正常,也就无法完成故障转移等一系列动作。

    好了,接下来我们来修复仲裁配置。


    2、仲裁配置

    操作对象:主服务器(A89230)


    右键单击刚刚创建的集群的名称,然后选择More Actions >:Configure cluster quorum settings(q)...






    在配置选项中,选择选择仲裁见证。






    为仲裁选择见证,为配置文件共享选择见证。






    输入文件共享路径(准备工作中建立的共享文件夹),如A89219ClusterSharing。






    单击“下一步”完成仲裁设置。









    将在共享文件夹中创建一些随机文件,用于分析和测试。

    完成后应该是这样的。






    两个节点服务器处于正常状态。






    此时,角色列仍然是空,因为它涉及到一个特定的服务,也就是我们需要为一个服务添加实现。

    那么接下来,我们就切换到SQL Server,谈谈如何实现高可用性。






    小结

    由于文章整体篇幅较长,在下一篇文章中,我们将继续与朋友们详细讨论创建和使用SQL Server Always On高可用性的具体方法。

    最后我想说一句题外话。衷心祝贺高考成绩优异的同学和高考被屏蔽的同学早日收获佳音。祝你前程似锦,将来造福社会,为祖国和人民多做贡献!

    网络管理员肖佳/sysadm.cc

    您可以还会对下面的文章感兴趣

    使用微信扫描二维码后

    点击右上角发送给好友