SQL Server域Alwayson 部署

素颜马尾好姑娘i 2023-01-23 09:57 127阅读 0赞
  1. 引言

基于windows2012 server和sql server2012的域控的设置方法在很多场景已经使用,不仅需要windows的域部署,故障转移部署,以及sql server的域部署以及仲裁机等操作,使用起来非常麻烦,现在sql server2016来了,听说sql server2017可以在linux上部署AG,又是一个降低运营成本的好消息,这边先以sql server2016为例,详细讲述下如何部署实施。

  1. 操作步骤

2.1 Windows 2016 无域故障转移群集部署方法

故障转移群集是一个很实用的功能,而windows在2016版本开始,终于支持不用域做故障转?????.?在群集中,我们可以设定一个”群集IP”而客户端只需要根据这个”群集IP”就能连接当前群集的主服务器.而不必关心群集服务器之间的替换.而更棒的是,它是”去中心”的,它没有一个中心主机,我们都知道”有中心”的集群,如果”中心”出了问题,那么整个集群都无法运行了.而故?????????,????????????,????????????(??????????????,????????????,??????).?

演示环境

这边使用vwware16搭建windows2016 Datacenter环境,使用仅主机模式,并且在vwware的编辑的虚拟网络编辑器里设置了网段和掩码,如下图:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 1

演示环境

1. 通用配置
























Key

Value

系统版本

Win2016

集群IP

192.168.3.2

网段

255.255.255.0

网关

192.168.3.1

  1. 设备配置























设备编号

IP地址

域名

1

192.168.3.8

d1.net

2

192.168.3.11

d2.net

IP以及名称规划:

节点1(物理服务器或虚拟机):d1 IP地址:192.168.3.8

节点2(物理服务器或虚拟机):d2 IP地址:192.168.3.11

Windows群集名称:CLUSTER.net IP地址:192.168.3.15(虚拟IP)

可用性组名称:SQLAG

SQL侦听器名称:listen IP地址:192.168.3.18(虚拟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. 即:

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

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

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 2

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 3

第三步:在每个节点上都添加一个用户(我增加的用户名称是DCAdmin),且用户名以及密???????????????????????????????????????2???????????????????????????

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 4

第四步:在每个节点的 hosts 文件中添加每个节点的服务器IP地址和名称、群集IP地址和???????????IP???????????????????????

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

hosts文件可以用记事本打开

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 5

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 6

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

我这边使用的dns解析来解决,首先需要安装dns

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 7

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 8

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 9

  1. 所有主机配置DNS解析记录 并测试解析

    1. 新建正向查找区域NET

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 10

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 11

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 12

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 13

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 14

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 15

  1. 新建反向查找区域

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 16

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 17

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 7

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 18

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 19

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 20

结果就像这样的:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 21

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 22

  1. 新建反向查找记录 (我们新建正向记录勾选了PTR指针 默认已经新建了B/C主机的反向记录) 现在只需新建一条本机的PTR记录

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 23

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 24

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 25

  1. 测试解析

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 26

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 27

无域的服务器都要配置dns服务器,可以使用host但是我觉得网络配置使用静态表实在太low,毕竟不是开发做做switchhost的换同根同域环境。

A主机配置故障转移群集 B/C主机连接到群集 指定虚拟IP192.168.3.15

    1. 主机A创建集群CLUSTER

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 28

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 29

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 30

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 22

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 31

这边填之前的说好的192.168.3.15

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 32

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 33

这样各个节点已经连接了。

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 34

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 35

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 36

二:配置SQL Server AlwaysOn

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

1 ,这里配置AlwaysOn,我采用的是共享文件夹的方式,所以首先在DB1这个节点上创建一个?????????????????????????????????????????DCAdmin??????DB2???????????????????

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 37

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 38

  1. 在DB1和DB2上设置启用AlwaysOn

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 39

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

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 23

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

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

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

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

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

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

USE master;

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘JFAlwaysOnShare2016’ ——密码

GO

CREATE CERTIFICATE Cert_DB01

WITH SUBJECT = ‘Cert_DB01’,

START_DATE = ‘2021-04-01’,EXPIRY_DATE = ‘2029-12-31’ —证书的有效时间

GO

-—-导出证书,将证书放在共享文件夹里面

BACKUP CERTIFICATE Cert_DB01

TO FILE = ‘\\D1\SQLAlwaysOn\Cert_DB01.cer’

GO

-—创建端点

CREATE ENDPOINT [SQLAG_Endpoint]

AUTHORIZATION [WIN-DR6UKA2RJDA\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 = ‘2021-04-01’,EXPIRY_DATE = ‘2029-12-31’;

GO

BACKUP CERTIFICATE Cert_DB02

TO FILE = ‘\\D2\SQlAlwayon\Cert_DB02.cer’;

GO

CREATE ENDPOINT [SQLAG_Endpoint]

AUTHORIZATION [WIN-93HCUQ47RJN\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

上面两部做不了就手动安装,原因是sql server没有读证书权限增加进去

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 40

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

这个最好把db2设置为sa模式,然后用db1的机器尝试连接下,保证可用性配置的1433是联通的

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 41

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 6

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 42

这里是选择数据库,记住一定要全量备份下,但是db2不用新增同样数据库

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 43

这边服务器名用d2,并且自动故障转移选择勾上并且同步为是

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 44

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 45

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 46

这边一点要有个共享文件夹,上次放证书的那个,不通的话后面验证不通过

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 47

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 25

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 3

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 48

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 49

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 50

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29yaWNoaXNvbmlj_size_16_color_FFFFFF_t_70 51

参考自:

配置SQL Server2016无域AlwaysOn

https://blog.csdn.net/roven257/article/details/78691892?ops_request_misc=&request_id=&biz_id=102&utm_term=sql%20server%20alwayson&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-78691892.first_rank_v2_pc_rank_v29

SQL Server 2017 Always On AG on Linux(二)SQL Server 证书及权限配置

https://blog.csdn.net/kk185800961/article/details/89483724

Linux 上配置 AG

https://www.cnblogs.com/guarderming/p/10570484.html

AlwaysOn添加新可用性副本

https://www.it610.com/article/1281403096454414336.htm

WINDOWS2016故障转移群集

https://blog.csdn.net/weixin_42256332/article/details/89151749

SQL SERVER非域环境搭建镜像

https://www.cnblogs.com/cmt/p/14580194.html?from=https%3A%2F%2Fwww.cnblogs.com%2FFly446854715%2Fp%2F4173345.html&blogId=198684&postId=4173345

VMware虚拟机的三种网络连接方式以及主机向虚拟机发送文件的实现

https://blog.csdn.net/weixin_39490421/article/details/79518927

Windows 2016 无域故障转移群集部署方法 超详细图文教程

https://blog.csdn.net/demonson/article/details/81708809

SQLServer2008端口及防火墙设置

https://www.cnblogs.com/pipci/p/7850892.html

(WSFC) resource control API returned error code 5057 & Microsoft SQL Server, Error: 41009

https://blog.csdn.net/burgess_liu/article/details/16855267

连接到 Always On 可用性组侦听器

https://docs.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/listeners-client-connectivity-application-failover?view=sql-server-ver15

发表评论

表情:
评论列表 (有 0 条评论,127人围观)

还没有评论,来说两句吧...

相关阅读