借助 VMware Horizon,IT 部门可在数据中心内运行远程桌面和应用程序,并将这些桌面和应用程序交付给员工。最终用户可以获得熟悉的个性化环境,并可以在企业或家庭中的任何地方访问此环境。通过将桌面数据放在数据中心,管理员可以集中进行控制并提高效率和安全性。
环境介绍
由于手头只有一台支持ESXi 8的服务器主机,且上面有业务在跑,因此本次部署采用Nested Virtualization(嵌套虚拟化)实现
需要注意的是本文所部署的方法在安全方面并非最佳实践,如需强安全性还需做各种用户权限和网络的隔离等,以及最新版本的软件更新。
后续使用Dell PowerEdge R710主机(CPU:Xeon X5670*2)进行了物理机部署,由于ESXi 7及之后版本不再支持旧处理器以及不识别我R710上的RAID卡,因此最后选择部署了ESXi 6.5。
vHorion 8版本不支持vCenter 6.5版本,于是安装了ESXi 6.5,安装vCenter 7.0,即可在vHorizon 8中使用。
刚开始在Horizon中添加vCenter 6.5的时候还以为能在Horizon 8中用,结果创建虚拟机的时候就报错不行,后来又从VCSA 6.5升级了7.0。
宿主机
服务器:Dell PowerEdge T440
CPU:2×Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz(10 Cores 20 Threads Per CPU)
实验虚拟机介绍
序号 | 用途 | 主机名 | IP地址 | 操作系统 | 配置 |
---|---|---|---|---|---|
1 | 域控服务器 | adc2.vh3.lxn | 192.168.110.46 | Windows Server | 4c12g |
2 | 虚拟化主机 | — | 192.168.110.47 | ESXi 8.0.3 | 20c92g |
3 | 连接服务器 | css.vh3.lxn | 192.168.110.48 | Windows Server | 4c12g |
4 | vCenter | — | 192.168.110.49 | vCenter 8.0.3 | Tiny |
5 | 模板机 | — | DHCP取得地址 | Windows 10 | 2c4g50g |
6 | 客户机 | — | — | Windows 11 Pro | — |
本次部署中我对所有主机的IPv6功能均进行了关闭。我这里把AD域控服务和连接服务器分开部署了,不清楚能否合在一起。
ESXi嵌套虚拟化
顺便提一下vmware嵌套虚拟化。
- 打开宿主机的配置文件
/etc/vmawe/config
,在文件末尾添加如下内容:然后重启宿主机。1
vhv.enable = "TRUE"
- 在需要启用嵌套虚拟化的虚拟机配置文件中添加如下行:
1
vhv.allowPassthru = TRUE
软件版本清单
- 服务器操作系统:Windows Server 2022 Standard
- 虚拟化组件:VMware ESXi, 8.0.3, 24414501
- vCenter:8.0.3.00400
- Horizon Connection Server:版本2312;8.12.0, 23148203
- 虚拟机系统:Windows 10 LTSC 2021
顺带一提如果是vHorizon 8版本的话最低要求vCenter版本是7.0,同时对应vCenter 7.0最低支持ESXi版本是6.5。
部署基础环境
部署Windows Server、ESXi和vCenter
这一部分基本就略过了,都是很基础的操作,就装系统。
安装完成后根据规划修改一下计算机名,配置网络,禁用防火墙和Defender,安装驱动,最后重启。
部署AD域控服务
如果生产环境已经有了域控服务器则可以使用现成的域控制器。
- 在服务器管理器中安装“Active Directory 域服务”,一直下一步直至完成安装
- 添加新林,输入规划的域名,后面都保持默认就行
安装完成后会自动重启域控服务器 - 禁用防火墙
- 打开“Active Directory用户和计算机”,在Users下面新建用于连接服务器的域账户
重要:设置该用户的权限,将该用户加入Enterprise Admins和Domain Admins
域控服务器的部署到这里先告一段落。
配置连接服务器
正常安装操作系统之后使用刚才创建的cssuser
账户将连接服务器加域:


然后把cssuser
加入本机的管理员组,然后重启:

重启后使用cssuser
登录到服务器

配置vCenter
打开已经部署好的vCenter后台页面

- 右键左侧vCenter的IP,新建数据中心,然后新建集群
我这里只有一台ESXi主机,且没有vSAN,所以这块都保持默认就行
然后在Datacenter下再新建个虚拟机文件夹,新建完需要到第二个选项卡才能看到
在Cluster0下面添加ESXi主机,然后等待添加完成 - 激活vCenter和ESXi
先在系统管理-许可中添加序列号
然后到资产选项卡为产品分配许可
部署Horizon
到这其实才到正文。
部署连接服务器
- 打开连接服务器,然后将软件包
VMware-Horizon-Connection-Server-x86_64-8.12.0-23148203.exe
传到服务器上,然后启动安装 - 安装选项这里保持默认
- 设置数据恢复密码,
不知道是干啥的。
该密码用于保护备份文件,该备份文件默认保存在连接服务器下的C:\ProgramData\VMware\VDM\backups
目录中。 - 防火墙规则的话保持默认就行,我这防火墙直接就禁用掉了,所以选哪个其实都一样
- 设置管理员,这个地方可以改也可以不改,可以用默认的设置就是连接服务器的域账户,之后可以在Horizon的管理后台更改
- 不加入CEIP
- 部署类型选择常规
- 等待安装完成即可
配置Horizon基础环境
- 登录到Horizon后台,只能使用域名,不能使用IP访问,地址规则如下:
1
https://<ConnectionServerDomainName>/admin
- 对Horizon应用许可证
- 添加服务器,这里我们添加vCenter Server
填入vCenter的IP地址、用户名密码等信息,并发配置保持默认即可
中间可能会提示证书无效,点击查看证书后与vCenter服务器的证书信息比对,无误后接受即可
存储选中我们的主机
确认信息无误后提交即可 - 添加域账户,方便进行认证及创建计算机对象
配置事件数据库(可选)
说明:事件数据库用于记录Horizon事件,不配置也不影响正常使用,只是没有审计日志和错误信息。
- 首先安装SQL Server,我这里选择的版本是SQL Server 2019。
Horizon事件数据库支持PostgreSQL、Oracle和SQL Server三种,我这里装PostgreSQL没有安装成功。
SQL Server的安装此处省略,记得检查TCP/IP连接是否启用。 - 新建数据库,名称无所谓,其他都保持默认。
- 在Horizon中配置事件数据库,填入数据库IP、用户名密码等信息
- 配置好后即可在监视器-事件中查看事件
交付云桌面(VDI)
部署模板机
因本节可以安装多种操作系统,都写在这里感觉太过臃肿,因此请参见vmware Horizon 模板机部署进行模板机的安装与配置。
添加桌面池
- 选中左侧“清单”-“桌面”,右侧“添加”桌面池。
这里我们选择“自动桌面池”: - 虚拟机创建方式我们选择即时克隆,创建速度快且节省空间。
- 用户分配类型根据实际情况选择,我这里是每次每个用户都分配到固定的虚拟机。
- 存储策略保持默认。
- 桌面池信息随便填写即可。
- 置备设置按需填写,我这里是测试就不创建那么多虚拟机了。
- 根据实际情况选择计算资源与存储配置。
- 桌面池配置按照实际情况进行选择,也可以保持默认;映像选择刚才做好的虚拟机的快照。
- 远程显示协议保持默认,使用Blast协议即可。
- 域和容器配置保持默认即可。
- 检查配置,没有问题就可以提交了。
配置好后如果刚才启用了置备在vCenter中可以看到云桌面正在准备。

将桌面池授权给用户
- 选中桌面池的授权选项卡,点击下面“添加授权”
- 我这里是需要将云桌面分配给所有用户,所以我这里选择
Domain Users
交付云应用程序(vApps)
创建模板机
这一步的模板机可以用之前的,但我这里实验还额外需要安装别的软件,所以在原模板机的基础上制作。新装的软件为Steam。
安装好确认可以正常运行之后关闭模板机并创建快照。
创建桌面池与授权用户
总体来说和之前云桌面的桌面池的创建步骤是一样的,区别如下:
- 选择正确的快照
- 会话类型选择“应用程序”
- 等待桌面池中的计算机创建完成再进入下一步
- 在应用程序池中选择“添加”-“从已安装应用程序添加”。
桌面池选择刚才创建的桌面池,然后选择应用程序,可以多选。 - 编辑应用程序ID和显示名称,保持默认就行
- 提交后对用户(组)授权
- 打开客户端即可看到刚添加的vApps,双击即可启动
使用云桌面
WebClient
打开Horizon连接服务器的页面,我这里选择了WebClient。然后使用域账户登录到Horizon。

点击对应的云桌面图标即可登录到云桌面。

部署完成。
客户端连接到服务器
下载好Horizon Client后,点击右上角添加服务器,然后输入连接服务器地址

提示证书不可信,点击“继续”

输入域账户登录到Horizon

双击对应的云桌面即可连接
