1 前言
场景需求:团队共享桌面、远程办公、研发测试、统一环境管理
上篇覆盖范围:ESXi、域控、vCenter的安装与基础配置
下篇覆盖范围:Horizon的安装与配置
整体目标
- 搭建一套可供团队使用的 VMware 虚拟化桌面环境
- 实现统一认证、集中管理、远程接入与桌面池分发
- 支持后续模板化批量交付和权限管理,以及安全控制(禁止文件拷出)
2 总体架构
| 机器名称 | 主机名 | IP | 系统/组件 | 主要作用 |
|---|---|---|---|---|
| 交换机 | xxx | 172.20.13.254 | xxx, DHCP | 分配IP,与上层网络以及其他机器相连接 |
| ESXi宿主机1 | esxi01 | 172.20.13.42 | VMware ESXi | 承载所有虚拟机,提供虚拟化计算、存储、网络资源 |
| ESXi宿主机2 | esxi02 | 172.20.13.43 | VMware ESXi | 承载所有虚拟机,提供虚拟化计算、存储、网络资源 |
| 域控服务器 | dc | 172.20.13.100 | Windows Server + AD DS + DNS | 提供域控、用户认证、DNS 解析、组策略管理 |
| vCenter 服务器 | vc | 172.20.13.101 | vCenter Server Appliance | 统一管理 ESXi、集群、数据存储、模板和虚拟机 |
| Horizon 连接服务器 | horizon | 172.20.13.102 | Horizon Connection Server | 提供 Horizon 管理入口、用户认证对接、桌面分配与连接 |
| win11桌面模板机 | win11-template | 172.20.13.xx | Windows 11 + Horizon Agent | 制作标准桌面模板,供后续克隆生成团队桌面 |
| ubuntu2204桌面模板机 | win11-template | 172.20.13.xx | Windows 11 + Horizon Agent | 制作标准桌面模板,供后续克隆生成团队桌面 |
| 团队桌面xx | userxx | 172.20.13.xx | Horizon Agent | 分配给团队成员使用的虚拟桌面 |
- 实际物理机器只有两台服务器,其他都是在ESXi里装的。
- 部署顺序说明:
- ESXi安装配置
- 域控服务器安装配置
- vCenter安装配置
- Horizon安装配置
3 安装前准备
先把这些镜像、安装包下载好(自行搜索)
- ESXi 镜像: 7.0 Update3 (这个看服务器型号,可能得去服务器官方下载镜像)
- Windows Server 镜像:Microsoft Windows Server 2016 (64-bit) (选2016准没错)
- vCenter Server Appliance 镜像: vSphere Client 版本 7.0.3.02400 (公司之前买的这个版本的key)
- Horizon 安装包: VMware Horizon 8.12.0 版本2312 (公司之前买的这个版本的key)
- Win11 镜像: Windows 11 IoT Enterprise LTSC 2024 简体中文 (避坑网上各种所谓的“纯净版”,这才是真正的纯净版)
- Ubuntu 镜像: ubuntu-22.04-desktop-amd64 (注意和horizon的兼容性,比如Horizon2312最多只支持Ubuntu 22.04版本)
注意Horizon 8和Horizon 7的安装配置过程差距挺大的,似乎是删了一些组件
4 ESXi 安装与基础配置
4.1 ESXi 安装过程
此部分没什么好说的,正常装系统呗
- 安装介质制作
- 引导安装
- 磁盘选择
- 初始密码设置
4.2 管理网络配置
主要是在交换机上配置,然后在ESXi里改就行
- 配置管理 IP
- 子网掩码、网关、DNS(DNS服务器可能要手动进入shell通过命令配置、记得打开shell)
- 测试网络连通性
值得注意的是几个概念: 物理网卡、VMkernel网卡、端口组、虚拟交换机, 后面改vCenter网络的时候可能会派上用场。设置不当也会导致你的机器直接失联!!
目标是看懂这样的拓扑图(我这个是配置后的分布式虚拟交换机,可能和一开始的vSwitch0还不太一样)
所以如果是远程,请务必配置好服务器的带外管理页面IP,方便远程重启、进入BIOS等操作。
4.3 ESXi 基础优化
主机名修改
NTP 配置,时区与时间同步(我用的ntp.aliyun.com)
存储与数据存储检查(新建数据存储,ESXi好像识别不太出来SSD,奇怪)

上传 ISO 与安装文件(镜像要传到数据存储浏览器里,或者直接shell scp过去)
按需修改一些高级设置(比如我修改了最大失败登录尝试,之前被锁定登录不上还以为是密码被改了)

5 域控(AD/DNS)安装与配置
域控机的作用非常重要,没有它后续无法开展,安装好ESXi之后就可以创建一个虚拟机作为域控(当然有稳定的真实物理机做域控更好)。
5.1 创建域控虚拟机
- 虚拟机规格: 我给了 2CPU、4G内存、100G存储,感觉够用
- 系统安装: windows server 2016安装
- 固定 IP 配置: 这些管理机就不要用自动IP了,固定设置一下吧
5.2 安装 AD DS 与 DNS
主要包括 AD DS 与 DNS 的安装、域控制器提升以及新域创建,这类基础操作网上教程很多,按流程执行一般问题不大。
真正需要重点关注的是后续基础配置是否到位,包括正向解析区是否正常、主机名解析是否正确、时间同步是否一致,以及用户和用户组是否提前规划清楚(一般区分普通用户和管理员就够用了)。

我还花时间折腾了一会AD CS证书服务,发现难用的一匹,于是放弃。
- DNS服务器比较重要,之后的用户机器DNS都要设成这台域控的IP,这样就能自动解析这里设置的各种域名了。

- 顺便说下Windows Server的共享文件夹功能可以使用一下,方便在不同计算机之间传文件。以我这个例子进行说明,该计算机名为dc,文件夹share:Windows访问只需通过
\\dc\share地址即可,Linux则是通过smb://ip.xxx来实现。(前提是机器加入了该域)

5.3 将计算机加入域
域存在的价值是有其他计算机加入进来,因此得明白各种系统的计算机怎么加进创建好的域。加入之后就可以统一用域账号、而不需要再用本地账号进行登录和使用了。
5.3.1 windows
系统属性里面点击更改计算机名就行,会提示你加入域、输入域成员账号和密码。(我这里用域控为例,改不了是因为有证书在)

5.3.2 linux(Ubuntu为例)
主要使用realm工具
sudo apt install -y realmd libnss-sss libpam-sss sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit
sudo hostnamectl set-hostname xxx.simforge.work
# 测试
realm discover simforge.work
simforge.work
# 返回类似:
# type: kerberos
# realm-name: SIMFORGE.WORK
# domain-name: simforge.work
# configured: kerberos-member
# server-software: active-directory
# client-software: sssd
# required-package: sssd-tools
# required-package: sssd
# required-package: libnss-sss
# required-package: libpam-sss
# required-package: adcli
# required-package: samba-common-bin
# login-formats: %U
# login-policy: allow-realm-logins
# 使用管理员账户加入域
sudo realm join --user=administrator dc.simforge.work
加入域后修改下配置/etc/sssd/sssd.conf,避免需要输入用户名时要把域带上,简化使用:
use_fully_qualified_names = False
fallback_homedir = /home/%u再配置下sudoer的权限就好了,sudo EDITOR=vi visudo
# 用户无法切换成管理员,但有一些sudo权限
Cmnd_Alias SERVICE_OPS = /usr/bin/systemctl status *, /usr/bin/systemctl restart *, /usr/bin/systemctl start *, /usr/bin/systemctl stop *, /usr/bin/systemctl reload *
Cmnd_Alias LOG_OPS = /usr/bin/journalctl *, /usr/bin/tail *, /bin/cat /var/log/*
Cmnd_Alias PKG_SAFE = /usr/bin/apt *, /usr/bin/apt-get *, /usr/bin/apt-cache *
Cmnd_Alias NET_OPS = /usr/sbin/ip *, /usr/bin/ss *, /usr/bin/netstat *
Cmnd_Alias SAFE_READ = /bin/ls *, /usr/bin/du *, /bin/df *
Cmnd_Alias DATA_RW = \
/bin/ls *, /bin/cat *, /usr/bin/tail *, /usr/bin/head *, \
/usr/bin/vim *, /usr/bin/vi *, \
/bin/cp *, /bin/mv *, /bin/rm *, \
/bin/mkdir *, /bin/rmdir *, \
/usr/bin/touch *, /usr/bin/truncate *, \
/bin/chmod *, /bin/chown *, /bin/chgrp *, \
/usr/bin/tee *, /usr/bin/find *, \
/usr/bin/du *, /bin/df *
%simforge_user ALL=(root) NOPASSWD:SERVICE_OPS, LOG_OPS, PKG_SAFE, NET_OPS, SAFE_READ, DATA_RW
# 管理员的sudo权限
%simforge_admin ALL=(ALL:ALL) NOPASSWD:ALL
6 vCenter Server 安装与配置
6.1 部署 vCenter Server Appliance
- 安装程序启动: 安装程序在能连上ESXi的机器上运行就行
- 目标 ESXi 选择:填空就行,size我选的Small(但空间需求还是挺大的)
- 配置 IP、FQDN、DNS: 注意FQDN填写的域名需要在域控服务器里设置好正向查找解析
- stage1部署完成后的stage2: SSO configuration部分设置登录账号密码(名字改不改无所谓,反正好像除了登录也用不到),该阶段会卡挺长时间的
其实安装过程没有什么好说的,大部分按照默认选项即可,必须填的填一下就行了。
6.2 登录与配置
- Datacenter 创建
- Cluster 创建
- 添加 ESXi 主机
- 许可证与基本参数设置
这部分配置好后大概这样:

我还折腾了一段时间网络的配置,最后弄成了这种自己看起来比较舒服的样子:

用vCenter迁移/备份虚拟机数据还是很方便的,可以开机状态无感知完成迁移。