首页 > 数据库 >sqlserver 域独立可用性组

sqlserver 域独立可用性组

时间:2023-04-18 13:36:59浏览次数:49  
标签:副本 群集 创建 可用性 sqlserver 独立 DNS 节点


一、 历史版本及改进

传统可用性组要求所有服务器必须加入相同 Active Directory 域,加入不同的域、甚至加入受信任的域均不起作用,所有服务器必须都是相同 WSFC 的节点。下图显示了这一配置:

sqlserver 域独立可用性组_Server

Windows Server 2012 R2引入了与Active Directory分离的群集。它是WSFC的一种特殊形式,WSFC使用DNS而不使用域,但这种类型的WSFC仍要求节点加入到相同的域,因此仍无法提供与域完全无关的体验。

Windows Server 2016 引入了工作组群集。工作组群集允许基于无域的WSFC部署SQL Server 可用性组,SQL Server 要求使用证书以保证终结点安全性,此类型的可用性组称为域独立可用性组(domain-independent availability group)。 

 

二、 域独立可用性组架构

使用工作组群集部署可用性组支持以下WSFC节点的组合:

  • 没有任何节点加入到域
  • 所有节点都加入到不同的域
  • 节点混合,包括加域节点和未加域节点

下图显示了域独立可用性组的一个示例,其中数据中心1中的节点已加入域,但数据中心2中的节点则仅使用 DNS。此时需要为将加入WSFC的所有服务器设置 DNS 后缀。访问可用性组的每个应用程序和服务器必须看到相同的DNS信息。

sqlserver 域独立可用性组_结点_02

域独立可用性组不仅仅用于多站点或灾难恢复方案,还可在单个数据中心部署,甚至可与标准可用性组配合使用,提供类似数据库镜像实现的架构。

sqlserver 域独立可用性组_结点_03

 

三、 部署域独立可用性组

 

1. 注意事项

  • 所有节点操作系统不低于Windows Server 2016,数据库版本不低于2016
  • 所有节点必须安装故障转移群集功能
  • 需在各节点使用相同密码的相同本地用户创建集群,该用户需要是管理组成员,如果是非administrator用户还需额外修改注册表键值
  • 只能用于新建集群,或者加域服务器加入无域集群,不能用于无域服务器加入加域集群。
  • 可与仲裁配合使用的见证服务器类型只有磁盘和云,这是 Windows Server 2016 中的新增功能。磁盘可能会出现问题,因为可用性组很有可能不会使用共享磁盘。
  • 当可以配置侦听器时,必须先在 DNS 中注册侦听器然后才能使用。 Kerberos不支持侦听器。
  • 连接到 SQL Server 的应用程序应主要使用 SQL Server 身份验证,因为域可能不存在或未配置为协同工作。
  • 在配置可用性组时将使用证书(同无域ag)。

 

2. 创建WSFC

以下创建过程来自 https://blog.51cto.com/wzde2012/1972859 

实战环境

DC01&iscsi      oa.com
lan:10.0.0.2 255.0.0.0
iscsi:30.0.0.2 255.0.0.0

DC02               tw.oa.com
lan:10.0.0.3 255.0.0.0

HV01
MGMET:10.0.0.9 255.0.0.0 DNS 10.0.0.2
ISCSI:30.0.0.9 255.0.0.0
CLUS:18.0.0.9 255.0.0.0

HV02
MGMET:10.0.0.10 255.0.0.0 DNS 10.0.0.3
ISCSI:30.0.0.10 255.0.0.0
CLUS:18.0.0.10 255.0.0.0

当前HV01属于oa.com域

sqlserver 域独立可用性组_Server_04

HV02属于tw.oa.com子域

sqlserver 域独立可用性组_DNS_05

在各节点创建相同密码的本地用户

sqlserver 域独立可用性组_结点_06

 

添加用户至各节点本地管理员组

sqlserver 域独立可用性组_Server_07

配置用户密码为永不过期

sqlserver 域独立可用性组_DNS_08

如果不使用节点本地内置的administrator用户创建群集,那么还需要修改各节点注册表

HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

新增DWORD键值LocalAccountTokenFilterPolicy,值为1

sqlserver 域独立可用性组_DNS_09

为各同林多域节点 DNS访问网卡,增加所有域的DNS后缀

 

sqlserver 域独立可用性组_结点_10

修改完成后重启,使用cluadmin用户登录,添加各节点群集功能角色,连接ISCSI存储

sqlserver 域独立可用性组_Server_11

 

sqlserver 域独立可用性组_DNS_12

GUI创建方式和工作组群集相同,这里我们使用Powershell创建

#创建多域群集

New-Cluster -Name MLDcluster -StaticAddress 10.0.0.40 -Node HV01,HV02 -AdministrativeAccessPoint DNS

sqlserver 域独立可用性组_Server_13

创建完成,并未提示报错

sqlserver 域独立可用性组_结点_14

 

打开故障转移群集管理器发现已经可以正常打开群集,且自动帮助我们配置了磁盘见证

sqlserver 域独立可用性组_结点_15

下一步可以尝试基于多域模型群集部署上层应用!

 

3. 创建域独立可用性组

尽管创建域独立可用性组与创建常规可用性组基本相同,但某些方面(如创建证书)只有使用 Transact-SQL 才能实现。 

以下示例假定具有两个副本的可用性组配置:一个主要副本和一个次要副本。

  • 将加入可用性组的每个实例上启用 AlwaysOn 可用性组功能,这需要重新启动每个SQL Server 实例。
  • 托管主副本的实例需要有数据库主密钥。如果主密钥不存在,运行以下命令:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Strong Password';
  • 在主副本实例上,创建将用于次要副本上的入站连接和用于保护主副本上的终结点的证书。
CREATE CERTIFICATE InstanceA_Cert WITH SUBJECT = 'InstanceA Certificate';
  • 备份该证书。 如有必要,还可以使用私钥提供进一步保护,此示例不使用私钥。
BACKUP CERTIFICATE InstanceA_Cert TO FILE = 'Backup_path\InstanceA_Cert.cer';
  • 重复步骤上两步命令,创建和备份每个次要副本的证书,并适当调整证书名称,如 InstanceB_Cert。
  • 在主副本上,必须为可用性组的每个次要副本创建登录名。 此登录名将被授予权限以连接到域独立可用性组使用的终结点。 例如,对于名为 InstanceB 的副本:
CREATE LOGIN InstanceB_Login WITH PASSWORD = 'Strong Password';
  • 在每个次要副本上,为主要副本创建登录名。此登录名将被授予权限以连接到终结点。
CREATE LOGIN InstanceA_Login WITH PASSWORD = 'Strong Password';
  • 在所有实例上,为创建的每个登录名创建一个用户,在还原证书时会使用此用户。 
CREATE USER InstanceA_User FOR LOGIN InstanceA_Login;
  • 在所有相关次要副本上创建登录名和用户。
  • 在每个实例上,为创建了登录名和用户的其他实例还原证书。 在主要副本上,还原所有次要副本证书。 在每个次要副本上,还原主要副本的证书。
CREATE CERTIFICATE [InstanceB_Cert]
AUTHORIZATION InstanceB_User
FROM FILE = 'Restore_path\InstanceB_Cert.cer'
  • 在各实例上使用的终结点。
CREATE ENDPOINT DIAG_EP
STATE = STARTED
AS TCP (   
 LISTENER_PORT = 5022,
 LISTENER_IP = ALL
      )
FOR DATABASE_MIRRORING (
 AUTHENTICATION = CERTIFICATE InstanceX_Cert,
 ROLE = ALL
      )
  • 为创建的每个用户分配权限,使其能够连接到终结点。
GRANT CONNECT ON ENDPOINT::DIAG_EP TO [InstanceX_User];
  • 配置基础证书和终结点安全性后,使用你喜欢的方法创建可用性组。
  • 创建侦听器时,请确保在 DNS 中注册其名称和 IP 地址。

 

参考

https://blog.51cto.com/wzde2012/1972859

https://blog.51cto.com/wzde2012/1968946

https://docs.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/domain-independent-availability-groups?view=sql-server-ver15

标签:副本,群集,创建,可用性,sqlserver,独立,DNS,节点
From: https://blog.51cto.com/u_13631369/6203175

相关文章

  • sqlserver 从等待状态判断系统资源瓶颈
    一、相关视图2005、2008提供了以下三个视图供获取连接详细信息:DMV用处参考Sys.dm_exec_requests返回有关在SQLServer中执行的每个请求的信息,包括当前的等待状态sys.dm_exec_requests(Transact-SQL)-SQLServer|MicrosoftLearnSys.dm_exec_sessions对于每个通过身份验证的会......
  • sqlserver 分布式可用性组(一)—— 概要
    一、分布式可用性组简介分布式可用性组(DistributedAvailabilityGroup)是SQLServer2016中的新功能,它可跨两个单独的可用性组。两个可用性组无需处于同一位置:它们可以跨物理机、虚拟机;跨内网、云上;跨有域、无域;甚至跨平台(如Linux、Windows)。只要两个可用性组可以进行通信,就可以......
  • sqlserver 移动用户及系统数据库文件位置方法
    查了下文档即使到2019版本,sqlserver移动数据库文件位置依然是要停机的,注意待移动文件大小,估计好停机时间。 sqlserver 移动数据库文件位置分为两大类:用户数据库系统数据库系统数据库又可分为再分为:除master及resource以外的系统数据库(model,msdb,tempdb)master数据库resource数据库......
  • SqlServer 从执行计划缓存发现问题sql
    注意以下sql都较复杂,在数据库中执行时间可能较长,不要执行过于频繁。一、隐式转换sql版本1--找到含有隐式转换且会导致indexseek变为indexscan的语句–findalltheplansandquerywhicharebeingcomparedwithwrongdatatypeinqueriesandthuscasuingtheconversio......
  • 查询sqlserver列名,行数及表说明
    查询sqlserver表名,行数及表说明SELECTD.NAMETABLE_NAME,B.ROWSTABLE_ROWS,F.VALUETABLE_COMMENTFROMSYSOBJECTSDLEFTJOINSYS.EXTENDED_PROPERTIESFOND.ID=F.MAJOR_IDANDF.MINOR_ID=0LEFTJOINSYSINDEXESBOND.ID=B.IDANDB......
  • sqlserver 如何查看备份还原进度及历史备份信息
    有时需要给业务方备份还原数据库,如果库比较大,可能时不时会被问“怎么样啦?”,“还剩多少哇?”,如果看不到监控备份还原的进度就很悲催,答不上来...SQLServer主要有三种方法备份还原进度:利用SSMS备份还原,查看进度条(还原的不准)利用SQL的stats关键字指定每完成百分之几显示利用动态性能视......
  • 如何利用sqlserver重置Administrator用户密码
    原文是sqlserver2005的,测试windows2016+sqlserver2017时此功能已经不可用,不过还是记录下重置方法。原理是通过sqlserver的OLE选项创建一个用户并将其添加至Administrator组,随后便可用该用户登录服务器修改administrator用户密码。OLE相当于给你一个cmd环境,让你可以输入cmd命令......
  • sqlserver 数据库状态转换图
    今天发现一个很好的图,非常清晰的展示了sqlserver的各种状态及切换原因/方法。简单介绍一下各种状态:ONLINE(在线):数据库正常运行。只有数据库成功恢复后会进入这个状态,也只有这种状态数据库是正常可用的。RESTORING(正在还原):正在执行数据库还原。如果还原时使用NORECOVERY模式,数据库会......
  • 【原创】SQLSERVER 通过 newsequentialid() 获取有序Guid 的注意事项
    SQLSERVER2005版本开始,支持获取有序Guid,函数为:newsequentialid(),使用该函数注意事项:1、表存在对应类型:uniqueidentifier,可以设置default 为:newsequentialid() 来自动生成有序Guid2、字段类型为:uniqueidentifier时,值只能是36位有效格式的字符串,不能为其他格式或空的字符串,而......
  • 安装SQLServer20xx 提示:需要安装oracle JRE7 更新 51(64位)或更高版本2种解决办法
    这个报错我们有2种方式可以解决,一个是安装提示所说的JRE7,另外一种比较简单,就是不勾选相关功能就不会要求安装JRE了;一、安装OracleJRE7解决方法:先进下面这个网站安装JDK,安装好后配置环境变量,然后重新安装SQLServer2016即可http://www.oracle.com/technetwork/java/javase/do......