05-Windows Server 2012 R2 会话远程桌面-标准部署-RD连接代理高可用性(RemoteApp)

马博峰

在之前的文章中,我们以快速的部署方式和标准部署的方式完成了RemoteApp的部署,如果在企业正式环境中需要部署基于会话的远程桌面,那么最好采用标准部署。在标准的部署中,有一个重要的功能角色服务,那就是RD连接代理,RD连接代理是负载平衡RD会话主机服务器场中的会话负载平衡和会话重连。还可使用 RD 连接代理并通过 RemoteApp 和桌面连接让用户访问RemoteApp程序和虚拟机,所以他在整体会话远程桌面中起到重要的作用,从部署架构中可以看到,RD连接代理处于中间的位置,起到连接前端和后端应用或者桌面的连接,所以,当RD连接代理出现故障时,整个会话远程就全部中断了,无法使用。

clip_image001

在我们要考虑增加安全性和可用性的同时,也要同时考虑其中的某些服务的高可用性,可以使用多台服务器或者虚拟机为RD连接代理进行服务,远程桌面连接代理(RD连接代理)支持负载平衡和会话重新连接到新的会话主机场, RD连接代理也用来提供用户通过RemoteApp和桌面的连接,如果启用了RD连接代理的均衡负载,则RD连接代理还会在每个RD会话主机或者RD会话场跟踪用户会话的数量。下图就是RD连接代理的高可用性设计图

clip_image002

Active/Active的RD连接代理模式是Windows Server 2012 R2是一个完整的高可用性部署,每个RD接代理服务器都是活跃的,提供共享负载。它提供了高可用性和高可用伸缩性,适合更大规模的部署。设置RD接代理服务高可用性需要SQL数据库的支持,SQL数据库用于存储RD连接代理服务器运行时的情况和配置数据,这种Active/Active的RD代理为管理员提供一个轻松部署高可用性和可伸缩性RD连接代理服务器的解决方案。

一、部署的前提条件:

1、 至少需要2台windows server 2012 R2安装RD连接代理服务。

2、 需要特定的数据库服务器或SQL数据库实例,SQL服务器版本为2008 R2标准版或更高版本。

3、 所有RD连接代理服务器都必须安装SQL客户端。

4、 RD代理服务器拥有完全权限的SQL数据库和SQL文件夹。

5、 至少需要一台会话主机服务器。

6、 确保网络中的防火墙没有阻拦服务器的通信。

设置RD连接代理高可用性至少需要4台服务器,其中1台为域控制器,并设置了DNS服务器,一台为SQL服务器,支持SQL server 2008 R2和SQL server 2012,剩下2台服务器中,其中有一台必须安装了RD连接代理,并且这些服务器都加入了域环境,以域管理员的身份进行登陆。  

服务器名称

操作系统

IP设置

功能

AD-DC.mabofeng.com

Windows Server 2012 R2

192.168.1.100

域控制器

RDCB01.mabofeng.com

Windows Server 2012 R2

192.168.1.110

远程桌面连接代理01

RDCB02.mabofeng.com

Windows Server 2012 R2

192.168.1.111

远程桌面连接代理02

SQL.mabofeng.com

Windows Server 2012 R2

192.168.1.120

数据库服务器


二、连接代理部署


1、首先将RD连接代理的服务器、SQL服务器和会话主机加入到域环境中,我们需要把所有的RDCB服务器要具备对SQL的完全控制权,那么我创建一个安全组RDCB computer,然后把所有的RDCB服务器添加进这个组当中,在Active Directory用户和计算机管理器中,右键选择User,在弹出的菜单中选择新建,选择组,在新建对象-组页面中,输入组的名称,并选择全局和安全组,最后点击确定。

clip_image004

建立好新建的对象组RDCB computer后,点击RDCB computer组的属性,在RDCB computer属性对话框中,选择成员一栏,点击添加将所有RDCB服务器加入进来,然后点击应用,最后点击确定。

clip_image005

接着把这个安全组添加到RDCBSQL的SQL安全性当中,在安装了SQL server 2008 R2或者是SQL Server 2012的数据库服务器中,打开Microsoft SQL Server Management Studio管理工具,在对象资源管理器中选择“安全性”,在展开的树状结构中右键选择登录名,在弹出的菜单中选择“新建登录名”在登录名-新建对话框中,点击搜索,将之前建立的用户安全组加入到登录名中。

clip_image007

接下来在左侧的选择页中选择服务器角色选项,设置服务器角色用于向用户授予服务器范围内的安全特权,这里默认会有选项public,这里要勾选dbcreator选项,然后点击确定。

clip_image009

点击确定后,就可以在Microsoft SQL Server Management Studio管理工具中,在展开的树状结构登录名中就可以看到我们之前添加的安全组。

clip_image011

成功将安全组加入到SQL数据库中后,在SQL server服务器中的任意位置建立一个文件夹,这里在SQL server服务器中的C盘下建立RDCB文件夹。

clip_image013

将建立的RDCB文件夹设置共享,允许RDCB代理服务器能否在此文件夹中具有读写的权限,所以将RDCB computer安全组加入到RDCB文件夹中,并赋予读写的权限。

clip_image015

接下来就是创建RDCB的DNS轮循,在域控制器服务器里的DNS管理器总,在正向查找区域中添加DNS,例如环境中有2台RD代理服务器,其中RDCB01的IP地址为192.168.1.110,RDCB02的IP地址为192.168.1.111,则需要建立2条DNS信息,分别建立名称为HARDCB的2条不同IP地址,其地址为RDCB01和RDCB02的数据地址。

clip_image017

接下来就是检查DNS管理器中是否开启了DNS循环,在DNS管理器中,右键单击AD-DC DNS名称,在弹出的菜单中选择属性,在AD-DC的属性页面中,选择高级,在高级页面中可以查看是否启用的循环,一般情况下,DNS循环是默认开启的,只需要进行确定检查即可。

clip_image019

在每台RD连接代理服务器中安装SQL native client,如果使用的数据库是SQL server 2008 R2,则需要下载SQL native client 10的版本,如果是SQL server 2012,则需要安装SQL Native client 11。

Microsoft SQL Server 2008 R2 Native Client下载地址为: http://www.microsoft.com/zh-cn/download/details.aspx?id=26728

Microsoft SQL Server 2012 Native Client下载地址为: http://www.microsoft.com/zh-cn/download/details.aspx?id=35580

clip_image020

将Microsoft SQL Server 2012 Native Client或者是Microsoft SQL Server 2008 R2 Native Client下载后进行安装,知道完成Microsoft SQL Server Native Client的安装完成。

clip_image021

当我们成功安装Microsoft SQL Server Native Client,我们需要连接到数据库中,在开始界面中,点击管理工具,在管理工具文件夹中选择ODBC数据管理程序(64位),在ODBC数据管理程序中选择系统DSN,然后选择添加,在创建新数据源页面中,选择SQL Server Native Client 11.0,点击完成。

clip_image023

在接下来的向导中,要求输入数据源的名称和服务器地址,然后按照默认的方式点击下一步,知道完成数据库的连接,在最后的ODBC Microsoft SQL Server安装界面中,选择测试数据源,之后会弹出SQL Server ODBC数据源测试界面,在这界面中会显示测试成功,如果不显示成功或者显示无法连接到数据库,则需要检查下Native Client所在的服务器是否与SQL Server能正常的进行通信,检查防火墙的设置,直到测试成功。

clip_image025

测试成功后,点击确定,在ODBC数据管理程序(64位)中显示已经连接到的数据库,当成功连接后,一定要重新启动服务器,之后进行RD连接代理服务器的高可用设置。

clip_image027

三、RD连接代理的高可用性设置

在完成之前一系列的所有工作后,接下来就进行RD连接代理的高可用性设置,首先我们以域管理员的形式登录到其中已经安装好的RD连接代理服务器中,在服务器管理器,远程桌面服务-概述中,查看部署概述,右键选择RD连接代理,在弹出的菜单中选择“配置高可用性”

clip_image029

在配置RD连接代理的高可用性向导中,完成RD连接代理的高可用性的配置,在开始页面中,显示了要完成配置工作前需要满足一些条件,包括Microsoft SQL server具有对所有RD连接代理服务器的写入权限,所有RD连接代理服务器上已经安装了Microsoft SQL Server Native Client,已为所有RD连接代理服务器分配了静态IP地址,已为具有单一DNS名称的所有RD连接代理服务器创建DNS记录,确保之前都完成了准备工作,然后点击下一步。

clip_image031

在配置RD连接代理的高可用性页面中,输入数据库连接字符串、存储数据库文件的文件夹路径和DNS轮循机制名称。由于使用不同版本的Microsoft SQL Server Native Client,所以在输入数据库连接字符串也有所不同。

如果使用的是SQL 2008 R2,则输入如下字符串:

DRIVER=SQL Server Native Client 10.0;SERVER=<SQLserver名称>;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;Database=<要建立数据库的名称>

如果使用的是SQL 2008 R2,则输入如下字符串:

DRIVER=SQL Server Native Client 11.0;SERVER=<SQLserver名称>;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;Database=<要建立数据库的名称>

在输入存储数据库文件的文件夹路径时,需要输入我们在数据库服务器上所建立的文件夹,最后我们输入在域控服务器中建立的DNS轮循机制名称,然后点击下一步。

clip_image033

在确认界面中,确认所设置的信息,然后点击配置。单击“配置”后,RD连接代理服务器的SQL数据库将被创建,所有的RD连接代理服务器从本地计算机上的数据将被迁移到RDCBSQL服务器的SQL上,然后在RD连接代理服务器将开始使用的SQL服务器。

clip_image035

在进度页面中,查看配置RD连接代理的高可用性进度,当成功完成后点击关闭,完成配置。

clip_image037

注意1:在此配置过程中,可能会遇到几种错误的情况,首先是在配置RD连接代理服务器的高可用性中报错,其报错内容为:

“配置RD连接代理服务器RDCB01.mabofeng.com中没有使用数据库连接字符串指定的数据库,请确保网络上的SQL服务器可用、RD连接代理服务器上安装了SQL server native client,并且RD连接代理具有对此数据库的写入权限。”

clip_image039

遇到这种情况后,检查一下内容:

1、 没有安装SQL server native client客户端

2、 防火墙阻断RD连接代理(端口1433)与SQL访问

3、 指定了不正确的SQL Server Native Client的版本

4、 不正确的SQL Server名称指定

5、 RD连接代理服务器是否在配置数据库连接后重启。

注意2:在此配置过程中,可能会遇到下面这种错误的情况,其错误提示为“无法创建数据库RDBC”,并在事件日志事件32776提高。这意味着,在SQL Server权限不够,遇到这种情况,检查一下3个方面:

1、 RD连接代理服务器有适当的SQL(数据库创建者)的权限。

2、 RD连接代理服务器在SQL数据库服务器上创建的文件夹是否有读写的权限。

3、 SQL服务器中是否有重名的数据库名称。

clip_image041

四、添加RD连接代理

当我们成功配额完成后,在服务器管理器中就可以看到RD连接代理已经设置成了高可用性的模式,这在部署RD连接代理高可用性算是第一步,显然,有一个RD连接代理服务器不使其具有高可用性。第二步则是添加一个额外的RD连接代理。相较于第1步,这是安装程序的最简单的部分。 我们用鼠标右键单击RD连接代理的部署概述并选择“添加RD连接代理服务器”,但是在添加之前,我们先看下之前建立的数据库RDBC。

clip_image043

我们到在SQL Server服务器上RDBC文件夹中创建的数据库。

clip_image045

我们使用Microsoft SQL Server Management Studio打开数据库进行查看。

clip_image047

设置到这里,我们发现这里并没有把RDCB02添加进来,所以我们需要在SQL server中添加安全组与这个数据库的关系吧,首先打开Microsoft SQL Server Management Studio,在“对资源管理中”选择安全性-登录名,右键选择我们之间添加的安全组,在弹出的菜单中选择属性。在登录属性的常规页面中,设置默认数据库为rdcb。

clip_image049

在登录属性的服务器角色页面中,通过添加一个用户映射到包含RD连接代理服务器,以便该组具有db_owner权限的组来完成。

clip_image051

然后我们进行添加第二台RD连接代理服务器,首先在服务器管理器中,将第二台添加RD连接代理服务器与第一台添加RD连接代理服务器共同进行管理,将台RD连接代理服务器添加到已选计算机框中后点击确定。

clip_image053

在第一台添加RD连接代理服务器的服务器管理器中,我们右键单击RD连接代理的部署概述并选择添加RD连接代理服务器。

clip_image055

在添加在配置RD连接代理服务器向导中,完成RD连接代理的添加配置,在开始页面中,显示了要完成配置工作前需要满足一些条件,点击下一步。

clip_image057

在选择服务器页面中,选择向部署中添加RD代理的服务器,然后点击下一步。

clip_image059

在确认页面中,将在服务器上安装RD连接代理角色服务,并将此服务添加到部署中,之后点击添加。

clip_image061

点击添加后,会在第二台服务器上安装RD连接代理服务。

clip_image063

clip_image065

注意:在设置过程中可能会出现下面的错误,通常这是SQL Server的权限问题。 回想一下,先决条件之一是,所有的RD连接代理数据库所需的权限在数据库。第一台RD连接代理只需要数据库创建者权限才能成为数据库的所有者。有关更多的RD连接代理,我们需要添加这些权限。

clip_image067

五、编辑RD连接代理属性

我们可以手动设置活动的RD连接代理服务器,在服务器管理器中,部署概述中点击任务,在弹出的菜单中选择设置活动的RD连接代理服务器。

clip_image069

在设置活动的RD连接代理服务器界面中,可以看到当前活动的RD连接代理服务器为RDCB01.mabofeng.com,可以切换到其他的RD连接代理服务器,如果将其他RD连接代理设置为活动,则会取消所有与粗部署相关的正在运行以及计划的任务。

clip_image071

除此之外,我们也可以更改RDCB高可用性的DNS别名,但是,如果要更改RDCB高可用性的DNS别名,则不可以在图形化的界面下进行更改,而是需要进行在PowerShell模式下进行更改。

clip_image073

clip_image075

如果要更改DNS轮循机制的名称,则需要使用PowerShell命令来进行更改,无法在GUI界面中进行更改,更改DNS轮循机制的名称的命令为:

Set-RDClientAccessName -ConnectionBroker <当前服务器名称> -ClientAccessName <新DNS名称>