部署RDS高可用架构
2020-05-20河南刘景云
■ 河南 刘景云
编者按:使用RDS(Remote Desktop Service,远程桌面服务)服务,可以让用户实现远程管理和控制。实际上,在Windows Server 2012中,RDS服务属于微软桌面虚拟化的基础技术,并由此实现了桌面虚拟化和应用程序虚拟化,对于一些企业来说,对远程桌面服务的使用有着严格的规范,所以就需要实现RDS的高可用性。
准备实验环境
在Windows Server 2012中,RDS服务是由RD Web访问、RD网关、RD授权、RD连接代理、RD虚拟化主机和RD会话主机等组件构成。利用RDS的高可用功能,即使某个环节出现问题,也可以保证RDS顺利为客户提供服务。在众多的RDS组件中,会话主机、连接代理和Web访问等组件是很常用的,对其实现高可用性就显得很有意义。
例如,在某企业中,在域环境中的DC服务器上配置了活动目录证书服务,为了便于管理数据,在后台配置了SQL Server 2012数据库服务器,将RdsServer1和RdsServer4服务器分别配置为会话主机,将RdsServer2和RdsServer4服务器分别配置为连接代理主机,将RdsServer3和RdsServer6服务器分别配置为Web访问主机,来构建RDS高可用框架结构。
配置高可用会话主机
首先在RdsServer1服务器上将RdsServer1、RdsServer2、RdsServer3、RdsServer4、RdsServer5和RdsServer6等所有服务器添加到一个服务器组中,之后分别在RdsServer1、RdsServer2、RdsServer3上安装会话主机,连接代理,RDWeb组件。并在会话主机上创建集合(例如名为“jihe”),发布相关的RemoteAPP程序。以下操作全部在RdsServer1上实现。
在其服务器管理器左侧选择“远程桌面服务”→“概述”项(如图1),在右侧的“部署概述”栏中的“RD会话主机”项的右键菜单上点击“添加RD会话主机服务器”项,在选择服务器窗口中选择RdsServer4主机,将其添加到“已选择”列表中。点击“下一步”按钮,选择“需要时重新启动远程计算机”项,点击“添加”按钮,在RdsServer4主机上安装RD会话主机角色服务。
选择“服务器管理器”→“远程桌面服务”→“集合”→“jihe”项,在右侧的“主机服务器”列表中点击菜单“任务”→“添加RD会话主机服务器”项,将RdsServer4主机添加进来。
注意:因为RdsServer1和RdsServer4主机共同为外界提供会话主机服务,所以不仅需要在RdsServer1上安装并发布程序,在RdsServer4主机上也必须安装和发布同样的RemoteAPP。这样,就实现了RD会话主机的高可用性。
图1 远程桌面拓扑结构
图2 集合属性窗口
当RdsServer1和RdsServer4主机其中任意一台主机出现问题的话,另外一台照样可以为外界用户提供服务。实际上,在上述集合管理窗口中的“属性”列表中点击“任务”→“编辑属性”项,在其属性窗口(如图2)左侧选择“负载平衡”项,在右侧显示会话主机的负载平衡信息,包括RD会话主机服务器,内存,相对权限,会话限制等内容。
在“相对权限”列中默认显示的值为100,即按照平均分配的方法,来处理连接请求。如果将某台主机的相对权重设置的比较大,那么其就会处理更多的连接任务。
对于会话主机高可用来说,之所以需要在概述RDS拓扑图中添加会话主机,又需要在集合中添加会话主机,原因在于对于某台会话主机来说,可能包含多个集合。
每个集合又包含不同的应用程序,不同的集合对应不同的应用类别。对于第一个步骤来说,是将RdsServer4添加到RDS高可用环境中,在其中安装会话主机服务。而第二个步骤主要是将其分配给某一个存在的集合。这样的话,可以提高RemoteAPP的管理效率。
配置高可用RD代理服务主机
对于RDS服务来说,RD连接代理可以将连接信息保存在后台数据库中。例如,在本例中的RDS高可用环境中,多台RD连接代理服务会共用同一个SQL Server数据库。因此,首先需要将RdsServer2和RdsServer5连接到后台数据库上。在其上分别安装SQL Native Client。
注意:其版本需要和SQL Server保持一致,该工具需要.Net FrameWork3.5组件的支持。
为了让连接顺利进行,需要为这些服务器配置访问权限。在域控上打开Active Directory用户和计算机窗口,在其中新建一个容器(例如“RDSOU”),在该容器中创建一个名为“RDproxy”的安全组,将RdsServer2和RdsServer5添加进来。当然,也需要将访问RDS服务的客户端域账户也添加到上述容器中。
在SQL Server 2012服务器上登录到Microsoft SQL Server Management Studio管理界面,在左侧选择“安全性”→“登录名”项,在其右键菜单上点击“新建登录名”项,在弹出窗口(如图3)中点击“搜索”按钮,在选择窗口中的“选择此对象类型”栏中选择“组”,在“查找位置”栏中选择“整个目录”项,之后查找并导入上述“RDproxy”组。
图3 建立所需的登录名
图4 配置RD连接代理向导界面
在左侧选择“服务器角色”项,在右侧的“服务器角色”列表中选择“dbcreator”与“sysadmin”项,确保在这些主机上可以执行创建数据库的权限。点击“确定”按钮,保存配置信息。配置完成 后,重 启RdsServer2和RdsServer5主机,目的是重新提交计算机账户密码,来获得连接SQL Server服务器和创建相关数据库的权限。因为计算机账户同样是一个账户,其账户名为计算机名,并拥有随机生成的密码。当然,该密码在默认状态下是无法直接查看的。
在服务器管理器中打开“远程桌面服务”→“概述”项,在“部署概述”栏中的“RD连接代理”项的右键菜单上点击“配置高可用性”。
在向导界面(如图4)中的“数据库连接字符串”栏中输入连接字符串,用来设定连接的路径,方式以及创建的数据库的名称等内容。例如,输入“DRIVER=SQL Server Native Client 11.0;Ser ver=sqlserver
=Remote Desktop Ser vices Connection Broke r;DATABASE=Proxydb”,其中的“11.0”为SQL Server Native Client的版本号,打开其安装路径,从目录名中即可显示其版本号。“sqlserver1”为 后 台SQL Server 2012服务器的名称,“Proxydb”为所创建的数据库名称。在“存储数据库文件的文件夹”栏中设置保存数据库文件的目录,该目录存在于SQL Server 2012服务器上。
因为RD代理服务高可用是基于DNS轮循机制运作的,所以需要在域控上打开DNS管理器,在左侧选择“正向查找区域”-“域名”项,在右侧新建两条A记录,其名称均相同,例 如“Rdproxyloop”,但是IP分别指向RdsServer2和RdsServer5主机的地址。
这样,就实现了DNS的轮循机制。在“DNS轮询机制名称”栏中输入“Rdproxyloop”,在下一步窗口中点击“配置”按钮,完成所需的配置操作。
然后,在“部署概述”栏中的“RD连接代理”图标下会显示“高可用性模式”字样,说明已经配置成功。在SQL Server 2012服务器上打开管理界面,执行刷新操作后,在“数据库”节点下显示已经创建的名为“Proxydb”的数据库。
选择“数据库”→“安全性”→“登录名”项,在其中选择上述“RDproxy”组。
在其属性窗口左侧选择“用户映射”项,在右侧的“映射到此登录名的用户”列表中选择“Proxydb”数据库。
在“数据库角色成员身份”列表中选择“db_owner”项,点击确定按钮保存配置,这样可以让RD代理服务主机可以正常的编辑数据库内容。
接下来需要将RdsServer5添加进来,在“部署概述”栏中的“RD连接代理”项的右键菜单上点击“添加RD连接代理服务器”项,在向导界面中的“服务器池”列表中选择RdsServer5主机,将其添加到“已选择”列表中。
之后点击“添加”按钮,完成所需的操作。
配置高可用RDWeb主机
为了保证访问的可靠性,就需要设置RDWeb的高可用性,这需要基于NLB负载均衡群集来实现。在“部署概述”栏中的“RD Web访问”项的右键菜单上点击“添加RD Web访问服务器”项,在向导界面中的“服务器池”列表中选择“RdsServer6”主机,将其添加进来。为了保证连接的安全性,就涉及到证书的配置和使用。
因为在RdsServer3上已经安装了RDWeb组件,所以在该机上打开IIS管理器,打开服务器证书管理窗口,点击“创建域证书”链接,按照上述方法申请证书。假设证书名为“RDWebZS”。之后将该证书绑定到默认的网站上。在客户端打开浏览器,输入“https://RdsServer3.xxx.com/rdweb”网址,可以顺利进行访问。
对于RdsServer6主机来说,同样需要配置证书,所不同的是不需要重新申请证书,而是需要和RdsServer3使用同一张证书。因为基于NLB群集的话,必须使用相同的域名进行访问,因此证书必须一致。在上述服务器证书管理窗口中选择“RDWebZS”证书项,在其右键菜单中选择“导出”项,在导出证书窗口中设置导出路径,例如名为“rdzs.pfx”。输入密码后,点击“确定”按钮将其导出。
在RdsServer6打开IIS管理器,打开服务器证书管理窗口,在右侧点击“导入”链接,在弹出窗口中选择上述文件,输入对应的密码,在“选择证书存储”列表中选择“Web宿主”项,点击确定按钮,完成导入操作。之后将该证书绑定到默认网站上。前面已经说道,RDWeb高可用性是基于NLB群集实现的。因此接下来需要配置NLB群集,在RdsServer3和RdsServer6上打开分别服务器管理器。点击“添加角色和功能”项,在向导界面中的功能列表中选择“网络负载平衡”项,点击“安装”按钮安装该组件。
因为NLB群集使用同一个域名,需要在域控上打开DNS管理器,在其中创建一条A记录,名称为“RDfw”,为其设置新的IP,例如192.168.1.60。在RdsServer3或RdsServer6上打开网络负载平衡管理器,在左侧的“网络负载平衡管理器”节点的右键菜单上点击“新建群集”项,在向导界面中的“主机”栏中输入本机IP,点击“连接”和“下一步”按钮,在“新群集:群集IP地址”窗口点击“添加”按钮,输入群集的地址,例如192.168.1.60。
在下一步窗口中选择群集操作模式,在端口规则窗口中的“端口范围”栏中设置端口范围从443到443,来实现SSL加密传输功能。点击完成按钮,等到本主机的状态从挂起变成聚合之后,在左侧的群集节点的右键菜单上点击“添加主机到群集”项,在向导界面输入另一台主机的IP,点击“连接”按钮,之后依次点击下一步按钮,将其加入群集即可。在客户端打开浏览器,输入“https://rdfw.xxx.com/rdweb”网址,可以顺利进行访问。