欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

程序员文章站 2024-03-25 21:18:34
...

一、准备工作:

1.安装服务器操作系统,这里以为windwows server 2016 标准版为系统环境。

准备至少两台及以上的windows server服务器,本教程以双机热备功能为例。

系统环境为:

①两台服务器均安装 windwows server 2016 标准版操作系统。

②两台计算机均在同一网络环境下。

③**系统。

④先完全关闭两台server的防火墙,配置设置完成后再添加防火墙端口访问规则。

2.配置计算机名及DNS后缀。

(不要使用默认的随机计算机名,会给后续配置群集时输入带来不便)

计算机名称及IP地址配置如下:

计算机名:DB01  IP地址: 192.168.31.49

计算机名:DB02  IP地址: 192.168.31.48

非域环境下DNS后缀必须要配置。

具体步骤如下图:

右键我的电脑->属性->更改设置-

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

 

设置完以后需要点击"确定"按钮,才可以保存,保存完之后,提示重启计算机。

因为是新装的服务器,没有相关业务应用,直接重启即可。

需要在安装SQL server前进行计算名称的配置修改,否则后续会多一些配置步骤

3.修改hosts文件及确认网络通信正常。

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

符号#为单行注释,前面填写IP地址,空格,后面填写域名或计算机名。

使用文本编辑器编辑hosts,加入配置节如下图:

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

修改完后,对网络连接进行检查(双向的检查,两台需要测试互通)。

使用ping 命令,ping 计算机名/域名,进行测试(不是ping IP)。

使用ipconfig /all 检查主计算机名称DNS后缀以及IP地址 子网掩码 网关 等相关配置

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

4.修改系统设定项。

1.确认当前登陆计算机的用户是管理员用户,两台server具有相同的用户名和密码。

2.检查服务,启动如下服务:

网络共享服务 server

远程注册表服务 Remote Registry

WMI服务 Windows Management Instrumentation

3.组策略gpedit.msc (域用户下面的配置就不需要管这些策略)

后续步骤如有异常,需要注意回来检查如下配置节的设置是否正确:

windows设置->安全设置->本地策略->用户权限分配

windows设置->安全设置->本地策略->安全选项

网络访问: 本地帐户的共享和安全模型-> 必须配置为"经典"

 

二、安装server群集和故障转移:

添加角色和功能

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

 

如果没有安装.net framework3.5,则勾选安装。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

中间没有特殊选项的步骤可以直接点下一步,关键选项如下:

勾选故障转移群集->点击添加功能

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

一直下一步,等待片刻,直到安装过程完成。

安装完成后,打开群集管理工具.如下图:

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

验证配置:

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

输入DB01的计算机名或者域名,然后点击添加按钮.

再输入DB02的计算机名或者域名,同样点击添加按钮.

将两台server都添加进列表之后,才点击下一步。

不要尝试点击"浏览"按钮进行添加,可能根本就不弹出任何列表)

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

运行所有测试。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

测试结果中,测试不适用和已通过测试,都是正常情况。

如果出现红色的测试不成功错误信息,需要额外注意看一下。

除了AD域的错误提示之外的其它错误需要根据信息进行灵活的排错。

比如访问权限受限,或者远程注册表服务没有开启等。

测试成功后,就可以马上利用本次的测试来创建群集了。

如下图所示:(勾选"立即使用经过验证的节点创建群集")

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

输入群集的名称和群集IP地址。然后下一步。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

群集创建完成后的界面如下:

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

群集创建完成后,注意节点的数量和状态。

创建群集只需要在一台server上面操作创建就可以了。

如果群集状态不正常,在另外一台服务器(非主服务器),可以直接连接到群集,测试和验证一下群集配置。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

到目前为止,群集创建基本完成,但是还缺少仲裁配置。

仲裁可以使用仲裁磁盘,也可以使用共享文件夹。

仲裁磁盘需要添加群集磁盘和配置iSCSI发起程序与磁盘联机,比较复杂。

这里使用共享文件夹进行仲裁。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

输入计算机名,点击显示共享文件夹,确定->下一步

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

到此为止,群集配置完毕。

 

群集已经有了节点,群集的角色功能列表中目前是空着的

角色功能需要在SQL server中操作AlwaysON,由SQL server来配置角色。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

三、SQL server 安装配置

1.安装SQL server 2016 企业版。

①虚拟光驱加载ISO镜像文件。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

② 全新或独立安装。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

下一步

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

根据自己需要的功能勾选,通常只需要勾选少量几个功能:

数据库引擎,SQL server复制,客户端工具链接,管理工具-基本/完整

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

如果是新系统,没有安装过SQL server任何版本和实例。可以选择默认实例,默认实例的配置相对简单。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

指定SQL server管理员,点击"添加当前用户"

选择混合模式,配置sa默认密码

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

安装完成。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

2.配置SQL server 远程访问,开启AlwaysON.

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

找到自己安装的实例对应的TCP/IP服务,确定是已启用。

切换到IP地址,找到本机对应的IP地址,设置为启用,TCP端口设置sql server默认的1433端口即可。(最下面的IPAll不要设置)

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

②找到自己安装的实例对应的SQL数据库引擎主服务,启用AlwaysON。

(只有在server群集下才可以启用。)

 

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

启动AlwaysON和修改IP以后,务必重启当前实例的服务,否则无法生效。

 

 

四、Always ON配置

1.前置步骤:

①在主服务器DB01上面恢复和还原数据库。

右键数据库->属性->选项->修改数据库属性,自动关闭改为False.

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

2.检查两台SQL服务器的配置。

确认已经启用HADR。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

查看计算机名称和实例名称是否正确。

select @@SERVERNAME

--删除server名称

exec sp_dropserver @@ServerName

-- 添加本地server名称

exec sp_addserver 'CHENS\MSSQL','LOCAL'

-- 查询可用server列表

exec sp_helpserver

 

查看群集节点成员

select * from sys.dm_hadr_cluster_members

select * from sys.dm_hadr_cluster_networks

 

3.配置证书

(非域环境下的SQL alwaysON必须配置证书,域环境下则不需要此步骤)

DB01和DB02分别配置和生成一个证书。核心代码如下(两台都需要执行,只需要修改下面的DB01和DB02部分):

1.生成证书

USE master;   

GO

--创建证书。

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'DBserver2016';--指定**

GO

CREATE CERTIFICATE Cert_DB02--证书名称

WITH SUBJECT = 'Cert_DB02',--主题

START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30'; --有效时间  

GO

BACKUP CERTIFICATE Cert_DB02--备份证书到文件

TO FILE = 'D:\DB02.cer';

GO

CREATE ENDPOINT [DB02_endpoint]--使用指定的证书创建镜像端点

    STATE=STARTED

    AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)

    FOR DATA_MIRRORING

    (ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB02, ENCRYPTION = REQUIRED ALGORITHM AES)

GO

 

如果不慎配置过程中失败了,可以重新来过。如果已经成功配置完成了,下面的3个删除代码请谨慎使用。

drop endpoint [DB02_endpoint] --删除镜像端点

drop certificate Cert_DB02--删除证书

drop master key --删除主**

 

2.导入对方的生成证书。

把证书拷贝到仲裁共享目录,或者是使用其它方式拷贝发送。

使得两台计算机分别导入对方生成的证书。

在DB01上导入DB02生成的证书,在DB02上面导入DB01生成的证书。

--例如:在DB02上执行:使用导入方式创建节点一的证书

USE master;

 GO

 CREATE CERTIFICATE Cert_DB01

 FROM FILE = 'C:\certCommon\DB01.cer';

 GO

 

下面附个代码块,如果上面的代码不理解,不清楚怎么生产后互相交换导入的过程,可用参照下面这个代码操作.否则直接跳过.


--因为无域账号认证,故需创建证书,以便节点之间互相信任访问。
USE master; 
GO 
 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'aaa@qq.com'; ----密码
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 = '\\WindowsServer01\SQLAlwaysOnShare\Cert_DB01.cer'; 
 GO 
 CREATE ENDPOINT [SQLAG_Endpoint] 
 AUTHORIZATION [WindowsServer01\administrator] 
 STATE=STARTED 
 AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) 
 FOR DATA_MIRRORING 
 (ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB01, ENCRYPTION = REQUIRED ALGORITHM AES)
 GO 
--节点二上执行:创建主**/证书,备份证书。 
USE master; 
 GO 
 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'aaa@qq.com'; 
 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 = '\\WindowsServer01\SQLAlwaysOnShare\Cert_DB02.cer'; 
 GO 
 CREATE ENDPOINT [SQLAG_Endpoint] 
 AUTHORIZATION [WindowsServer01\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 = '\\WindowsServer01\SQLAlwaysOnShare\Cert_DB02.cer'; 
 GO 
--节点二上执行:创建节点一的证书 
USE master; 
 GO 
 CREATE CERTIFICATE Cert_DB01 
 FROM FILE = '\\WindowsServer01\SQLAlwaysOnShare\Cert_DB01.cer'; 
 GO

4.配置可用性组

证书处理完毕以后,就可以开始真正进行高可用性配置了

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

(输入可用性组的名字,这里输入的可用性组的名字,其实就是对应着群集角色下面的角色名字

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

选择和勾选高可用性数据库,下一步。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

添加副本。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

检查端点信息:

(这里的端点信息,其实就是上面SQL语句生成的端点,例如DB02_endpoint

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

点击下一步,到数据库同步选项,请优先选择<自动种子设定>。(SQL企业版才有的功能,截图的时候由于我的已经创建完成了,不能再次创建,网上找了一个其它版本的截图过来)

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

可用性验证成功。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

一直点击下一步,直到完成。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

输入侦听器的IP地址,例如192.168.31.51,端口1533.

侦听器创建完成之后即可使用侦听器的IP地址和端口进行数据库访问。

SQL Server2016无域群集与高可用性AlwaysON配置新手教程

 

至此,所有步骤已经写完。剩下的就是恢复启用防火墙,

设置防火墙端口出入站规则。

放行默认SQL的1433端口,侦听器的1533端口,和镜像端点传输专用的5022端口等。

防火墙自行配制出入站端口规则,谢谢。

                                                                                                                  

 

 

相关标签: 绝对原创