006.SQLServer AlwaysOn可用性组高可用部署

时间:2024-02-01 21:42:45

一 数据库镜像部署准备

1.1 数据库镜像支持

有关对 SQL Server 2012 中的数据库镜像的支持的信息,请参考:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2012/cc645993%28v%3dsql.110%29

1.2 其他前置条件

  • 需要安装.NET 补丁,详见:https://support.microsoft.com/zh-cn/help/2654347/an-update-introduces-support-for-the-alwayson-features-in-sql-server-2。
  • 确保参与参与一个或多个可用性组的计算机不是域控,域控制器节点不支持可用性组。
  • 确保每台计算机都是 Windows Server 故障转移群集 (WSFC) 群集中的节点,详见:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2012/hh270278%28v%3dsql.110%29。
  • 确保有足够的WSFC节点,详见:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2012/ff877884%28v%3dsql.110%29。
  • 若要管理 WSFC 群集,用户必须是每个群集节点上的系统管理员。
注意:建议预留足够的空间,在主数据库增长时,其相应的辅助数据库也增长相同量。
建议:建议您为 WSFC 群集成员之间的通信和可用性副本之间的通信使用相同的网络链接。

1.3 其他限制

  • 可用性副本必须由一个 WSFC 群集的不同节点承载:对于某个给定可用性组,可用性副本必须由在同一 WSFC 群集的不同节点上运行的服务器实例承载。唯一的例外是在迁移到另一个 WSFC 群集时,此时一个可用性组可能会暂时跨两个群集。
  • 唯一的可用性组名称:每个可用性组名称在 WSFC 故障转移群集上必须唯一。可用性组名称的最大长度为 128 个字符。
  • 可用性副本:每个可用性组支持一个主副本和最多四个辅助副本。所有副本都可在异步提交模式下运行,或最多 3 个副本可在同步提交模式下运行。
  • 不要使用故障转移群集管理器来故障转移可用性组。 必须使用 Transact-SQL 或 SQL Server Management Studio。
注意:其他更多相关条件限制见:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2012/ff878487(v%3dsql.110)。

二 部署规划准备

2.1 服务器规划

按照如下规划配置主机名(domain前缀)及IP。
服务器名称
描述
IP
DNS
操作系统
数据库版本
dsserver.imxhy.com
DNS服务器
172.24.8.35
127.0.0.1
Windows Server 2012 R2 DC
 
nodea.imxhy.com
集群节点A
172.24.8.36
172.24.8.35
Windows Server 2012 R2 DC
SQLServer 2012 Enterprise
nodeb.imxhy.com
集群节点B
172.24.8.37
172.24.8.35
Windows Server 2012 R2 DC
SQLServer 2012 Enterprise
nodec.imxhy.com
集群节点C
172.24.8.38
172.24.8.35
Windows Server 2012 R2 DC
SQLServer 2012 Enterprise
 
服务器名称
描述
vip-cluster
SQL AlwaysOn VIP
nodea.imxhy.com
集群节点A
172.24.8.100/24
172.24.8.101/24
nodeb.imxhy.com
集群节点B
nodec.imxhy.com
集群节点C
提示:为便于测试,本环境将所有节点的专用、公用、域网络的防火墙均关闭。
故障转移集群VIP(172.24.8.100):用于连接故障转移集群管理器的集群
AlwaysOn VIP(172.24.8.101):用于连接AlwaysOn。

三 DNS服务器安装

dsserver相关IP设置如下。
128
服务器管理器 -> 添加角色和功能,选择DNS 服务器,下一步:
129
130
131
132
等待安装完成。
133
如下相关服务已安装完成。
134

四 安装 Active Directory 域服务

服务器管理器 -> 添加角色和功能,选择Active Directory 域服务。
135
136
等待安装完成。
137
如下相关服务已安装完成。
138
将此服务器提升为域控制器,进入域控制器服务向导。
139
弹出 Active Direcotry 域服务配置向导,选择 "添加新林”,输入域名imxhy.com,这个需慎重,FQDN配置完毕之后修改相对麻烦且有风险,并点击 "下一步" 按钮:
140
注意:如果是第一次搭建也是你整个内网中的第一台域控制器,那么需要选择第二项 "在新林中新建域",第一项是内网中已经存在 AD 环境再想搭建额外域控制器的时候使用的。
设置DSRM密码,默认林中的第一棵域树的根域的域控制器必须担当全局编录服务器和必须安装DNS服务,不能是只读域控制器。
设置"域还原密码",此密码相当的重要,后续做数据库迁移、备份、整理、恢复的时候都可能用到,需要谨记:
141
创建DNS委派,跳过即可。
142
NetBIOS名称,默认即可。
143
进入AD 域的数据库文件、日志文件和共享文件位置设置页面,此处保持默认设置,点击 "下一步" 按钮:
144
进入 "摘要" 界面,显示之前设置的摘要信息,点击 "下一步" 按钮:
145
先决条件检查,通过后即可进行安装。
146
安装向导进入安装过程。
147
提示:安装完成后,建议重启服务器。
此时,AD  域服务已经安装完成。ADDS域控制器已经安装完成,在完成域控制器的安装后,系统会自动的将该服务器的用户账号转移到 AD 数据库中。
148
域控制器 DC 会将自己扮演的角色注册到 DNS 服务器内,以便让其他计算机能够通过 DNS 服务器来找到这台域控制器,因此先检查 DNS 服务器内是否已经存在这些记录。
149
首先检查域控制器是否已经将其主机名与 IP 地址注册到 DNS 服务器内,本域控制器也扮演DNS服务器,则进入DNS中查看,此处应该会有一个名称为 imxhy.com 的区域,主机(A)记录表示域控制器 dsserver.imxhy.com 已经正确地将其主机名与 IP 地址注册到 DNS 服务器内。DNS 客户端所提出的请求大多是正向解析,即通过 hostname 来解析 IP 地址对应与此处的正向查找区域;通过 IP 来查找 hostname 即为反向解析,对应于此处的反向查找区域。
150
如果域控制器已经正确地将其扮演的角色注册到 DNS 服务器,则还应该有对应的 _tcp、_udp 等文件夹。在单击 _tcp 文件夹后可以看到如下所示的界面,其中数据类型为服务位置(SRV)的 _ldap 记录,表示 dsserver.imxhy.com 已经正确地注册为域控制器。其中的 _gc 记录还可以看出全局编录服务器的角色也是由 dsserver.imxhy.com 扮演的。
151
DNS 区域内包含这些数据后,其他要加入域的计算机就可以通过通过此区域来得知域控制器为 dsserver.imxhy.com。这些加入域的成员(域控制器、成员服务器、Windows 8、Windows 7、Windows Vista、Windows XP Professional 等)也会将其主机与 IP 地址数据注册到此区域内。

五 域用户创建及加入

5.1 域用户创建

控制面板 -> 管理工具 -> Active Directory 用户和计算机
152
设置相关sqluser账号及密码。
153
设置符合一定密码复杂度要求的密码。
154
将sqluser加入到administrators管理组中。
155

5.2 加入域控

nodea相关IP设置如下。
156
高级 -> DNS -> 此连接的 dns 后缀,添加域控的完整名称。
157
计算机右键 -> 属性 -> 高级系统设置 -> 计算机名 -> 更改
修改计算机名nodea,修改隶属于域:imxhy.com
158
点确定之后弹出一个输入在域控中建立的用户的用户名和密码。
159
提示加入成功,加入成功后建议重启计算机。
160
注意:nodea.imxhy.com、nodeb.imxhy.com、nodec.imxhy.com都需要配置相关DNS为172.24.8.35,然后加入域“imxhy.com”,具体方法参考如上即可。
5.3 服务器配置域帐户管理员
在nodea.imxhy.com、nodeb.imxhy.com、nodec.imxhy.com计算机继续使用本地管理员administrator登录,分别将“imxhy\sqluser”帐户添加为本机管理员,如图所示:
161
注销本地administrator,使用sqluser@imxhy.com用户登录,确认已具有管理员权限。
162
注意:nodea.imxhy.com、nodeb.imxhy.com、nodec.imxhy.com参考如上配置即可。

四 安装WSFC和创建群集

四种集群的仲裁配置:
多数节点:此配置不会用到仲裁磁盘,而所谓多数节点就是在正常节点数量占多数的情况下,集群才会提供服务,否则就停止服务。这种配置适用于奇数节点的集群,例如5个节点的集群,其正常节点数量必须至少3个,集群才会提供服务。
多数节点和磁盘:适用于偶数节点的集群,他在计算法定数量时会将仲裁磁盘计算进来,例如,4个节点+1个仲裁磁盘节点的集群,可以将其视为5个节点的集群,这时正常节点数量必须至少3个,集群才会提供服务。
多数节点和文件共享:它和(多数节点和磁盘)类似,不过仲裁磁盘改为共享文件夹内的文件。
没有多数:只有磁盘,只要仲裁磁盘脱机,集群就会停止提供服务(不建议使用)。
注意:域控不需要安装故障转移集群服务和SQL Server,也不需要加入到故障转移集群;
SQL Server 2012 AlwaysOn只支持最多一个主副本和四个辅助副本,最多允许三个同步提交的可用性副本(包括主副本),最多允许两个自动故障转移副本(包括主副本)。

4.1 安装故障转移集群

服务器管理器 -> 添加角色和功能,选择故障转移群集。
163
确认相关信息。
164
等待安装完成。
165

4.2 验证配置

服务器管理 -> 工具 -> 故障转移群集管理器,创建群集之前建议验证一次所有配置。
166
在“选择服务器或群集”界面中,单击“浏览”按钮将所有要加入群集的服务器添加进来,然后单击“下一步”按钮。
167
提示:域控不需要加入到群集中。
168
在验证配置向导中最好选择运行所有测试,进行全部检测就可以查看到服务器之间建立群集的所有设置,包括网络、共享磁盘、操作系统等。
169
确认相关测试项。
170
注意:测试需要一定时间,测试完毕后建议查看报告,报告中可详细查看具体的告警项,对于存储的警告,由于当前没有添加任何的存储设备,可忽略。对于网络警告,由于各个节点只有一个网卡(心跳和业务共用),可忽略。
171

4.3 创建WSFC

服务器管理 -> 工具 -> 故障转移群集管理器 -> 创建群集。
172
进入创建群集向导。
173
输出群集名称:SQLCLUSTER
174
注意:此IP为集群的管理名称和管理IP,跟AlwaysOn无关。
由于我们当前还没有任何存储,所以不勾选将所有符合条件的存储添加到群集。
175
等待创建群集完毕。
176
创建群集完成。
177

五 查看验证群集创建

5.1 查看相关信息

通过故障转移群集可查看相关信息。
178

5.2 域控进行查看

在dsserver域控节点,控制面板 -> 管理工具 -> Active Directory 用户和计算机。
179
提示:生产环境强烈建议将业务网络和心跳网络进行独立。

六 配置群集

6.1 配置群集仲裁设置

180
进入配置群集仲裁向导。
181
选择高级仲裁配置,即手动配置仲裁。
182
选择所有节点。
183
不配置仲裁见证。
184
提示:对于本环境3个群集节点的情况,不需要仲裁磁盘,而所谓多数节点就是在正常节点数量占多数的情况下,集群才会提供服务,否则就停止服务。这种配置适用于奇数节点的集群,例如5个节点的集群,其正常节点数量必须至少3个,集群才会提供服务。
185
配置完成。
186

七 安装SQLServer 2012

参考《003.SQLServer数据库镜像高可用部署》第六步即可。
注意:安装SQLServer 2012建议临时将DNS改为外网DNS,如223.5.5.5,安装过程需要更新相关补丁;
服务器配置,保持默认,安装完毕后修改为域账号即可;
同时建议使用本地用户Administrator登录这三个集群节点进行安装,不要用域用户sqluser登录,如果一开始使用域用户sqluser来登录集群节点机器,在安装SQL Server的过程中SQL Server安装程序会连接故障转移集群,但是实际上单机安装SQL Server不需要连接故障转移集群,其他操作一样。

7.1 配置SQLServer以域帐户运行

注销本地administrator用户,使用域账户登录,在所有节点的“管理工具”中打开“服务”(或者用“SQL Server 配置管理器”),修改SQL Server实例的属性,将登录身份改为“imxhy\sqluser”。修改之后,重启SQL Server实例。
187
如图所示服务设置为自动,并登录身份使用域账户。
188
提示:安装过程中服务器配置已添加域账户可跳过此7.1步骤。
说明:所有节点都需要如上配置。

八 授权域账户相关权限

8.1 授予域账号sysadmin角色

使用sa用户登录。
189
添加域账户。
190
授予sysadmin和public权限即可。
191
注意:nodea.imxhy.com、nodeb.imxhy.com、nodec.imxhy.com参考如上配置即可。

九 配置AlwaysOn可用性组

9.1 启用AlwaysOn可用性组

使用域账号IMXHY\sqluser登录数据。
192
进入SQL Server配置管理器,SQL Server服务开启AlwaysOn高可用性。
193
注意:集群节点一定要能进行通信,如果集群节点之间断开通信,那么启用AlwaysOn的时候会报错。
重启SQL Server。
194
如果AlwaysOn启用成功,在服务器属性里HADR状态置为True。
195
注意:nodea.imxhy.com、nodeb.imxhy.com、nodec.imxhy.com参考如上配置即可。
在集群任意节点的SQL Server中验证各节点的投票数,命令如下:
SELECT * FROM sys.dm_hadr_cluster_members;
196
 
197

十 测试数据库准备工作

略,参考《003.SQLServer数据库镜像高可用部署》第七步。
注意:本过程需要将nodea用于测试的MDB还原至nodeb、nodec节点。

十一 新建可用性组

11.1 进入新建可用性组向导
198
简介,下一步。
199
输入可用性组名称,如USAG。
200
选择需要添加的数据库,数据库必须要是完整恢复模式并且要先进行一次完整备份。
201
使用添加副本来将其他节点添加到可用性组中,设置为可读,并选择自动故障转移节点和同步提交节点。
202
端点和备份首选项默认即可。
203
提示:端点URL也可使用IP的方式,若服务器存在多个网卡(业务和心跳分开),使用FQDN长名的方式可能不能保证端点数据通过心跳网卡来传送。
配置侦听器,参考如下:
204
数据库同步,通过第十步已经将数据库MDB同步至所有节点,选择仅联接即可。
205
确认相关验证。
206
点击“下一步”来检查并确认之前的配置信息,若无误,点击“完成”。同时也可保存建立可用性组脚本,以便分步诊断故障之用。
207
等待配置完成。
208

十二 确认验证

12.1 数据库验证

查看主库,数据库变为已同步。
209
查看辅助副本,辅助副本是可读的,在主副本上对MDB数据库做的更改都能同步到辅助副本上的MDB库。
210
 
211
 

12.2 故障转移集群验证

控制面板 -> 管理工具 -> 故障转移群集管理器
212
可用性组成为一个集群角色。
213

12.3 AlwaysOn可用性面板验证

AlwaysOn高可用性 -> 右键显示面板
214

12.4 域控制器验证

在域控节点控制面板 -> 管理工具 -> Active Directory 用户和计算机查看相应的侦听器。
215

12.5 功能验证

任意节点通过侦听器地址:172.24.8.101登录数据库。
216
登录成功则表示AliwaysOn可用性组配置成功。
217
注意:加入到AlwaysOn可用性组的数据库必须符合下面要求
  • 数据库的恢复模式必须是“完整”恢复模式
  • 数据库已进行了一次完整备份
  • 需要是用户库,系统库不能加入可用性组
  • 数据库可以读写,只读库不能加入到可用性组
  • 数据库处于多用户模式
  • 数据库没有使用AUTO_CLOSE
  • 不属于任何其他的可用性组
  • 数据库没有配置数据库镜像