配置SQL Server 2016无域AlwaysOn

Windows Server 2016 以及 SQL Server 2016出来已有一段时间了,因为Windows Server 2016可以配置无域的Windows群集,因此也能够以此来配置无域的SQL Server AlwaysOn 高可用。

下面就来一步一步配置2个节点的无域的SQL AlwaysOn 

 

环境准备:

(1)2台物理服务器,也可以是2台虚拟机。操作系统:Windows Server 2016 Datacenter  

(2)2台服务器上均安装SQL Server 2016 (也可以是SQL Server 2012)

 

IP以及名称规划:

节点1(物理服务器或虚拟机):JF-SQLDB01   IP地址:10.2.218.131

节点2(物理服务器或虚拟机):JF-SQLDB02   IP地址:10.2.218.132

Windows群集名称:JF-AlwaysOn   IP地址:10.2.218.130 (虚拟IP

可用性组名称:SQLAG

SQL侦听器名称:JFSQL01   IP地址:10.2.218.133(虚拟IP

 

注意事项:

1,只有Windows Server 2016 操作系统才能配置不依赖域的群集 ,2台服务器的操作系统,安全补丁,SQL Server版本要完全一致。

2,两个节点的Windos Server 2016 都以Administrator账户登录,并且两台服务器的Administrator密码相同,无特殊意义,只是为了方便后续的操作。

3,两个节点的SQL Server 2016 服务启动账户都设置成Administrator 。2个节点的数据库都有Administrator的登录名,也就是使用Administrator登录服务器时,可用Windows身份验证登录SQL Server。

      即:

           节点1的SQL Server上有:JF-SQLDB01\administrator  ;节点2上有:JF-SQLDB02\administrator ;这2个登录账号,在安装SQL Server的时候可创建。均有sysadmin权限。

 

一:首先配置Windows故障转移群集(2个节点均使用Administrator登录)

 

第一步:安装Windows故障转移群集(所有节点都需要安装)

 

第二步:每个节点的计算机不需要加入域,但需要添加DNS后缀,且每个节点的后缀必须要相同(例如:test.cn),如下图所示的操作。

 

第三步:在每个节点上都添加一个用户(我增加的用户名称是DCAdmin),且用户名以及密码每个节点都一致,添加此用户的目的是为了2台服务器能访问共享文件夹。

 

第四步:在每个节点的 hosts 文件中添加每个节点的服务器IP地址和名称、群集IP地址和名称、侦听器IP地址和名称,如下所示。

hosts文件路径:C:\Windows\System32\drivers\etc

hosts文件可以用记事本打开

服务器名称,填写的是计算机全名,也就是服务器名带上之前设置的DNS名称后缀的名称,例如:JF-SQLDB01.test.cn。host文件需要在2个节点的服务器上都进行相同的操作。

 

第五步:设置允许应用或功能通过防火墙,两个节点均要设置,按照下面图中红框框出的地方设置,注意选项后面打勾的位置。

 

第六步:在DB1这个节点上,以管理员方式运行PowerShell ,使用脚本创建Windows群集。因为无域的群集没有图形化界面可设置,所以只能使用PowerShell 进行创建。

注意:如果登陆Windows Server 2016服务器的账户不是Administrator,需要先以管理员方式运行PowerShell,并执行下面的脚本:

new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1

 

因为我登陆Windows Server 2016用的是Administrator,所以跳过执行上面的命令,直接运行下面的PowerShell脚本:

 New-Cluster -Name JF-AlwaysOn -Node JF-SQLDB01,JF-SQLDB02 -StaticAddress 10.2.218.130 -AdministrativeAccessPoint DNS 

--获取集群名
Get-Cluster  

--群集详情  
Get-ClusterResource

 

 

使用Power Shell 安装群集后,在故障转移群集管理器中是看不到群集信息的,需要手动连接到群集,如下面图所示:

打开故障转移群集管理器后,在管理器处右键鼠标,选择“连接到群集” :

在弹出的对话框中手动输入群集的名称:

这样就能在故障转移群集管理器中看到群集的信息了。同样的方法在DB2的节点上再重复设置即可在DB2上看到群集信息。

 

二:配置SQL Server AlwaysOn 

SQL Server的安装这里就不描述,直接从配置AlwaysOn开始操作。

1 ,这里配置AlwaysOn,我采用的是共享文件夹的方式,所以首先在DB1这个节点上创建一个共享文件夹添加之前在每个节点上都创建的用户DCAdmin,这样DB2这个节点也能访问。

 

 

2,在DB1和DB2上设置启用AlwaysOn

启用AlwaysOn会要求重启服务,重启就可以。

 

3,重启服务后,查看服务器属性,确保 HADR 为 True 

 

既然节点没有加入域,那么就不能用域认证,只能用证书认证,因此需要在每个节点的数据库中创建其他节点的数据库证书。(请留意我连接数据库的账户,在创建端口的代码中有用到)

因此在配置可用性组前先在各节点配置证书认证信任。

4,分别在两个节点数据库上创建证书,并且彼此还原对方的证书,SQL代码如下:

注:我是在节点1上用administrator登录服务器,使用Windows身份登录SQL Server。在节点2上也是用administrator登录服务器,使用Windows身份登录SQL Server

--共享文件夹路径: ---\\JF-SQLDB01\SQLAlwaysOnShare   使用共享文件夹是为了方便读取每个节点的证书

--节点一上执行:创建主密钥/证书/端点,备份证书到共享文件夹中。
USE master;
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'JFAlwaysOnShare2016'; ----密码
GO

CREATE CERTIFICATE Cert_DB01
WITH SUBJECT = 'Cert_DB01',
START_DATE = '2017-12-01',EXPIRY_DATE = '2099-12-31';  --证书的有效时间
GO
----导出证书,将证书放在共享文件夹里面
BACKUP CERTIFICATE Cert_DB01
TO FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB01.cer';    
GO
---创建端点
CREATE ENDPOINT [SQLAG_Endpoint]
AUTHORIZATION [JF-SQLDB01\administrator]    ----此账户是连接数据库的账户
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)   ---侦听端口,1024 和 32767 之间的任何数字都有效。侦听IP地址,默认值为 ALL,表示侦听器将接受任何有效 IP 地址上的连接
FOR DATA_MIRRORING
(ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB01, ENCRYPTION = REQUIRED ALGORITHM AES)
GO



--节点二上执行:创建主密钥/证书,备份证书。
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'JFAlwaysOnShare2016';
GO

CREATE CERTIFICATE Cert_DB02
WITH SUBJECT = 'Cert_DB02',
START_DATE = '2017-12-01',EXPIRY_DATE = '2099-12-31';
GO

BACKUP CERTIFICATE Cert_DB02
TO FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB02.cer';
GO

CREATE ENDPOINT [SQLAG_Endpoint]
AUTHORIZATION [JF-SQLDB02\administrator]
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING
(ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB02, ENCRYPTION = REQUIRED ALGORITHM AES)
GO


--节点一上执行:创建节点二的证书
USE master;
GO
CREATE CERTIFICATE Cert_DB02
FROM FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB02.cer';
GO

--节点二上执行:创建节点一的证书
USE master;
GO
CREATE CERTIFICATE Cert_DB01
FROM FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB01.cer';
GO



5,配置可用性组,接下来就和以前版本的配置是一样的了,不再描述,按照下面的截图一步一步配置

 

 

 

 

 

 

 

 

 

 

 

6,最后创建侦听器,当然,创建侦听器也可以在上一步设置。

 

 

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

 

 

 

 

 

 

 

  • 10
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 40
    评论
SQL Server AlwaysOn是一种高可用性和灾难恢复解决方案,它基于SQL Server数据库引擎的一组功能和技术。 要简单搭建SQL Server AlwaysOn,需按以下步骤进行操作: 1. 确保已安装SQL Server数据库引擎,并且在所有参与AlwaysOn的服务器上安装了相同的版本和服务包。 2. 创建一个Windows Server故障转移集群,该集群将作为AlwaysOn配置的基础。确保集群中的每台服务器都满足Windows Server故障转移集群的最低要求。 3. 在每台服务器上打开SQL Server配置管理器,启动SQL Server对应的服务。 4. 在主服务器上创建一个数据库并设置为全同步恢复模式。将该数据库设置为复制到其他参与AlwaysOn的服务器。 5. 在主服务器上进行AlwaysOn配置,右键点击数据库,选择"属性",然后选择"AlwaysOn高可用性"选项卡。勾选"启用AlwaysOn可用性组"和"自动故障转移"选项。 6. 单击"向导"按钮,按照提示创建可用性组。设置虚拟名称和监听器,选择其中一个服务器作为主服务器,配置备机的读取访问。 7. 在从属服务器上重复步骤6,将其添加到可用性组中。 8. 在主服务器上启动可用性组。 9. 在从属服务器上验证可用性组的配置。确保数据库在主服务器上运行,并且从属服务器显示为已同步。 10. 测试故障转移功能。分别关闭主服务器和从属服务器,观察数据库是否能够自动切换到其他服务器上,并保持数据的一致性。 以上简单搭建SQL Server AlwaysOn的步骤仅是基本流程,具体配置和设置可能因环境和需求的不同而有所差异。建议参考官方文档或咨询专业人员以获取更加详细的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值