HomeLab升级笔记

上次写blog还是上次。已经5年没写文章了。本篇文章主要讲讲我HomeLab的设备硬件升级的网络适配篇。主要突出一个能耗与省钱,all in two。

硬件

HomeLab搭起来的时候还是2020年5月,当时选了贵出天际的E3-1235Lv5【对我就是大冤种,这里贴一下现在这台NAS上跑的装备购买日期和花销

设备 数量 单价(RMB) 购买日期
E3-1235Lv5/8G/U-NAS八盘位/Asrock ITX C236 WSI 1 3300 2020/4/27
16G ECC UDIMM 2400MHz 2 560 2020/4/28
HGST_HUS728T8TALE6L4 8T 3 1169.65 2020/4/29
ST4000VN008-2DR166 4T 2 812.52 2020/4/29
x16拆分HPE 530双口10G NVMe x2 1 334 2022/1/24
980 1TB 2 673.49 2022/4/13
TPM2-S 1 68 2023/6/6

最近升级了下HomeLab的硬件配置,主要是平时工作需要开一堆测试环境,1235Lv5 4C4T的可用CPU资源低的可怜,32G的内存开了16G给freenas以后就剩下16G可以开虚拟机,也是到处捉襟见肘,众所周知vCenter跑起来咋说也得12G内存,这玩意跑在之前的HomeLab上还是太痛了。于是买了tank家的D-1581

设备 数量 单价(RMB) 购买日期
Mellanox OCP 单口10G 1 119 2022/1/24
980 Pro 2TB 1 1049 2023/4/17
Tank6盘位机箱电源套装 1 1039 2023/9/6
Tank D-1581 板U套装 1 669 2023/9/6
32G SK RECC 2666MHz 4 190 2023/9/7

由于这个主板不支持独立TPM,另外功耗也稍微高一点,这两个设备算是优势互补了,所以要把这两个设备都用起来。从垃圾山里掏出了当年买的坏过一次的nvme MLC 256G ssd用作系统盘,这东西购买日期太久远了,价格可以忽略不计了。不得不吐槽一下国产之光长江存储是真的生猛,现在4T的pcie4 NVME都可以1032块拿下,太离谱了。我再等等,反正现在存储需求增长稳定,没啥大量新增的需求,估计能等到SATA的ssd铺货组全闪NAS。

网络拓扑

Machine1 1235Lv5

vSwitch
vSwitchBackup
主板上有两个1GbE口,就用作万一网坏了的情况下的备胎口

Machine2 D-1581

vSwitch
因为我把usb网卡拔了所以没有uplink,有临时需要插上去就可以了

Distributed vSwitch

dSwitch
其中TrueNAS是在Machine1的,vCenter是在Machine2的。配置方法后面再展开说。

ESXi 7

首先,ESXi6.7 已经彻底EoL了,退一步用ESXi6.7从而利用上D1581主板的3个2.5GbE肯定是行不通的,这风险我是承担不起,虽然能通过运维手段把这玩意塞到封闭网段尽量降低被日可能性,但是被打出虚拟机逃逸的可能性依然不是0,那就还是算了。

1
To help customers with that transition, we are extending the general support period for vSphere 6.7. Originally, vSphere 6.7 was scheduled to reach EoGS (End of General Support) on November 15, 2021. We are extending this date by 11 months, to October 15, 2022.

那么要解决的问题就是如何用一张单口OCP10G卡和双口10G HPE530达成跨两个设备的实验环境组网。

Fling USB Network Native Driver for ESXi

因为Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller 在6.7以前是通过vmklinux兼容层实现的,这个在7被从kernel里删除了。

1
That depends on whether the driver type is “vmklinux” or “native” as the support for “vmklinux” drivers was removed in ESXi 7.

所以只能退一步用Fling的USB网卡。但是用了一天发现这东西十分不稳定,我也不知道是不是因为太热了,只要数据传输量大了时间长了他就直接掉设备摆烂,那这玩意就只能作为一个网卡的备份,如果临时有需求了再插上去。

1
2
3
4
5
6
7
8
2023-09-15T14:55:47.593Z cpu12:2097798)WARNING: vmkusb_nic_fling: udev 0x430e91281248, endpoint 0x82: invalid state 5: Failure
2023-09-15T14:55:47.613Z cpu7:2097797)uether_ifdetach: saved ue_unit as 0 ue->cached_mac 00:0e:c6:d2:fe:08

2023-09-15T14:55:47.613Z cpu7:2097797)DMA: 732: DMA Engine 'vusb0-dma-engine' destroyed.
2023-09-15T14:55:47.613Z cpu7:2097797)NetPort: 1810: disabled port 0x8600000f
2023-09-15T14:55:47.613Z cpu12:2114655)NetSched: 725: vusb0-0-tx: worldID = 2114655 exits
2023-09-15T14:55:47.613Z cpu7:2097797)WARNING: World: vm 2114652: 3819: vm not found
2023-09-15T14:55:47.613Z cpu7:2097797)WARNING: vmkusb_nic_fling: failed to destroy world 2114652: Not found

可以从这里下载
https://flings.vmware.com/usb-network-native-driver-for-esxi

安装说明也在上面的链接里

pfSense

用来暴露在外面,比之前新开了一个openvpn的服务,这样可以从家里连到这里面直接操作里面的ip,就用不着额外再开一台vm做转发了。也不用每开一台vm就需要额外加一条forward规则,nat规则太多到最后自己都记不住哪个端口是哪台机器的。
ovpnserver
pfsense自带openvpn server,用起来还是挺方便的。
openvpn生成配置里需要改的两个地方是IPv4隧道网络IPv4本地网络我这里分别是192.168.254.0/24192.168.0.0/16。可以选择使用向导生成然后把验证方式改成TLS only【一个人用搞什么ACL控制
pfsense opt
pfsense plug
这里需要去插件里面装一个openvpn-client-export的插件,要不然没法生成配置。

证书这边,需要一个ca,然后用这个ca签两个证书,一个是server的一个是client的
pfsense cert1
pfsense cert2
然后VPNServer配置那边关联一下ca签出来的server的证书,这个时候再去看client export就有个可以导出的client证书了
ovpn server2
防火墙那边记得放通WAN对应的UDP端口和OpenVPN interface的流量。

下载下来就可以直接用了。
ovpnclient

TrueNAS scale

监听两个IP,一个在1235Lv5的Bridge区,一个在vSwitch的trusted vlan。监听俩IP的主要原因是pfsense的NAT转发效率低下,我最多就只能跑到140MB/s,但是同vlan下能跨两个设备的VM传输SMB数据能跑到700MB/s,对我来说足够用了。Bridge区的IP可以不监听ssh,把ssh开到trusted的vlan上。这样安全性又提升了。

vCenter 7

在datacenter里添加一个Distributed Switch
dswitch00
dswitch01
dswitch02
两台机器网卡不一样,推荐一个一个添加,这样不容易搞混,最终成品就是参考上面拓扑图
dswitch03
然后到两台机器到的configure页面给这边添加一个新的vmkernel卡,然后把它连到分布式虚拟交换机(Distributed vSwitch)的trusted vlan里
这样vcenter/esxi1/esxi2的管理IP就全都收到了trusted vlan里,可以通过先拨vpn再访问的方式进行管理【安全性又上了一个台阶。

总结

至此硬件软件升级都已完成,两台esxi间是万兆互联,外部连machine2的vm速度也不含糊。是躺着测速的时候了。

machine2 vm-> machine1 vm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Connecting to host 192.168.10.2, port 5201
[ 5] local 192.168.10.29 port 60000 connected to 192.168.10.2 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.01 GBytes 8.64 Gbits/sec 884 1.32 MBytes
[ 5] 1.00-2.00 sec 1.06 GBytes 9.12 Gbits/sec 10 1.30 MBytes
[ 5] 2.00-3.00 sec 1001 MBytes 8.40 Gbits/sec 14 1.24 MBytes
[ 5] 3.00-4.00 sec 1.04 GBytes 8.95 Gbits/sec 34 1.27 MBytes
[ 5] 4.00-5.00 sec 1.04 GBytes 8.97 Gbits/sec 3 1.38 MBytes
[ 5] 5.00-6.00 sec 1.06 GBytes 9.13 Gbits/sec 24 1.36 MBytes
[ 5] 6.00-7.00 sec 1.03 GBytes 8.88 Gbits/sec 87 1.18 MBytes
[ 5] 7.00-8.00 sec 1.07 GBytes 9.15 Gbits/sec 14 1.17 MBytes
[ 5] 8.00-9.00 sec 1.02 GBytes 8.77 Gbits/sec 0 1.49 MBytes
[ 5] 9.00-10.00 sec 1.04 GBytes 8.96 Gbits/sec 68 1.32 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 10.4 GBytes 8.90 Gbits/sec 1138 sender
[ 5] 0.00-10.04 sec 10.4 GBytes 8.86 Gbits/sec receiver

machine2 vm-> pfsense -> machine1 vm

过了一层nat性能直接打2折,有点离谱,但也算正常,想不到啥简单的优化方法,难道能在mtu上做点文章?毕竟vlan多一个802.1q的头,估计包重组了,反正我给pfsense加cpu是没效果的,懒得看了。这也够用了,毕竟外网带宽也就跑到1.2Gbps。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Connecting to host nas, port 5201
[ 5] local 192.168.30.32 port 42858 connected to nas port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 147 MBytes 1.24 Gbits/sec 24 720 KBytes
[ 5] 1.00-2.00 sec 171 MBytes 1.44 Gbits/sec 11 687 KBytes
[ 5] 2.00-3.00 sec 159 MBytes 1.33 Gbits/sec 1 629 KBytes
[ 5] 3.00-4.00 sec 175 MBytes 1.47 Gbits/sec 22 602 KBytes
[ 5] 4.00-5.00 sec 178 MBytes 1.49 Gbits/sec 6 578 KBytes
[ 5] 5.00-6.00 sec 166 MBytes 1.39 Gbits/sec 1 387 KBytes
[ 5] 6.00-7.00 sec 164 MBytes 1.37 Gbits/sec 0 731 KBytes
[ 5] 7.00-8.00 sec 182 MBytes 1.53 Gbits/sec 1 717 KBytes
[ 5] 8.00-9.00 sec 165 MBytes 1.38 Gbits/sec 3 684 KBytes
[ 5] 9.00-10.00 sec 168 MBytes 1.41 Gbits/sec 18 639 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.64 GBytes 1.40 Gbits/sec 87 sender
[ 5] 0.00-10.05 sec 1.63 GBytes 1.40 Gbits/sec receiver

碎碎念

  • 为什么不是ESXi8

    • 因为ESXi8把ConnectX3支持干掉了,至少也得上ConnectX4lx的卡。有机会再续吧,毕竟ESXi7的EoL要到2027年4月了,到时候估计网卡的价格也下来了,能不能有家用40G/100G呢?除非那个时候电费打骨折了,要不然我还要考虑下能效问题,毕竟10G的日常体验已经非常不错了。
  • 为啥这么久没写文了

    • 过去几年发生的事情太多了,写文还是太浪费时间了。就是生活图个乐子吧,希望想抄作业的同学看完能少走些弯路。