首页 > 代码库 > 在权限受限制的AD域环境中部署SQL Server AlwaysOn高可用性

在权限受限制的AD域环境中部署SQL Server AlwaysOn高可用性

最近在给一个客户部署基于微软TFS的软件生命周期管理平台时,客户要求数据库层实现高可用性,减少因数据库服务器故障影响软件开发进展。

客户现有域是一台搭建在Windows Server 2008上的级别为Windows 2008的企业域。为了符合客户企业域的安全规定,需要在部署数据库高可用性期间使用最低权限,即只赋予操作账户(tfsadmin)在AD目录中用于ALM的组织单元的完全权限。在综合考虑和调用的基础上,我们提出了以下方案,并附上了操作说明。

方案:

1. 在AD域中为ALM创建用于保存计算机和用户的组织单位,并为tfsadmin用户指派这个组织单位的完全控制权限,如下图。

image

图一:AD域中用于ALM的组织单元

 

image

图二:tfsadmin用户对改组织单元具备完全控制的权限

 

2. 提前在AD域中为客户端和服务器在AD域的ALM组织单元中创建计算机对象。如图一中所示,ALM中的所有客户端和服务器计算机对象,都保存在制定的OU中。

 

操作指南:

操作指南中的关键点:

1. 使用操作账户domain\tfsamdin创建好故障转移群集(FC01)后,需要将计算机账户FC01$设置为数据库集群计算机所在OU的“创建/删除计算机对象”的权限

在创建数据库AlwaysOn的侦听器过程中,需要在OU中创建一个虚拟的计算机账户,创建过程使用的操作账户实际上是故障转移的计算机账户(FC01$),如果此账户对群集计算机对象所在的OU没有创建计算机的权限,则会出现创建侦听器失败的错误。

(可以通过查看AD控制器上的Event ID为4741的安全日志,得知故障转移计算机账户创建了侦听器计算机账户,如下表)

已创建计算机帐户。

主题:  安全 ID:  TEST\fc01$  帐户名:  fc01$  帐户域:  TEST  登录 ID:  0x13b9ca

新计算机帐户:   安全 ID:  TEST\agroup03$  帐户名:  agroup03$  帐户域:  TEST

属性:  SAM 帐户名: agroup03$  显示名:  -  用户主体名称: -  主目录:  -  主驱动器: -  脚本路径: -  配置文件路径: -  用户工作站: -  上次设置的密码: <从不>  帐户过期: <从不>  主要组 ID: 515  允许委派给: -  旧 UAC 值: 0x0  新 UAC 值: 0x80  用户帐户控制:    ‘工作站信任帐户‘ - 已启用  用户参数: -  SID 历史: -  登录时间(以小时计): <未设置值>  DNS 主机名: -  服务主体名称: -

附加信息:  特权  -

2. 下面的所有操作都使用domain\tfsadmin账户

3. 数据引擎的服务账户必须使用域账户(例如domain\sqlservice)

 

具体操作:

1. 在AD域中创建组织单元结构(图一),并配置domain\tfsadmin对ALM节点具备完全控制权限(图二)

 

2. 将数据库服务器的所有节点加入到域环境,将domain\tfsadmin账户加入到数据库服务器的本地管理员组中,并设置为数据服务器的管理员角色

( 如果需要将客户端计算机加入到指定OU中,可以使用命令行NETDOM JOIN %computername% /Domain:”OU=ALMCompuers, OU=ALM, DC=test, DC=local” )

3. 在节点一服务器上创建故障转移群集,并使用文件夹共享的方式配置仲裁

image

图三 - 创建好的故障转移群集

 

4. 在所有数据库服务器上启用AlwaysOn

image

图四 – 启用AlwaysOn

 

5. 在数据库的主节点上创建测试数据库(testdb),并对此数据库做完整备份,同时共享备份目录

 

6. 创建数据库服务器的高可用性组,在创建高可用性组的过程中,创建侦听器。

image

图五 – SQL Server AlwaysOn的侦听器

image

图六 - 与侦听器对应的虚拟机对象

image

图七 - 创建高可用性过程中自动注册的DNS记录