**注意:**这是一个仅限有限发布的早期可用性(EA)功能。 有关更多信息,请联系您的 Cato Networks 代表或发送电子邮件至 ea@catonetworks.com。
概况
本文介绍了如何在使用 Proxmox 虚拟环境(Proxmox VE)管理的主机上部署 KVM vSocket。 Proxmox VE 使用 QEMU/KVM,因此 vSocket 部署模型与标准 Linux KVM(libvirt/QEMU)主机相同:vSocket 以 QCOW2 映像形式分发,并使用 cloud-init 引导。 不同之处在于管理层——您通过 Proxmox 网页界面创建和管理虚拟机,而不是使用 virt-install 或 virsh。
关于通用 KVM vSocket 需求、cloud-init 用户数据 设置以及 Cato 管理应用程序(CMA)中的站点创建流程,请参见配置 KVM vSocket 站点。
以下是 Proxmox VE 部署 KVM vSocket 的主要阶段:
- 在 CMA 中创建 vSocket 站点并复制序列号 (S/N)。
- 下载 QCOW2 映像并生成 cloud-init 种子 ISO。
- 将 QCOW2 映像和种子 ISO 上传到 Proxmox 存储。
- 在 Proxmox 网页界面中使用 UEFI 固件与 virtio 设备创建虚拟机。
- 添加串口和额外的网络接口到虚拟机。
- 启动虚拟机并验证 vSocket 是否连接到 CMA。
准备在 Proxmox VE 中配置 KVM vSocket
这些是准备创建 KVM vSocket 并将其连接到 Cato 云的前提条件:
- 启用了 KVM(硬件虚拟化)功能的 Proxmox VE 主机,并支持访客的 UEFI(OVMF)。
- Proxmox 主机 CPU 是 Haswell 架构或更新的型号。
- 从 Cato Networks 存储库下载的 KVM vSocket 的 QCOW2 映像。
- 一个云初始化种子ISO,提前与站点的序列号生成(请参见创建云初始化种子ISO)。
- 生成种子 ISO 的工具(例如,
mkisofs或genisoimage)。 - vSocket 的 WAN1 接口需要具有互联网连接和公共 DNS 服务。
- Proxmox 桥接(例如,
vmbr0)连接 WAN、LAN 和可选的管理接口到相关网络。 - 仅连接至多 4 个网络接口(NIC)到 vSocket。 连接超过 4 个 NIC 可能会导致 vSocket 出现问题.
注意: 不支持硬件 NIC 直通(PCI 直通)和 SR-IOV。
推荐的虚拟机设置
| 设置 | 推荐值 |
|---|---|
| 机器类型 | q35 |
| BIOS / 固件 | OVMF (UEFI),不含 EFI 磁盘 |
| CPU 类型 | host (Haswell 架构或更新的主机 CPU) |
| vCPU | 2 颗或更多 |
| 内存 | 4096 MB 或更多 |
| 主磁盘 | 导入的 QCOW2 映像,VirtIO 块总线(8 GB 精简后备存储) |
| Cloud-init 媒体 | 种子 ISO,附加为 CD-ROM 驱动器 |
| NIC 模型 | VirtIO(半虚拟化) |
| NIC 数量 | 2 到 4 个接口 |
在 Proxmox VE 部署 KVM vSocket 的最佳实践
- 直接从 Cato QCOW2 映像部署 vSocket,以避免硬件兼容性问题,并确保正确应用所有必需的硬件设置。
- 保留 QCOW2 原始映像的未更改副本,并为每个 vSocket 虚拟机导入干净的映像副本。 cloud-init 种子 ISO 仅在首次启动时运行。 如果配置未正确应用,通常从干净映像重建虚拟机比修复部分初始化的虚拟机更快。
- 在首次启动前拍摄虚拟机的 Proxmox 快照,以便在引导配置不正确时可以恢复初始状态。
- 为每个 vSocket 虚拟机(包括 HA 对的每个成员)创建具有相关站点序列号的唯一种子 ISO。
- 为网络和磁盘设备使用 virtio——不需要 NIC 仿真。
- 在虚拟机未完全配置之前不要启动它。 cloud-init 种子 ISO 仅在首次启动时读取。
创建 KVM vSocket 站点
在 CMA 中,创建一个具有 vSocket KVM 连接类型的新站点,然后从 站点配置 > 套接字 复制序列号 (S/N)。 您需要在 cloud-init 用户数据 文件中输入此序列号(包括破折号)。
完整过程请参见配置 KVM vSocket 站点。
在 Proxmox VE 上部署 vSocket 虚拟机
步骤 1 – 准备 Proxmox 网络
确保 Proxmox 主机为您连接到 vSocket 的每个接口提供 Linux 桥接:
- WAN1 – 可以访问互联网和公用 DNS 服务的桥接(例如,
vmbr0)。 这是一个强制接口。 - LAN1 – vSocket 背后的局域网段桥接。 这是一个强制接口。
- MGMT(可选)——用于管理访问 vSocket 的桥接。
- WAN2(可选)——第二条 WAN 链路的桥接。
您可以在网络设备上使用 VLAN 标签来分隔共享桥接的局域网段。
对于 HA 部署,两个 vSockets 的 LAN 接口必须在同一广播域(同一桥接和 VLAN)中。
步骤 2 – 创建 cloud-init 种子 ISO
使用 NoCloud 种子 ISO 通过 cloud-init 引导 KVM vSocket。 创建一个包含一个文件的目录:
TMPDIR=$(mktemp -d)\ntouch $TMPDIR/user-data
用站点配置填充 用户数据。 该文件使用简单的 TOML(key = value)格式,并支持注释。 序列号是强制性的;每个接口的网络设置是可选的(接口默认为 DHCP)。
# 强制:来自 CMA 站点的序列号(站点配置 > 套接字)\nserial = "XXXX-XXXX-XXXX-XXXX"\n\n# 可选的每接口网络设置。\n# 对每个接口重复 [[network]] 块;名称必须唯一\n# 并匹配真实接口(WAN1、WAN2、LAN1 等)。\n\n[[network]]\nname = "WAN1" # 强制性\naddressing_type = "Static" # "Static" 或 "DHCP"\naddress = "192.168.50.201" # 如果是 Static 则强制性\nnetmask = "255.255.255.0" # 如果是 Static 则强制性\ndefault_gw = "192.168.50.1" # 如果是 Static 则强制性\nprimary_dns = "192.168.50.1" # 如果是 Static 则强制性\nsecondary_dns = "8.8.4.4" # 可选\n\n# DHCP 是默认的,因此该块是可选的/冗余的。\n[[network]]\nname = "WAN2"\naddressing_type = "DHCP"
将文件打包为名为 cidata 的种子 ISO:
pushd $TMPDIR\nmkisofs -output seed.iso -volid cidata -joliet -rock user-data\npopd
为 ISO 赋予一个识别所使用的 vSocket 虚拟机的名称(例如,seed-<site-name>.iso),这样您在创建虚拟机时可以选择正确的 ISO。
步骤 3 – 将文件上传到 Proxmox 存储
- 将种子 ISO 上传到托管虚拟机的节点的 ISO 映像存储(例如,在 ISO Images 部分的 local 存储中)。
- 将 vSocket QCOW2 映像上传到同一节点上的存储的 Import 部分。 存储必须启用 Import 内容类型。
为每个 vSocket 虚拟机使用 QCOW2 映像的干净副本。
截图占位符——将种子 ISO 上传到 Proxmox 存储。
截图占位符——上传或导入 QCOW2 映像。
步骤 4 – 创建虚拟机
在 Proxmox 网页界面中,点击“创建虚拟机”并按以下设置配置向导的选项卡。
要创建 vSocket 虚拟机:
-
在 常规 选项卡中,选择 节点,然后输入 vSocket 虚拟机的 虚拟机 ID 和 名称。 保持添加到HA复选框未勾选(请参见高可用性(HA)部署)。
-
在 操作系统 选项卡:
- 选择 使用 CD/DVD 光盘映像文件(iso)。
- 对于 存储 和 ISO 映像,请选择您为此 vSocket 创建的种子 ISO。
- 对于 访客操作系统,保留默认值(类型:Linux,版本:6.x - 2.6 Kernel)。
截图占位符——在操作系统选项卡中选择 cloud-init 种子 ISO。
-
在 系统 选项卡:
- 对于 BIOS,选择 OVMF (UEFI)。
- 清除 添加 EFI 磁盘 复选框。 vSocket 映像不需要 EFI 磁盘。
- 对于 机器,选择 q35。
- 保留默认 SCSI 控制器(VirtIO SCSI 单一)。
截图占位符——选择的 UEFI 固件和已清除的“添加 EFI 磁盘”。
-
在 磁盘 选项卡:
- 删除默认磁盘(virtio0)。
- 点击 导入,然后在 选择映像 中选择 vSocket QCOW2 映像。
- 对于 总线/设备,选择 VirtIO 块,并选择磁盘的 目标存储。
截图占位符——删除默认磁盘。
截图占位符——将 QCOW2 映像导入为虚拟机磁盘。
-
在 CPU 选项卡中,配置至少 2 个 核心,并选择 host 作为 类型。
截图占位符——CPU 核心和主机 CPU 类型。
-
在 内存 选项卡中,输入至少 4096 MB。
-
在 网络 选项卡中,配置第一个网络设备(net0)。 此接口是 vSocket 的 WAN1 接口:
- 对于 桥接,选择具有互联网连接的桥接。
- 对于 模型,选择 VirtIO(半虚拟化)。
- 可选地,清除 防火墙 复选框。
-
在 确认 选项卡中,确保 创建后启动未选中,然后单击 完成。
重要提示! 在虚拟机完全配置之前不要启动它。 cloud-init 种子 ISO 仅在首次启动时读取。
步骤 5 – 添加串口和剩余的接口
创建虚拟机后,从虚拟机的 硬件 部分添加其余硬件。
要完成虚拟机硬件配置:
- 点击 添加 > 串行端口 添加串行端口 0(
serial0)。 串行端口用于访问 vSocket 控制台。 - 点击 添加 > 网络设备,并添加 LAN1 接口:
- 对于 桥接,选择局域网桥接。
- 对于 模型,选择 VirtIO(半虚拟化)。
- 可选地,输入 VLAN 标签 以分隔使用同一桥接的局域网段。
- 对每个附加接口(管理或 WAN2)重复上一步,最多总计 4 个接口。
网络设备根据其顺序映射到 vSocket 接口:net0 是 WAN1,net1 是 LAN1,后面的设备是可选接口。
截图占位符——添加串行端口。
截图占位符——添加额外的网络设备。
截图占位符——vSocket 虚拟机的完整硬件列表。
步骤 6 –(推荐)拍摄快照
在首次启动前,在虚拟机的 快照 部分点击 拍摄快照 并创建初始状态的快照(例如,pristine)。 如果首次引导配置不正确,您可以恢复到此快照,而不是重新创建虚拟机。
截图占位符——拍摄初始虚拟机状态的快照。
步骤 7 – 启动虚拟机
启动虚拟机。 在首次启动时,vSocket 从种子 ISO 读取配置并开始注册到 Cato 云。
将 vSocket 连接到 CMA
CMA 自动检测 vSocket,并使用序列号(来自 cloud-init 用户数据)将其连接到站点。 要注册,WAN1 接口必须具备互联网连接和公用 DNS 访问,因此它可以到达 Cato 云和 CMA。
- 如果 WAN1 通过 DHCP 接收到动态 IP 地址,vSocket 就会自动开始注册到 Cato 云。
- 如果 DHCP 不可用,则在
cloud-inituser-data中为 WAN1 配置静态 IP 地址(参见步骤 2)。 - 默认情况下,WAN2 接口是禁用的,vSocket 仅使用 WAN1 注册。
要跟踪引导过程和注册,请使用 Proxmox 网页界面中虚拟机的 控制台 部分。 vSocket将其启动输出发送到序列控制台,因此要查看该输出,需要将硬件 > 显示 > 图形卡设置为串行终端0。
高可用性 (HA) 部署
HA的行为类似于物理HA对,在两个KVM vSockets之间使用VRRP。 这与Proxmox集群HA功能(添加到HA选项)是分开的,该功能会在另一个节点上重新启动VM,并且不用于vSocket HA。
- 部署两个vSocket VM,每个都使用自己副本的QCOW2映像和自己的种子ISO(每个都带有主或次插座的序列号)。
- 两个VM的LAN接口必须在同一个广播域(同一个桥接和VLAN标签)中,以便VRRP可以运行。 如果VM在不同的Proxmox节点上,LAN桥接器必须连接到相同的2层段。
- 在CMA中将次要插座添加到站点。 这两个成员组成HA组,交换健康/状态,并根据产品HA设计进行故障转移。
- HA的健康和状态在CMA中可见。
部署额外的vSocket VM
要在同一Proxmox主机或集群上运行多个vSocket VM:
- 为每个VM导入干净的QCOW2映像副本。
- 生成一个带有相关站点序列号的新种子ISO。
- 使用唯一的VM名称和VM ID。
- 在需要隔离的情况下,使用单独的LAN桥接器或VLAN标签。
更改vSocket VM配置
如果新配置使用支持的值,可以更改一些VM设置。 重启vSocket VM以使更改生效。
可以更改以下VM设置:
- 中央处理器使用率
- 内存
- 联网,例如添加或移除网络接口
故障排除
VM 启动,但 vSocket 未注册
- 验证种子 ISO 是否作为 CD-ROM 附加。
- 验证 ISO 是否包含
user-data文件。 - 验证
serial值是否与 CMA 中站点的序列号匹配。 - 验证 WAN1 是否具有互联网访问权限和访问公共 DNS 服务的权限。
- 验证第一个网络设备 (net0) 是否连接到预定的 WAN 桥。
对 cloud-init 配置的更改将被忽略
vSocket 引导程序仅在首次启动时运行。 如果在 VM 初始化后更改 user-data ,更改将不会应用于现有的启动磁盘。 恢复到初始状态的快照,或使用 QCOW2 图像的干净副本和新的种子 ISO 重新创建 VM。
没有控制台输出
- 验证串口 (
serial0) 是否已添加到 VM 中。 - 要在 Web UI 控制台中查看串口输出,请将 硬件 > 显示 > 显卡 设置为 串口终端 0。
网络未按预期运行
- 验证每个网络设备连接到的桥接。
- 验证 VM 配置中的网络设备顺序 (net0 是 WAN1,net1 是 LAN1)。
- 验证
user-data文件中的[[network]]部分是否按预期使用 DHCP 或静态设置。