一、 IP及名称规划
IP | 名称 | 说明 |
192.168.1.111 | WIN16-TEST.test.com | 节点1 |
192.168.1.112 | WIN16-TEST02.test.com | 节点2 |
192.168.1.113 | test-cluster | Windows群集名 |
192.168.1.114 | lsnr-test | SQL Server侦听器名 |
二、 安装windows server 2016操作系统
系统选择,一定要选择带【桌面体验】的,不然就会安装了没有GUI界面
区别参考
Windows Server 2016 Standard 和 Datacenter 版本的比较 - GJJ2019 - 博客园
安装完会自动重启,然后设置管理员密码
好了,可以用了
参考 windows server 2016怎么安装教程-百度经验
配置主机ip及DNS
克隆一台机器作为从库
三、 配置Windows故障转移群集
- 安装Windows故障转移群集(所有节点)
2. 配置计算机名和DNS后缀
每个节点的计算机不需要加入域,但需要添加DNS后缀,且每个节点的后缀必须要相同(例如:test.com,需重启生效),如下图:
3. 将DNS服务器地址改为本地
如果是直接分配好的机器,需要修改DNS地址为本地
4. 添加sqlserver管理用户
在每个节点上都添加一个本地用户(mssql.admin),且用户名及密码每个节点都一致,使2台服务器能访问共享文件夹,也作为sqlserver管理员用户。
5. 配置主机名解析
在每个节点的 hosts 文件中添加每个节点的服务器IP地址和主机名称、群集IP地址和名称、侦听器IP地址和名称:
hosts文件路径:C:\Windows\System32\drivers\etc
6. 设置允许应用或功能通过防火墙
所有节点均要设置,按照下面图中红框设置,注意选项后面打勾的位置。
7. 启用所需服务并且改成自启动
注意computer browser服务依赖于workstation和Server服务,需要先启动,否则computer browser服务会启动失败。
8. 创建故障转移群集
可以用administrator或者添加到管理员组的普通用户来创建,两节点用户名密码必须相同;如果是后者,还需要在两节点注册表添加 LocalAccountTokenFilterPolicy为1
以管理员模式打开powershell,执行:
new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1
否则添加第二台机器时会遇到以下报错
开始创建
直接输入服务器名称然后点添加,通过浏览来查找可能会报错
注意不要勾下面这个,否则磁盘会从本地offline
7. 配置群集仲裁设置
由于我们是两个节点的故障转移集群,所以需要配置群集仲裁设置,如果是奇数节点,这一步是不需要做的
也可以点击浏览直接新建一个共享文件夹
四、 两节点安装sqlserver软件及SSMS
略,参考单实例安装手册,注意两边版本和选择安装的功能要一样
注:sqlserver 2016 SP2开始可以不安装.NET Framework 3.5
SQL Server 2016 & 2017: Hardware & software requirements - SQL Server | Microsoft Learn
五、 启用SQL Server AlwaysOn AG特性
所有节点均操作
两边用户名和密码要设成一样
重启SQL Server服务
六、 配置证书认证
以下将开始数据库中操作,可以先打个虚拟机快照备份
所有节点均需操作
节点1
USE master;
GO
--创建主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'xxxx';
--创建证书 这里有两个"CERT1",建议每台机器都改成不同的名称以作区分
CREATE CERTIFICATE CERT1 WITH SUBJECT = 'CERT1', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
--把刚才创建的证书备份到文件 这里也有两个CERT1要改
BACKUP CERTIFICATE CERT1 TO FILE = 'C:\cert\CERT1.cer';
--创建终结点,设为证书验证 这里第二行有1个CERT1要改
CREATE ENDPOINT [group0_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT1, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
节点2(注意修改相关内容)
USE master;
GO
--创建主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'xxxx';
--创建证书 这里有两个"CERT1",建议每台机器都改成不同的名称以作区分
CREATE CERTIFICATE CERT2 WITH SUBJECT = 'CERT2', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
--把刚才创建的证书备份到文件 这里也有两个CERT1要改
BACKUP CERTIFICATE CERT2 TO FILE = 'C:\cert\CERT2.cer';
--创建终结点,设为证书验证 这里第二行有1个CERT1要改
CREATE ENDPOINT [group0_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT2, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
证书通过共享文件互相复制粘贴
载入其它节点证书(不用载入自己的证书)
节点1
CREATE CERTIFICATE CERT2 FROM FILE = 'C:\gdmk\CERT2.cer';
GO
节点2
CREATE CERTIFICATE CERT1 FROM FILE = 'C:\gdmk\CERT1.cer';
GO
七、 新建可用性组
在节点1建一个测试库并进行全备
可以选备份配置
配置侦听器(建完ag后配也可以)
八、 数据同步测试
九、 自动故障转移测试
关闭节点一 sqlserver服务,可以看到节点2变成了主库
重新启动节点一服务,开启后主从不会自动再次切换
测试数据同步
十、 手动故障切换测试
可以看到角色发生了变化
参考
sql server 2016 AlwaysOn实现无域高可用全教程_WSD_csdn的博客-CSDN博客_sqlserver2016 allwayson
Implement SQL 2016 Availability Group without Active Directory Part 1
Implement SQL 2016 Availability Group without Active Directory Part 2