SQLServer2019+AlwaysOn+WSFC+高可用

  • 1 环境准备
  • 2 部署规划
  • 3 安装步骤
  • 4 安装DNS+AD
  • 1)安装DNS
  • 2)安装AD
  • 3)DNS与AD安装结果验证
  • 4)创建域用户以及sql-node节点加入域控
  • 5 安装WSFC
  • 1)安装故障转移集群
  • 2)验证配置
  • 3)创建wsfc
  • 4)查看验证群集创建
  • 5)集群配置
  • 6 安装SQLServer2019
  • 1)SQLServer 2019安装
  • 2)配置SQLServer以域帐户运行
  • 3)授权域账户相关权限
  • 7 配置AlwaysOn可用性组
  • 1)配置开启AlwaysOn
  • 2)新建AlwaysOn可用性组
  • 8 确认和验证
  • 1)数据库验证
  • 2)WSFC故障转移集群验证
  • 3)AlwaysOn可用性面板验证
  • 4)域控制器验证
  • 5)功能验证
  • 9 参考



近期项目中使用

SQLServer2019与WSFC构建SQLServer2019高可用集群,借此机会与参考一些前辈相关资料的前提下,构建环境进行整个集群的搭建,在此记录下整个过程,以供后来者借鉴参考学习与相互探讨。


Windows Server 故障转移群集(WSFC) 群集是一组独立的服务器,它们共同协作以提高应用程序和服务的可用性。WSFC提供了各种基础结构功能来支持所承载的服务器应用程序(如 Microsoft SQL Server 和 Microsoft Exchange)的高可用性和灾难恢复方案。 如果一个群集节点或服务失败,则该节点上承载的服务可通过“故障转移”的过程自动或手动转移到另一个可用节点。


AlwaysOn 可用性组和 AlwaysOn 故障转移群集实例将 WSFC 用作一种平台技术,将组件注册为 WSFC 群集资源。相关的资源将合并为一个“资源组”,这些资源可能依赖于其他 WSFC 群集资源。这样,WSFC 群集服务就可以感测并标明是否需要重新启动 SQL Server 实例,或自动将其故障转移到 WSFC 群集中的不同服务器节点上。


“可用性组”是一组共同实现故障转移的用户数据库。一个可用性组包含一个主"可用性副本"和一至四个辅助副本,这些副本通过基于 SQL Server 日志的数据移动来实现数据保护以进行维护,无需共享存储。每个副本均由 WSFC 群集的不同节点上的 SQL Server 实例承载。可用性组和相应的虚拟网络名称注册为 WSFC 群集中的资源。

1 环境准备

VMWare 14 Pro
windows_server_2019
SQLServer 2019

2 部署规划

三台机器: DNS+AD、SQLnode01、SQLnode2、SQLnode3

服务名称

IP

部署服务

SQL-SERVER

192.168.65.42

DNS+AD

SQL-NODE1

192.168.65.44

Sqlserver2019

SQL-NODE2

192.168.65.43

Sqlserver2019

SQL-NODE3

192.168.65.45

Sqlserver2019

服务名称

描述

VIP-Cluster

Sql AlwaysOn VIP

SQL-NODE1

集群节点1

192.168.65.100/24

192.168.65.101/24

SQL-NODE2

集群节点2

SQL-NODE3

集群节点3

3 安装步骤

1)DNS+AD ==》2)WSFC安装 ==》 3)SQLServer安装 ==》 4)配置alwaysOn ==》5)测试验证

4 安装DNS+AD

1)安装DNS

设置静态IP和首选DNS服务器ip为本机127.0.0.1

posgresql高可用 sql server高可用部署_sqlserver


进入服务器管理器开始安装DNS,添加角色和功能。

posgresql高可用 sql server高可用部署_SQL_02


进入添加角色和功能向导。

posgresql高可用 sql server高可用部署_服务器_03


下一步

posgresql高可用 sql server高可用部署_posgresql高可用_04


下一步

posgresql高可用 sql server高可用部署_SQL_05


下一步,选择DNS服务器

posgresql高可用 sql server高可用部署_posgresql高可用_06


下一步

posgresql高可用 sql server高可用部署_posgresql高可用_07


下一步

posgresql高可用 sql server高可用部署_sqlserver_08


下一步

posgresql高可用 sql server高可用部署_服务器_09


选择 如果需要,自动重新启动目标服务器,安装

posgresql高可用 sql server高可用部署_服务器_10


安装进行中

posgresql高可用 sql server高可用部署_DNS_11


安装完成,关闭。

2)安装AD

服务管理器 ==》添加角色和功能向导 ==》选择服务器角色

选择Active Directory 域服务,下一步

posgresql高可用 sql server高可用部署_DNS_12


下一步,选择 如果需要,自动重新启动目标服务器

posgresql高可用 sql server高可用部署_sqlserver_13


安装,显示安装进度

posgresql高可用 sql server高可用部署_sqlserver_14


安装成功

posgresql高可用 sql server高可用部署_DNS_15


选择,将此服务器提升为域控制器

posgresql高可用 sql server高可用部署_sqlserver_16


域控制器配置,添加新林,设置根域名

posgresql高可用 sql server高可用部署_posgresql高可用_17


选择 域名系统(DNS)服务器,全局编录(GC),安装

posgresql高可用 sql server高可用部署_服务器_18


忽略提示,下一步

posgresql高可用 sql server高可用部署_服务器_19


下一步

posgresql高可用 sql server高可用部署_posgresql高可用_20


下一步,默认文件夹地址

posgresql高可用 sql server高可用部署_服务器_21


下一步

posgresql高可用 sql server高可用部署_SQL_22


先决条件检查,安装

posgresql高可用 sql server高可用部署_SQL_23


安装 进入 安装过程

posgresql高可用 sql server高可用部署_SQL_24


配置成功,重启系统

posgresql高可用 sql server高可用部署_posgresql高可用_25

3)DNS与AD安装结果验证

检查AD状态

posgresql高可用 sql server高可用部署_sqlserver_26


DNS检查,DNS管理器

posgresql高可用 sql server高可用部署_SQL_27


首先检查域控制器是否已经将其主机名与 IP 地址注册到 DNS 服务器内,本域控制器也扮演DNS服务器,则进入DNS中查看,此处应该会有一个名称为shy.com 的区域,主机(A)记录表示域控制器win-ea9jlj4pct2.shy.com 已经正确地将其主机名与 IP 地址注册到 DNS 服务器内。DNS 客户端所提出的请求大多是正向解析,即通过 hostname 来解析 IP 地址对应与此处的正向查找区域;通过 IP 来查找 hostname 即为反向解析,对应于此处的反向查找区域。

posgresql高可用 sql server高可用部署_DNS_28


如果域控制器已经正确地将其扮演的角色注册到 DNS 服务器,则还应该有对应的 _tcp、_udp 等文件夹。在单击 _tcp 文件夹后可以看到如下所示的界面,其中数据类型为服务位置(SRV)的 _ldap 记录,表示 win-ea9jlj4pct2.shy.com 已经正确地注册为域控制器。其中的 _gc 记录还可以看出全局编录服务器的角色也是由 win-ea9jlj4pct2.shy.com 扮演的。

posgresql高可用 sql server高可用部署_服务器_29

4)创建域用户以及sql-node节点加入域控

服务器管理器 ==》 工具 ==》Active Directory用户和计算机

posgresql高可用 sql server高可用部署_服务器_30


域 ==》 右键新建 ==》 用户

posgresql高可用 sql server高可用部署_posgresql高可用_31


录入用户信息

posgresql高可用 sql server高可用部署_SQL_32


录入密码

posgresql高可用 sql server高可用部署_服务器_33


完成,创建成功

posgresql高可用 sql server高可用部署_DNS_34


右键 ==》属性 ==》更改隶属组

posgresql高可用 sql server高可用部署_DNS_35


posgresql高可用 sql server高可用部署_服务器_36


posgresql高可用 sql server高可用部署_posgresql高可用_37


posgresql高可用 sql server高可用部署_SQL_38


依次创建sql-node2,sql-node3

posgresql高可用 sql server高可用部署_DNS_39


sql-node节点电脑加入域控

调整IP地址设置,设置静态IP以及首选DNS服务器ip地址为DNS的ip.

posgresql高可用 sql server高可用部署_DNS_40


高级 -> DNS -> 此连接的 dns 后缀,添加域控的完整名称。

posgresql高可用 sql server高可用部署_DNS_41


计算机右键 -> 属性 -> 高级系统设置 -> 计算机名 -> 更改

修改计算机名sql-node1,修改隶属于域:shy.com

posgresql高可用 sql server高可用部署_DNS_42


点确定之后弹出一个输入在域控中建立的用户的用户名和密码。

posgresql高可用 sql server高可用部署_posgresql高可用_43


posgresql高可用 sql server高可用部署_DNS_44


添加域用户为管理员属性

使用本地用户Administrator登录后

服务器管理器 ==》 工具 ==》计算机管理

posgresql高可用 sql server高可用部署_DNS_45


右键属性

posgresql高可用 sql server高可用部署_服务器_46


添加

posgresql高可用 sql server高可用部署_SQL_47


posgresql高可用 sql server高可用部署_DNS_48


注销本地administrator,使用sql-node1@shy.com用户登录,确认已具有管理员权限。

5 安装WSFC

四种集群的仲裁配置:
多数节点:此配置不会用到仲裁磁盘,而所谓多数节点就是在正常节点数量占多数的情况下,集群才会提供服务,否则就停止服务。这种配置适用于奇数节点的集群,例如5个节点的集群,其正常节点数量必须至少3个,集群才会提供服务。
多数节点和磁盘:适用于偶数节点的集群,他在计算法定数量时会将仲裁磁盘计算进来,例如,4个节点+1个仲裁磁盘节点的集群,可以将其视为5个节点的集群,这时正常节点数量必须至少3个,集群才会提供服务。
多数节点和文件共享:它和(多数节点和磁盘)类似,不过仲裁磁盘改为共享文件夹内的文件。
没有多数:只有磁盘,只要仲裁磁盘脱机,集群就会停止提供服务(不建议使用)。

注意:域控不需要安装故障转移集群服务和SQL Server,也不需要加入到故障转移集群;
SQL Server 2012 AlwaysOn只支持最多一个主副本和四个辅助副本,最多允许三个同步提交的可用性副本(包括主副本),最多允许两个自动故障转移副本(包括主副本)。

需要在sql-node1、sql-node2、sql-node3节点同时安装,同时需保证账户在三个节点都拥有管理员权限。

1)安装故障转移集群

服务管理器 ==》添加角色和功能向导 ==》选择服务器角色 ==》功能,选择故障转移集群

posgresql高可用 sql server高可用部署_sqlserver_49


下一步

posgresql高可用 sql server高可用部署_DNS_50


posgresql高可用 sql server高可用部署_posgresql高可用_51


posgresql高可用 sql server高可用部署_sqlserver_52


安装完成,关闭。

2)验证配置

服务器管理 ==》 工具 ==》 故障转移群集管理器,创建群集之前建议验证一次所有配置

posgresql高可用 sql server高可用部署_SQL_53


选择验证配置,进入验证配置向导,下一步

posgresql高可用 sql server高可用部署_sqlserver_54


浏览 ==》 高级 ==》查找,选择sql-node1、sql-node2、sql-node3三个节点

posgresql高可用 sql server高可用部署_服务器_55


在验证配置向导中最好选择运行所有测试,进行全部检测就可以查看到服务器之间建立群集的所有设置,包括网络、共享磁盘、操作系统等。

posgresql高可用 sql server高可用部署_DNS_56


下一步

posgresql高可用 sql server高可用部署_服务器_57


下一步,验证中

posgresql高可用 sql server高可用部署_posgresql高可用_58


注意:测试需要一定时间,测试完毕后建议查看报告,报告中可详细查看具体的告警项,对于存储的警告,由于当前没有添加任何的存储设备,可忽略。对于网络警告,由于各个节点只有一个网卡(心跳和业务共用),可忽略。

posgresql高可用 sql server高可用部署_sqlserver_59


完成

3)创建wsfc

服务器管理 ==》 工具 ==》 故障转移群集管理器,创建群集

posgresql高可用 sql server高可用部署_SQL_60


输入群集名称

posgresql高可用 sql server高可用部署_posgresql高可用_61


注意:此IP为集群的管理名称和管理IP,跟AlwaysOn无关。

由于我们当前还没有任何存储,所以不勾选将所有符合条件的存储添加到群集。

posgresql高可用 sql server高可用部署_sqlserver_62


下一步

posgresql高可用 sql server高可用部署_SQL_63


创建成功,完成。

4)查看验证群集创建

服务器 ==》 开始 ==》windows管理工具 ==》故障转移群集管理器

posgresql高可用 sql server高可用部署_服务器_64


域控进行查看

posgresql高可用 sql server高可用部署_posgresql高可用_65

5)集群配置

集群仲裁配置

posgresql高可用 sql server高可用部署_posgresql高可用_66


进入配置向导

posgresql高可用 sql server高可用部署_posgresql高可用_67


下一步,选择高级仲裁配置

posgresql高可用 sql server高可用部署_DNS_68


选择所有节点

posgresql高可用 sql server高可用部署_posgresql高可用_69


不配置仲裁见证

posgresql高可用 sql server高可用部署_DNS_70


提示:对于本环境3个群集节点的情况,不需要仲裁磁盘,而所谓多数节点就是在正常节点数量占多数的情况下,集群才会提供服务,否则就停止服务。这种配置适用于奇数节点的集群,例如5个节点的集群,其正常节点数量必须至少3个,集群才会提供服务。

posgresql高可用 sql server高可用部署_sqlserver_71


下一步,配置完成

posgresql高可用 sql server高可用部署_posgresql高可用_72

6 安装SQLServer2019

注意:安装SQLServer 2012建议临时将DNS改为外网DNS,可以修改成默认DNS配置,安装过程需要更新相关补丁;
服务器配置,保持默认,安装完毕后修改为域账号即可;
同时建议使用本地用户Administrator登录这三个集群节点进行安装,不要用域用户sql-node登录,如果一开始使用域用户sql-node登录集群节点机器,在安装SQL Server的过程中SQL Server安装程序会连接故障转移集群,但是实际上单机安装SQL Server不需要连接故障转移集群,其他操作一样。

1)SQLServer 2019安装

双击iso ==》setup

posgresql高可用 sql server高可用部署_posgresql高可用_73


进入安装向导

posgresql高可用 sql server高可用部署_SQL_74


下一步

posgresql高可用 sql server高可用部署_DNS_75


下一步,接受协议

posgresql高可用 sql server高可用部署_posgresql高可用_76


根据需要选择相关选项

posgresql高可用 sql server高可用部署_sqlserver_77


下一步

posgresql高可用 sql server高可用部署_posgresql高可用_78


posgresql高可用 sql server高可用部署_服务器_79


posgresql高可用 sql server高可用部署_posgresql高可用_80


选择混合模式,输入系统账户密码,选择当前系统账户

posgresql高可用 sql server高可用部署_服务器_81


添加当前系统用户

posgresql高可用 sql server高可用部署_服务器_82


默认,下一步

posgresql高可用 sql server高可用部署_服务器_83


默认,下一步

posgresql高可用 sql server高可用部署_sqlserver_84


选择当前系统用户

posgresql高可用 sql server高可用部署_SQL_85


准备安装

posgresql高可用 sql server高可用部署_DNS_86


安装进行中

posgresql高可用 sql server高可用部署_sqlserver_87


安装成功

posgresql高可用 sql server高可用部署_posgresql高可用_88


安装SSMS,下载

posgresql高可用 sql server高可用部署_sqlserver_89


右键,管理员身份运行,安装

posgresql高可用 sql server高可用部署_posgresql高可用_90


安装

posgresql高可用 sql server高可用部署_SQL_91


重新启动,即完成安装

posgresql高可用 sql server高可用部署_posgresql高可用_92

2)配置SQLServer以域帐户运行

注销Administrator登录,使用域账户重新登录系统,打开SQL Server 配置管理器,修改SQL Server实例的属性,将登录身份改为“shy\sql-node1”。修改之后,重启SQL Server实例。

服务器 ==》 开始 ==》Microsoft SQL Server 2019 ==》SQL Server 2019 Configuration Manager

posgresql高可用 sql server高可用部署_SQL_93


更换账户查找位置为域控目录

posgresql高可用 sql server高可用部署_posgresql高可用_94


选择域控账户

posgresql高可用 sql server高可用部署_服务器_95


posgresql高可用 sql server高可用部署_sqlserver_96


同样步骤,更新SQL Server Agent(MSSQLSERVER)登录账户为域控账户;

3)授权域账户相关权限

授予域账号sysadmin角色;

使用sa账户登录;

posgresql高可用 sql server高可用部署_sqlserver_97


安全性 ==》登录名 ==》右键 新建登录名

posgresql高可用 sql server高可用部署_SQL_98


搜索 ==》查找位置 ==》域控目录

posgresql高可用 sql server高可用部署_posgresql高可用_99


输入并检查名称

posgresql高可用 sql server高可用部署_posgresql高可用_100


服务器角色 ==》选择public和sysadmin

posgresql高可用 sql server高可用部署_SQL_101

7 配置AlwaysOn可用性组

1)配置开启AlwaysOn

进入SQL Server配置管理器,SQL Server服务开启AlwaysOn高可用性。

posgresql高可用 sql server高可用部署_sqlserver_102


重启服务

posgresql高可用 sql server高可用部署_sqlserver_103


AlwaysOn启用成功,在服务器属性里HADR状态置为True。

posgresql高可用 sql server高可用部署_SQL_104


在集群任意节点的SQL Server中验证各节点的投票数,命令如下:

SELECT * FROM sys.dm_hadr_cluster_members;

posgresql高可用 sql server高可用部署_SQL_105


SELECT * FROM sys.dm_hadr_cluster;

posgresql高可用 sql server高可用部署_DNS_106

2)新建AlwaysOn可用性组

进入新建可用性组向导

posgresql高可用 sql server高可用部署_sqlserver_107


下一步

posgresql高可用 sql server高可用部署_posgresql高可用_108


输入可用性组名称

posgresql高可用 sql server高可用部署_DNS_109


根据不同数据库状态进行不同的设置

posgresql高可用 sql server高可用部署_DNS_110


设置完整恢复模式

数据库 ==》右键 属性 ==》选项 ==》恢复模式 ==》完整

posgresql高可用 sql server高可用部署_SQL_111


完整备份

posgresql高可用 sql server高可用部署_DNS_112


posgresql高可用 sql server高可用部署_SQL_113


刷新后,满足先决条件,下一步;

注意:加入到AlwaysOn可用性组的数据库必须符合下面要求

数据库的恢复模式必须是“完整”恢复模式

数据库已进行了一次完整备份

posgresql高可用 sql server高可用部署_sqlserver_114


使用添加副本来将其他节点添加到可用性组中,设置为可读,并选择自动故障转移节点和同步提交节点。

副本,添加sql-node2、sql-node3副本,设置自动故障转移、可用性模式、可读辅助副本

posgresql高可用 sql server高可用部署_sqlserver_115


端点和备份首选项默认即可。

posgresql高可用 sql server高可用部署_sqlserver_116


posgresql高可用 sql server高可用部署_posgresql高可用_117


提示:端点URL也可使用IP的方式,若服务器存在多个网卡(业务和心跳分开),使用FQDN长名的方式可能不能保证端点数据通过心跳网卡来传送。

配置侦听器,参考如下:

posgresql高可用 sql server高可用部署_sqlserver_118


选择数据同步,根据sqlserver各个节点数据库同步情况,选择不同选项。

posgresql高可用 sql server高可用部署_服务器_119


确认相关验证。

posgresql高可用 sql server高可用部署_服务器_120


点击“下一步”来检查并确认之前的配置信息,若无误,点击“完成”。同时也可保存建立可用性组脚本,以便分步诊断故障之用。

posgresql高可用 sql server高可用部署_SQL_121


posgresql高可用 sql server高可用部署_posgresql高可用_122


posgresql高可用 sql server高可用部署_服务器_123


可用性组创建完成。

8 确认和验证

1)数据库验证

数据库处于已同步状态;

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

posgresql高可用 sql server高可用部署_服务器_124

2)WSFC故障转移集群验证

管理工具 ==》 故障转移群集管理器

posgresql高可用 sql server高可用部署_posgresql高可用_125


可用性组成为一个集群角色。

posgresql高可用 sql server高可用部署_服务器_126

3)AlwaysOn可用性面板验证

AlwaysOn高可用性 ==》 右键显示面板

posgresql高可用 sql server高可用部署_DNS_127

4)域控制器验证

服务管理器 ==》工具 ==》 Active Directory用户和计算机管理

posgresql高可用 sql server高可用部署_sqlserver_128

5)功能验证

任意节点通过侦听器地址:192.168.65.101登录数据库。

posgresql高可用 sql server高可用部署_sqlserver_129


posgresql高可用 sql server高可用部署_DNS_130


登录成功则表示AliwaysOn可用性组配置成功。