Oracle Virtual Desktop Infrastructure (VDI) 提供对数据中心中托管的虚拟化桌面的访问权限。Oracle VDI 可以通过以下操作提供完整的桌面置备和传送服务:
创建、运行和存储虚拟机。
验证用户并将其连接到虚拟化桌面。
启用客户端设备以显示虚拟化桌面。
Oracle VDI 系统的四个要素是虚拟化、存储、管理和桌面访问,如图 2.1 “Oracle VDI 体系结构”中所示。
以下部分介绍这些要素。
虚拟化是 Oracle VDI 的基础,因为它提供创建和管理桌面的功能。桌面是在虚拟化平台上运行的操作系统的实例。在 Oracle VDI 中,虚拟化平台被配置为桌面提供者。配置桌面提供者时,您要指定以下内容:
提供者类型:这是用于虚拟化桌面的平台。
提供者主机:实际运行桌面及其相关存储的服务器。
Oracle VDI 支持多种桌面提供者,这些类型可以分为以下类别:
基于虚拟机管理程序 (Hypervisor) 的提供者:这些提供者可提供对桌面的访问权限,这些桌面是裸机虚拟机管理程序(例如 VMware ESX 服务器)或托管虚拟机管理程序(例如 Oracle VM VirtualBox)托管的虚拟机。
基于会话的提供者:这些提供者可提供对远程计算机(例如 Microsoft 远程桌面服务 [RDS])托管的桌面会话的访问权限。
为桌面提供者配置的提供者主机与 Oracle VDI 分别安装,并在各自的平台上运行。提供者主机为正在运行的桌面(例如 CPU 和内存)提供物理资源以及管理桌面的方法。提供者主机使用的存储会在第 2.1.2 节 “关于存储”中进行讨论。
Oracle VDI 不会将您限制在一个虚拟化平台中。您可以使用多种桌面提供者类型,并根据需要创建任意多个桌面提供者。Oracle VDI 与桌面提供者进行交互的方式取决于提供者类型,将在以下部分中进行更详细的介绍。
以下是可用的基于虚拟机管理程序 (Hypervisor) 的桌面提供者:
Oracle VDI
Microsoft Hyper-V
VMware vCenter
Oracle VDI 桌面提供者使用 Oracle VM VirtualBox 作为虚拟化平台,Oracle VM VirtualBox 软件通过 Oracle VDI 分布。与其他桌面提供者不同,Oracle VM VirtualBox 支持您运行 UNIX 和 Linux 平台桌面以及 Windows 桌面。Oracle VM VirtualBox 还拥有自己的远程桌面协议 (Remote Desktop Protocol, RDP) 集成服务器,可支持您连接到并控制远程虚拟机,就像该虚拟机正在本地运行一样。
通过 Oracle VDI 和 Microsoft Hyper-V 桌面提供者,Oracle VDI 可直接管理提供者主机。Oracle VDI 会发送请求以通过提供者主机(包括虚拟机的配置信息)注册桌面,并发送请求以管理这些桌面(例如启动、停止和保留桌面的状态)。对于 Oracle VDI 提供者,Oracle VDI 使用 Oracle VM VirtualBox Web 服务应用编程接口 (Application Programming Interface, API) 来与提供者主机通信。对于 Microsoft Hyper-V 提供者,则使用 Windows 远程管理 (Windows Remote Management, WinRM)。Oracle VDI 与提供者主机之间的通信通过安全的超文本传输协议 (Hypertext Transfer Protocol, HTTPS) 连接进行。对这些桌面提供者可以拥有的主机数量没有限制,为了确保最佳性能,Oracle VDI 会在可用主机之间平衡桌面负荷。
当您配置 VMware vCenter 桌面提供者时,您要指定 VMware vCenter 服务器,而不是单个提供者主机,因为提供者主机由 VMware 基础结构管理。Oracle VDI 会向 vCenter 服务器发送桌面请求,vCenter 服务器会将该请求发送至组中的 vSphere 服务器。Oracle VDI 使用 VMware 基础结构 SDK Web 服务 API 与 vCenter 服务器通信,该通信通过 HTTPS 进行。虽然 VMware 基础结构负责所有桌面操作,但 Oracle VDI 能够监视负荷并选择创建桌面时要使用的特定数据存储库。
以下是可用的基于会话的桌面提供者:
Microsoft Remote Desktop
Sun Ray Kiosk
通用
Microsoft 远程桌面提供者不提供单个桌面,而 Oracle VDI 会将用户连接到在 RDS 服务器上创建的桌面会话。提供者主机可以是单个独立 RDS 服务器,也可以是 RDS 群中的一组服务器。RDS 服务器或群负责为用户创建新的 RDS 桌面会话,或负责将用户重新连接到其现有桌面会话(如果已配置会话代理),还负责平衡会话负荷。或者,您还可以配置 RDS 服务器,以便 Oracle VDI 可以在 Oracle VDI 管理工具中显示会话、CPU 和内存负荷信息。
Sun Ray Kiosk 桌面提供者可提供对 Oracle VDI 自身不支持的会话类型的访问权限,例如使用其他代理(例如 Sun Ray VMware View 连接器)连接到远程桌面,或在锁定的 Web 浏览器中提供对基于 Web 的应用程序的访问权限。
通用桌面提供者在物理计算机或虚拟机上运行 RDS 桌面会话。通常,Oracle VDI 使用通用提供者将用户连接到现有 Windows PC,通用提供者被用作将桌面迁移至 Oracle VDI 解决方案的策略的一部分。
存储与虚拟化密切相关,因为桌面提供者通常需要某个位置来创建和存储桌面所用的虚拟磁盘。虚拟磁盘所用的格式是虚拟化平台支持的本机格式。存储要求以及存储管理方式取决于桌面提供者类型。
Oracle VDI 和 Microsoft Hyper-V 桌面提供者需要存储。Oracle VDI 在 Sun Unified Storage System 或 Oracle Solaris 主机上支持泽字节文件系统 (Zettabyte File System, ZFS) 存储池,Oracle VDI 直接管理所需的存储。
VMware vCenter 桌面提供者也需要存储,但该存储由 VMware 基础结构而不是 Oracle VDI 管理。但是,Oracle VDI 能够向 vCenter 查询是否有可用存储,并且可以选择创建虚拟磁盘时要使用的数据存储库。
对于所有其他桌面提供者,存储独立于 Oracle VDI 进行管理。
为了提供高可用性,可以将桌面提供者配置为使用多台存储服务器。通过 Sun Unified Storage System,您还可以创建存储群集,以便为存储服务器的硬件组件提供冗余。
为了提供最佳性能和平衡负荷,Oracle VDI 会根据可用空间和当前工作负荷选择要克隆的存储服务器和主机虚拟磁盘。虚拟磁盘创建后,它会一直留在存储服务器上,直到被删除。
为了创建桌面所需的虚拟磁盘,Oracle VDI 需要对存储服务器的 SSH 超级用户权限。在 Sun Unified Storage System 上,Sun Unified Storage 命令行用于克隆虚拟磁盘并将其存储在 ZFS 池中。在 Oracle Solaris 主机上,ZFS 命令用于执行这些任务。每个虚拟磁盘都被配置为存储服务器上的 iSCSI 目标。
用户请求桌面时,Oracle VDI 会通过桌面提供者主机注册虚拟机,这包括虚拟磁盘的 iSCSI 目标地址。桌面提供者启动桌面后,iSCSI 用于将桌面连接到其虚拟磁盘,如图 2.2 “存储和 Oracle VDI”中所示。这样,虚拟机便可以访问虚拟磁盘,就像它位于本地文件系统中一样。
管理员可以为存储服务器启用维护模式。在此模式中,存储服务器被禁用,所有正在运行的桌面都会关闭或暂停。启用此模式后,即可对存储服务器进行维护。在复制和替换存储服务器时(例如为了替换硬件),此模式也很有用。
管理元素是 Oracle VDI 的主要部分。此元素可提供生成大规模虚拟机部署以及为用户提供其桌面访问权限所需的所有功能。它包含以下组件:
VDI 服务
Oracle VDI 中心代理
Oracle VDI Web 服务器
MySQL 数据库
RDP 代理程序
Sun Ray 软件
RDP 代理程序和 Sun Ray 软件 组件为用户提供访问其桌面的方法,这些内容会在第 2.1.4 节 “关于桌面访问”中进行讨论。以下部分介绍其他组件的用途。
VDI 服务是 Oracle VDI 的最重要组件。它用于创建和管理桌面提供者与桌面,以及验证用户和向其分配桌面。VDI 服务部署为 Common Agent Container (Cacao) 中的 vda 模块,Cacao 是用于运行 Java 管理应用程序的系统守护进程。VDI 服务有时被称为 VDA 服务。
通过 Oracle VDI,桌面被整理到 池中。池是特定桌面提供者类型托管的一组桌面。可以将各个桌面导入到池中,也可以将一个桌面作为 模板导入,然后克隆该模板以创建所需数量的桌面。池还可以用于将一组配置设置应用到池中的所有桌面,例如来指定放置桌面的子网或控制虚拟机所用的资源。
池中的桌面属于以下类型之一:
个人:这些桌面被分配给各位用户并归其所有,直到桌面被管理员删除或分配给其他用户。
灵活:这些桌面被临时分配给各位用户。用户注销或桌面不再处于使用状态后,该桌面会被回收以便可以分配给其他用户或被删除。
可以通过以下操作将 VDI 服务配置为管理桌面的完整生命周期:
创建虚拟机
启动虚拟机
将桌面分配给用户
监视桌面的使用情况和虚拟机的状态
回收桌面
关闭虚拟机
删除虚拟机
Oracle VDI 可以利用外部用户目录中存储的数据来验证用户和向其分配桌面。这使您可以向组织内的现有用户和组分配单个桌面或池。VDI 服务支持 Active Directory 和 LDAP 类型的目录可以配置多个目录,这使您可以从单个 Oracle VDI 部署向多个公司提供桌面,或与拥有复杂 Active Directory 结构(例如包含多个域的多个“树林“)的公司集成。还可以使用智能卡(Oracle VDI 称之为令牌)向用户分配桌面。令牌和用户目录可以同时使用,也可以单独使用。
Oracle VDI 有两个配置和管理 VDI 服务的工具:
Oracle VDI Manager:这是基于 Web 的图形应用程序。
vda 命令:这是一个包含一系列子命令的命令行工具,用于管理桌面提供者和池等各个区域。
VDI 服务本身只能从命令行使用 vda-service 命令启动和停止。
Oracle VDI 中心代理作为 Common Agent Container (Cacao) 中的 vda.center.agent 模块进行部署。它使 Oracle VDI 可以进行扩展,以支持更多用户和提供可靠且高可用性的服务。
Oracle VDI 主机可以连接到一起形成一个 Oracle VDI 中心。配置的第一台主机可形成 Oracle VDI 中心,此主机被称为主要主机。其他主机可以作为辅助主机配置并添加到 Oracle VDI 中心中。Oracle VDI 中心代理可确保 Oracle VDI 中心中主机之间的安全通信,并负责在各主机间协调关于 Oracle VDI 中心的信息。
包含多台主机的 Oracle VDI 中心能够提供可靠服务,因为桌面会话可以在主机间进行分布。如果一台主机发生故障,另一台主机会继续托管桌面会话,只会对用户造成极小的中断。 如果主要主机不可用,Oracle VDI 中心代理会自动将一台辅助主机提升成为新的主要主机,并将这些变化通知 Oracle VDI 中心中的其他主机。这叫做故障转移。
Oracle VDI 需要 MySQL 数据库才能存储配置和运行时信息。您配置 Oracle VDI 中心时,可以选择使用 Oracle VDI 软件随附的嵌入式 MySQL Server 数据库,也可以使用自己的 MySQL 数据库。
如果您使用嵌入式 MySQL 数据库,则 Oracle VDI 中心中的主要主机运行 Oracle VDI 主数据库。为了提供高可用性,Oracle VDI 中心中的辅助主机会运行从主要主机接收复制更新的从数据库。如果主要主机不可用,Oracle VDI 中心代理会自动将辅助主机提升成为主要主机,其数据库成为主数据库。如果您使用自己的 MySQL 数据库,您必须调整自己的置备,以获得高可用性。
数据库中存储的配置数据包含关于用户目录和令牌的信息以及桌面提供者、池、模板及存储等桌面信息。运行时信息包含以下相关信息:已登录用户、他们正在使用的桌面、桌面的状态以及正在运行的克隆作业的详细信息。
Oracle VDI Web 服务器是 Apache Tomcat 服务器,用于运行与 Oracle VDI 配合使用的图形管理工具。除 Oracle VDI Manager 外,还有 Sun Ray 管理工具。每个管理工具使用自己的 Tomcat 实例,并使用不同的端口号进行访问。
Oracle VDI Web 服务器还运行 Oracle VDI Web 服务,该内容会在第 2.1.4 节 “关于桌面访问”中进行介绍。
使用 Oracle VDI,桌面会话始终在虚拟化主机上运行,而从不在客户端设备上运行。用户可以使用以下任意客户端访问其桌面:
Oracle Sun Ray 客户端,包括 Oracle Virtual Desktop Client
远程桌面协议 (Remote Desktop Protocol, RDP) 客户端,包括使用 Oracle Secure Global Desktop 的安全 Web 访问
Web 服务客户端,通常是 Web 应用程序
所有桌面访问请求均由 VDI 服务处理。用户拥有桌面后,RDP 协议用于连接到和显示桌面会话。用户如何访问其桌面取决于访问桌面所用的客户端,该内容会在以下部分中介绍。
用户可以使用 Oracle Sun Ray 客户端或 Oracle Virtual Desktop Client 访问桌面。Sun Ray 客户端是安全的小功率硬件瘦客户端设备,用于显示服务器上托管的桌面。Oracle Virtual Desktop Client 是安装在通用客户端操作系统上的应用程序,是 Sun Ray 客户端的软件版本。这两个客户端都使用设备链路协议 (Appliance Link Protocol, ALP) 连接到在 Oracle VDI 主机上运行的 Sun Ray 软件。
Sun Ray 软件 提供向 Sun Ray 客户端显示桌面的基础结构。Sun Ray 软件 运行 Oracle VDI Kiosk 会话,而该会话则运行桌面选定器程序和 Sun Ray Windows 连接器程序。桌面选定器会向 VDI 服务提交用户的凭据,并请求分配给用户的桌面。Sun Ray Windows 连接器是用于 Sun Ray 环境的 RDP 客户端,它将用户连接到运行桌面的虚拟机。用户通过使用用户名、密码和 Windows 域(可选)进行自我验证来访问其桌面,或者通过插入智能卡来访问其桌面。如果验证成功,该用户会连接到其桌面。如果为用户分配了多个桌面,则会显示一个屏幕,供他们选择要连接到的桌面。也可以将用户的凭据传递给 Windows 操作系统,这样用户即可自动登录到其桌面。
Oracle VDI 包含 RDP 代理程序,该代理程序支持 RDP 客户端使用远程桌面协议连接到桌面。支持的 RDP 客户端包括 Oracle Secure Global Desktop 随附的远程桌面客户端或 Microsoft 远程桌面连接。
用户通过运行 RDP 客户端和指定要连接到的 Oracle VDI 主机来访问其桌面。RDP 代理程序会接受收到的请求(该请求包含用户名、密码和域名 [可选]),并运行 VDI 客户端命令行工具(该工具验证用户和请求桌面)。VDI 服务会将 IP 地址和桌面的端口返回给 VDI 客户端工具,该工具将此信息传递给 RDP 代理程序。RDP 代理程序会将 RDP 客户端重定向为连接到指定 IP 地址和端口处的桌面。
Oracle Secure Global Desktop 使用浏览器为用户提供对远程桌面的安全访问权限,从而扩展传统 RDP 客户端的范围。
VDI 客户端命令行工具包含 Web 服务应用编程接口 (Application Programming Interface, API)。应用程序开发者和系统集成人员可以使用 HTTP 和 SOAP 协议开发自己的用于从 Oracle VDI 请求桌面的解决方案。Web 服务由 Oracle VDI Web 服务器托管。