无域控AlwaysOn实战教学 (一)

前言

最近正好给客户安装部署无域控的Always On 。详细说明下安装部署的细节和碰到的坑.欢迎各位同学拍砖和评论,有什么问题都可以在下面留言。


什么是Always On

SQL Server 2012 引入了高可用性组AlwaysOn,用来代替数据库镜像(SQL Server 2005 SP1开始支持的),但是它有一个巨大的局限性:承载副本的节点必须是在同一Windows故障转移群集中。Windows故障转移群集中的安装部署又需要域控。这台域控必须是单独一台或者两台(主备)服务器。这无形中增加了投入的成本。而且对于不熟悉域控的人来说,域控可以说是非常麻烦。出现问题的时候很难排查。好消息是,从Windows Server 2016 开始我们就在需要域控了。在SQL Server 2016之前,高可用性组只能在SQL Server企业版的才能使用。与数据库镜像相比,这是另一个缺点(因为即使在标准版中也有同步镜像)。在SQL Server 2016中,Microsoft现在为SQL Server的标准版提供了基本可用性组,它提供了与数据库镜像相同的功能:

只有2个副本
同步提交
每个可用性组1个数据库
没有可读的副本
使用SQL Server 2016和Windows Server 2016,Always On可以真正的替代数据库镜像,该技术也适用于SQL Server的标准版。好了,前面的大多都是废话,不多说,开整。


环境准备


(由于客户的真实环境不好截图,我这里的截图,都是使用的本地的截图,但是环境都是一样的)

2台数据库服务器    192.168.1.57   192.168.1.59 

操作系统版本 

无域控AlwaysOn实战教学 (一)

数据库版本

无域控AlwaysOn实战教学 (一)


安装WSFC (Windows 故障转移集群)

打开服务器管理器

无域控AlwaysOn实战教学 (一)

添加角色和功能

无域控AlwaysOn实战教学 (一)

一直点下一步,,直到下面这个界面:

无域控AlwaysOn实战教学 (一)

然后点下一步,安装,然后重启服务器。完成安装。到这来故障转移集群功能安装完成。

添加主DNS后缀

为了能够创建无域控的Windows群集,必须在两个节点上创建所谓的主DNS后缀。  在我的情况下,我选择了两个节点上的DNS后缀brsh.com。

在控制面板中打开系统设置.特别注意:这个DNS后缀一定要添加。我在最开始实施时就忘记了,会出现故障转移集群无法连接,重启SQL Server 无法无法切换的错误。详见:遇到的错误一


无域控AlwaysOn实战教学 (一)

点击--》更改设置

无域控AlwaysOn实战教学 (一)

点击其他--》添加主DNS后缀。

无域控AlwaysOn实战教学 (一)


以上,添加DNS后缀就完成了。

网络名称互通

两台服务器直接通过,FQDN(完全合格域名 )能相互ping 同。我的服务器FQDN就是如下2个名字。

WIN-UE57.brsh.com     WIN-UE59.brsh.com

因为我们没有配置DNS服务器,为了保证能够ping通,因此我们需要在HOSTS文件中做个解析(存储在c:\ windows \ system32 \ drivers \ etc)中。如果FQDN无法解析,则无法创建Windows群集。详细见:遇到的错误二

无域控AlwaysOn实战教学 (一)

创建WSFC

打开故障转移群集管理器,输入加入服务器的名称。

无域控AlwaysOn实战教学 (一)


或者可以使用power shell 运行下面的命令来安装。只需要在一台机器上面运行就可以

New-Cluster –Name MyCluster -Node WIN-UE57,WIN-UE59 -AdministrativeAccessPoint DNS -StaticAddress 192.168.1.56

参数说明:

–Name:集群的名字

-Node:节点,多个节点用英文逗号分隔

-StaticAddress:集群的公共IP

关于仲裁

目前无域控的方式还不支持共享文件夹仲裁.只能使用磁盘做仲裁或者云见证

无域控AlwaysOn实战教学 (一)

好的,前期准备工作已经基本完成,正式搭建会在下一篇文章中。。。。。。

遇到的错误一

在我安装部署时遇到了下面的错误,集群的名称显示失败。

无域控AlwaysOn实战教学 (一)

同时在事件查看器会提示:

 群集角色“群集组”中的类型“Network Name”的群集资源“群集名称”失败。错误代码为“0xcb”(“操作系统找不到已输入的环境选项。”)。

根据资源和角色的失败策略,群集服务可能会尝试使资源在此节点上联机,或将组移到群集的其他节点中,然后重新启动它。请使用故障转移群集管理器或 Get-ClusterResource Windows PowerShell cmdlet 检查资源和组状态。

出现这个问题就是主DNS后缀没有配置或者配置的有问题. 

遇到的错误二

在添加故障转移集群的时候提示:无法访问计算机(59的计算机名称)

无域控AlwaysOn实战教学 (一)

这个问题的原因就是没有做hosts解析。两边网络无法正常通信