在Windows非域环境中安装使用MSSQL 2016 Always On Availability Group

0    665    3

Tags:

👉 本文共约4520个字,系统预计阅读时间或需17分钟。

对DBA而言,不需要域就可以搭建SQL Server AlwaysOn是Windows Server 2016中最令人兴奋的功能了,它不仅可以降低搭建的成本,而且还减少了部署和运维的工作量。该特性可以使用户不必额外准备一台或者两台(为了避免单点故障)AD域服务器,从而降低了部署的成本;对DBA而言,可以把更多的精力放在数据库上,而不需要去了解AD域的知识,特别是对MySQL和Oracle转型过来的DBA而言,这绝对是一个非常贴心的特性。

Windows Server 2016可以配置无域的Windows群集,因此也能够以此来配置无域的SQL Server AlwaysOn 高可用。

架构

操作系统:Windows Server 2016 数据中心版 64位简体中文

数据库:SQL Server 2016

节点1:mssql101.lhr.com,192.168.0.101
节点2:mssql102.lhr.com,192.168.0.102
节点3:mssql103.lhr.com,192.168.0.103

虚拟IP包括:

  • OS集群故障转移VIP:192.168.0.105
  • SQL always on VIP(侦听器IP):192.168.0.106

非域搭建Alwayson只是省去搭建域控那一部分,其他大同小异。

通用配置

重新生成Windows使用SID

打开克隆完的虚拟机:C:\windows\System32\Sysprep\Sysprep.exe 勾选“通用”选项即可。

具体参考:https://www.dbaup.com/wufawanchengyujiaruyuanyinshishitujiarudeyudesidyubenjisuanjidesidxiangtong.html

关闭防火墙

关闭3台机器的防火墙。

firewall.cpl 和 wf.msc 防火墙设置

关闭自动更新

显示桌面图标

修改IP

每个节点的计算机不需要加入域,但需要添加DNS后缀,且每个节点的后缀必须要相同

内网网卡:ipv6去掉,禁用TCP/IP上的NetBIOS,设置DNS后缀 lhr.com

其中DNS服务器留空,防止集群转发给DNS服务器注册名称而导致报错

创建账号

所有节点创建相同的帐号、密码,且属于本地Administrators组。

考虑到操作系统已自带了administrator,所以此步骤也可以忽略,但为了安全起见,建议还是自建一个集群专用的账户,专号专用,以便日后管理和安全。

配置注册表

所有节点 打开powershell 输入:

修改主机名

所有节点更改计算机名,加DNS后缀

修改hosts文件

C:\Windows\System32\drivers\etc\

启用网络发现

控制面板-》网络和 Internet-》网络和共享中心-》高级共享设置-》启用网络发现

image-20211231095000112

云环境绑定虚拟IP

如果你的环境是云环境,那么还需要绑定VIP到相应的云服务器才可以。

安装并配置故障转移集群

所有节点安装故障转移集群,重启机器,建WSFC集群。

image-20211231095516304

也可以使用命令行来创建集群:

参数说明:

–Name:集群的名字

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

-StaticAddress:集群的公共IP

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!

结果:

配置仲裁

基于工作组搭建的集群目前还不支持文件共享的方式做仲裁,官方建议使用磁盘做仲裁或者云见证。我这次验证的时候因为没有条件,所以就没有做仲裁了,在实际生产环境中,请大家利用故障转移集群管理器创建仲裁。

注意

1、如果是奇数节点,这一步是不需要做的!

2、共享文件夹所在机器入域(域网络)和不入域(独立机器)都无所谓

3、生产环境不要把共享文件夹放在域控上!

我们在使用故障转移集群的时候,只用两种仲裁配置:(多数节点) 和 (多数节点和文件共享)

如果集群节点是奇数,那么使用多数节点;

如果集群节点是偶数,那么使用多数节点和文件共享 (需要配置一个共享文件夹,各个节点都能访问这个共享文件夹,并且共享文件夹所在机器不需要加入域)。

以下是配置示例:

  1. 配置集群仲裁
  2. 选择文件共享见证

  3. 在集群节点之外的一台服务器上创建共享文件夹\\XIANGMU4TEST01\share,并设置 Everyone 完全控制的权限

安装SQL Server 2016

安装SQL Server 2016

安装过程略。

启用alwayson功能

在SQL Server配置管理器里启用alwayson功能,SQL Server服务的启动帐户名不用改还是用NT Service/MSSQLSERVER

注意一下,如果是用域来搭建alwayson,启动SQL服务是用域用户的,因为现在是非域环境,所以用NT Service/MSSQLSERVER即可

配置administrator登陆

配置证书验证

非域环境的alwayson实质上是用的证书来做节点之间的验证,所以这一步跟搭建镜像的步骤是一样的。

在每个节点上创建alwaysOn的通讯端点(镜像端点)。

在windows server 2016之前,配置端点的加密的方式有两种:域用户授权和证书加密,升级到windows server 2016后,如果不使用域搭建AlwaysOn,那么就只能选择证书加密的方式了。

1、创建一个共享目录,允许AlwaysOn的所有节点均可以读写该目录;

​ 共享目录用来存放端点通讯的证书,在后续的步骤中将会用到。示例为:\\192.168.0.101\ao_share

2、创建端点并备份(创建主密钥/证书/端点,备份证书到共享文件夹中)

问题:如果备份或还原证书的时候,报错“无法写入文件 '\192.168.0.101\share\MSSQL102_cert.cer1'。请确保您有写权限、文件路径有效以及该文件尚不存在。”

解决:可以变相临时解决:可以把文件都拷贝到本地盘,不使用共享文件夹,然后进行备份和还原即可,备份还原到本地,手续手动拷贝。

搭建always on集群

新建AG组

自动故障转移:运行在哪些节点间建立高可用(SQL Server 2016已经支持在3个节点了) 。

同步提交:AlwaysOn同步的模式,对应的还有异步模式,当选择了自动故障转移时,必须勾选同步提交;

可读辅助副本:当该节点为辅助副本时,能否接受只读请求以及以哪种方式接受只读请求(只读意向)。

!(https://pic.dbaup.com/i/img/202112311942647.png)

注意:SQL2016新增了一种数据同步首选项,叫做 “自动种子设定”,无须备份还原数据库,在主副本创建好数据库,选择自动种子设定,SQLServer会帮你在各个辅助副本创建好数据库并同步好数据,相当方便

命令行添加方式:

添加侦听器

image-20220101195157287

最后,可以使用侦听器名称来连接数据库,数据库显示已同步,配置无域AlwaysOn成功。

故障转移

可以手动,也可以自动,大家可以自行测试。

切换完成之后:

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复