最新 Homelab 完工,报告

· 378 words · 2 minute read

前后准备、部署 Homelab 已有几月有余,今终有所成效,遂分享。

介绍 —— 何为 Homelab? #

简言之,即在家中部署服务器、网络设施,和其他相关设施。

介绍 —— 为何需要 Homelab? #

不同人有不同需求。这里列举一些常见需求:

  • 实验
  • 云服务器无法满足需求
  • 节省成本
  • 相关工作有关
  • 兴趣

简短介绍后,便在此记录我的 Homelab 搭建时间轴以及心得体会。

2020 年上旬:在 Azure 上搭建 Active Directory 基础设施 #

博主对 Active Directory 早有耳闻。由于其出色的中心化管理能力,我一直想部署一个 AD。然而家中并无物理服务器可用,只得在 Azure 上部署。

具体配置:两台 Azure Spot Windows VM。一台 Windows VM 用作 AD DC,一台用作 AAD 同步。

当时为了满足云端网络到本地的连通问题,采用了 P2S(Point-to-site)方案,使用 ZeroTier 进行连接。然而,该种方案有如下问题:

  1. 由于未知原因(可能是初始化比较慢),DC DNS 经常报错提示找不到 ZeroTier 虚拟 NIC;
  2. 需要每台客户端设备都进行配置,较麻烦;
  3. 速度很慢
  4. 该方案使用了许久,后期拓展到了两台云域控制器,不提。

2020 年中旬:切换到 WireGuard #

刚提到 ZeroTier 的诸多问题,遂考虑使用 WireGuard 的 S2S(Site-to-site)方案,让两个网络内的设备均能无缝互访。之所以采用 WireGuard 是由于它配置方便。欢迎参考 分享自用 WireGuard S2S 配置

Azure 端因此新建一台 Spot Linux VM 作 WireGuard Peer。

Azure 虚拟网络支持设定路由表,便可将请求本地 IP 区间的流量路由到 WireGuard Peer VM 即可。

但依旧限于家里没有服务器,但有一个空闲的树莓派,遂用作 WireGuard Peer。由于家中的路由器不支持设定路由表功能,只得继续在客户端电脑上手动设置。

依此设置,虽仍较麻烦,无法在客户端做到完全无缝访问,但在设置好后几乎可以流畅互访。

2020 年中旬:了解到 Homelab 并尝试购买配件 #

由于博主家境平庸,无法购买昂贵硬件设施,只得在便宜的基础上再进行选择。

初步设想是在家中设立一台服务器,并提供一些无需 SLA 的服务(大致上就是不盈利的服务),比如本博客、Minecraft 服务器等等。既如此,配置自然不需很高。经过研究,选择了如下配置:

  • CPU:Intel 赛扬 G3900。双核。
  • 内存:4G 单条
  • 主板:TB250-BTC(最高内存 32G)
  • 系统盘:120G TeamGroup SSD
  • 数据盘:台式机拆下来的、用了四年之久的 1T HDD
  • PSU:忘记牌子的 45W。
  • 网络:连接 DMZ 网络,和内网隔离,转发部分端口。

该配置足以承载上述负荷。

对于网络,刚提到由于家中路由器功能欠缺,不能设置路由表(更不能安装 WireGuard),同时需要分多个网络(缓冲区网络和内网),并需要将 Homelab 和家人子网分离避免干扰,便需一个更高级的路由器了。因此,我看中了 EdgeRouter X。

EdgeRouter X 可以满足上述所有需求,除了它只有 1Gbps。

经过购置,已到了 2020 年七月。从此家里有了一台服务器和两个子网。在 EdgeRouter 上安装了 WireGuard,从此树莓派便退役了,真正实现两个网络间计算机的无缝互访。与此同时,也将 Azure 上的博客等网站迁移到了本地。

对于 WiFi,由于市面上的 AP 都较贵,便只得使用刷了老毛子 Padavan 的极路由 1s 进行桥接。只有 100Mbps。

2020 年下旬:本地 Active Directory 设施 #

虽说现配置已可以满足需求,但仍有不妥之处。如:

  • WireGuard 性能仍然有瓶颈。经测,仅有 100Mbps 下载(家宽为 15 / 300)
  • Azure 不支持某些 Windows 服务,如 Hyper-V、DirectAccess 等。
  • Azure 托管三个 Windows 虚拟机很贵,虽说是 Spot。
  • 本地有时需要托管一些虚拟机,做一些临时业务,如编译等。
  • 需要一台内网机器存放敏感数据。照片等数据不适合存在 DMZ 网络中。
  • Azure 托管 Windows 的唯一好处便是许可。Azure 可以通过订阅方式托管正版 Windows,而本地则需要购买。然而博主家境不好,只得暂时使用盗版,待日后有机会再行购买。

同时,家里没有额外的硬件设施。可用的仅有一台已服役六年的 OptiPlex 3020,只得贡献它了。然而,性能有所限制:最高 16G 内存,只有三个 SATA。具体配置:

  • i5 四核
  • 16G DDR3
  • 512G SATA SSD
  • 网络:连接内网,不转发端口。

为了节省成本,便在该机上安装了 Hyper-V Server,专做虚拟化。后安装了几个 Windows 虚拟机,设置 Active Directory 服务。

由于有富裕空间,便尝试了不同 Windows 服务,如 WDS(PXE 服务)、WSUS(更新服务)、DirectAccess、RADIUS 等,体验目前良好。

在迁移 Active Directory 后,便删除了 Azure VM,节省后续成本。

展望日后升级,主要有如下升级方向:

  1. 外网服务器需要升级内存
  2. 需要更多数据盘防止数据丢失
  3. 外网服务器需要使用虚拟化
  4. 升级 10Gbps 网络
  5. 购买新的 AP

感谢阅读,希望本篇体验可以为其他 Homelab 用户提供一些参考。最后希望服务器长治久安。

2020 年十月更新:内存升级、Proxmox VE、电力中断 #

本节写于二〇二〇年十一月。

十月中旬,博主终如愿以偿地升级了 DMZ 服务器的内存 —— 由原 4G 到 20G(4 + 16),得以安装 Proxmox VE 了。虽说 CPU 性能不佳,但由于目前没有运行大算力负载的计划,还可搁置。

安装过程还算顺利,后将诸多服务都搬迁到本地了,同时还未朋友提供了几个 VPS 用。但依个人感觉,对新手的友好程度似乎不如 Hyper-V Server。

十一月初的一个工作日,市区发生了大停电,约三十分钟。博主感觉应计划购买 UPS 了。

2020 年底:黑五、硬盘、超融合、高可用、Docker #

更新

本章节于二〇二〇年十二月十七日撰写。

终于盼来了心心念念的黑色星期五。由于硬盘使用时间太长,且容量不足、数量不够,故定于黑五购买新硬盘,并尝试组超融合环境。博主对超融合并不熟悉。直言不讳地说,我也是黑五前几个星期才了解到这些概念,只是打听询问、摸着石头过河。

然而,由于硬件设施无法满足企业级超融合环境的基础需求 —— 最主要的原因是 PCIe 和 SATA 不够,无法满足 10GbE、多盘、SSD 缓存的需求(以 S2D 为参考),故只得委屈求全、采用了一家小厂的 vSAN 方案,并采用 1Gbps 网络。

同时,博主由于接二连三的断电、维修等事故,导致服务频繁中断。本次升级中,博主也意识到了该问题,并开始尝试提供高可用性。由于资金不足,无法在硬件上完全做到冗余,故只对两个网络和物理节点进行了初步冗余,其他设施仍有「Single Point Failure」的问题。软件方案则采用微软 Hyper-V(虚拟化、在线迁移)、Failover Cluster(自动迁移、集群管理)和 NIC Teaming(网络冗余,NIC Failover 自动切换)完成冗余。

硬件方面采用双节点方式。存储方案则采用 RAID01 方案,即每台机器有两个 4 T 物理磁盘(HDD),划 RAID0,并在 vSAN 中设置 RAID1 以在两台节点间副本。MPIO 策略为 Failover Only,本地优先。每台节点的缓存设为 100M 内存,Write back。这样,可用空间便是 8T 了。

对于网络,也有较大的改动。由曾经的单内网虚拟宿主和单外网虚拟宿主,改为两台宿主均处于内网并入域,并采用 VLAN(虚拟机)、CNI(Docker)和防火墙的方式进行隔离。这样做极大地提高了资源利用效率、减少浪费。

对于架构,由于先前的诸多服务运行在 Proxmox VE 的 LXC 容器上,现搬迁纯 Windows 架构不得不进行相应升级。博主决定由 Hyper-V 开一个单独的 Linux VM 以放置 Docker(Podman)容器,并在虚拟机级别进行冗余,而非容器级别。容器内部网络和隔离由 CNI 同 nftables 完成。其他虚拟机则可无缝迁移至 Hyper-V。

谈及资源平均,两台节点的资源并不平均:一台为双 6T 硬盘,赛扬双核,20G 内存;一台为双 4T 硬盘,i5 四核,16G 内存。正因如此,博主将前者硬盘另划了一个 1T RAID1(即每块磁盘上占用 1T),作为非高可用资源。这样,便可在另一台节点正常工作的同时运行一些不需高可用的虚拟机了。

最终还是要谈性能。由于资金有限,性能受到极大限制。测试结果显示连续读写只有 22MB/s,十分缓慢。正因如此,在下次升级中,性能是考虑的重中之重。

回顾刚开始做 Homelab 的时日,Homelab 的目标已由「玩设备、随意跑些服务」转变为了「尽量提高稳定性、尽量提供多样服务」,我的一些关键服务也逐渐开始由云向本地迁移,可喜可贺。

展望未来,对 Homelab 的升级不会止步于此。考虑到性能和博主的知识水平,我列了一个升级清单,方便以后查阅:

  • 网络:升级 10Gbps 网络,单 NIC 四口,尽量 RDMA。提升 vSAN 性能。
  • 存储:增加 SSD 缓存。提升 vSAN 稳定性。
  • 网络:考虑 VxLan 或 SDN 等技术,使 VLAN 更具拓展性。
  • 电源:考虑 UPS,防止双节点断电导致数据丢失。
  • 学习:系统地学习运维和计算机网络知识。

本次更新至此便告一段落了,若未来有新的内容,博主还会继续更新。