虚拟机 · 云端安装
下面整理了在物理硬件之外的 VM(VMware / Hyper-V / KVM / Proxmox)或 公有云(AWS EC2 / Azure VM / GCP)环境中安装网关时的差异要点。基本安装流程请参考 在线安装。
在 VM 中使用 Docker
2026.05 及以后的容器模式在 VM 内部同样可以正常工作 —— Docker 基于 cgroup/namespace 而非嵌套虚拟化,
因此它在 VM 上的性能与原生环境相同。如果 cgroup MemoryMax=12G 超过了 VM 的内存上限,
则需要调整(可通过 systemd drop-in 实现,参考 MemoryMax=6G 等)。
1. 规格要求
| 等级 | vCPU | 内存 | 磁盘 | 备注 |
|---|---|---|---|---|
| 小(≤ 1k 标签) | 4 vCPU | 8 GB | 100 GB SSD | 开发/测试 |
| 中(1k–10k 标签) | 8 vCPU | 16 GB | 256 GB SSD + 1 TB | 生产标准 |
| 大(10k+ 标签) | 16 vCPU | 32 GB | 512 GB NVMe + 2 TB | 大规模 |
注意 CPU 超分配 —— 如果宿主机 CPU 超分配比例超过 1:4,Cassandra 的 commitlog flush 会被延迟,并以报警的形式出现。建议设置 CPU 预留(dedicate)。
2. 磁盘配置 —— 推荐做法
将 /opt 和 /data1 分离到独立磁盘(或独立的 LVM 卷)上,可以:
- 升级时替换
/opt/kopens,但保留/data1/pp-data(用户 flows / Cassandra / 备份) - 隔离磁盘 IO 负载(Cassandra commitlog 与 sstable)
/dev/sda → / (OS) ~ 50 GB
/dev/sdb → /opt ~ 100 GB SSD (게이트웨이 코드)
/dev/sdc → /data1 ~ 1 TB+ (시계열 데이터)
3. VMware vSphere
| 推荐配置 |
|---|
| 虚拟硬件版本 ≥ 14(ESXi 6.7+) |
| VMXNET3 网卡(比 Intel E1000 更快) |
| paravirtual SCSI(比 LSI Logic 处理能力更强) |
| 启用 CPU 预留(保障 Cassandra 稳定性) |
| 启用内存预留 —— 固定大小(禁用内存气球) |
安装 tools.guestlib.enableHostInfo = TRUE —— 进行宿主机时间同步 |
4. KVM / Proxmox
| 推荐配置 |
|---|
使用 cpu host 模式(直通) |
使用 virtio 网卡 + virtio-blk / virtio-scsi |
安装 qemu-guest-agent(客户机健康检查) |
| 禁用 内存气泡(保障 Cassandra 堆内存稳定性) |
磁盘缓存模式 = none(降低延迟)或 writeback(提升吞吐量) |
5. Hyper-V
| 推荐配置 |
|---|
| 第 2 代(UEFI) |
| 禁用 动态内存(Cassandra 堆内存可变 → 引发交换) |
| 使用最新版本的集成服务(时间同步) |
虚拟网卡的 适配器类型 = Synthetic(而非 Legacy) |
6. 公有云
6.1 AWS EC2
| 项目 | 推荐配置 |
|---|---|
| 实例类型 | m5.xlarge(4 vCPU / 16 GB)—— 中小型 / m5.2xlarge(8/32)—— 生产环境 |
| AMI | Amazon Linux 2(出厂镜像基于 Fedora 系列,但与 RHEL 系列兼容) |
| 磁盘 | gp3(/opt 100 GB),gp3(/data1 1 TB+)—— io1/io2 用于 Cassandra commitlog |
| 安全组 | 入站 80 / 443 / 22(仅管理员 IP),MQTT 1883 / OPC-UA 12000(如需 —— 通常限于 VPC 内部) |
| EFA / 增强网络 | 启用(降低延迟) |
| 放置策略 | 集群放置组(大规模场景) |
通过 AWS PrivateLink / VPC Peering 与 本地 PLC 网络 连接。
6.2 Azure VM
| 项目 | 推荐配置 |
|---|---|
| 规格 | D4s_v5(4 vCPU / 16 GB)—— 中小型 / D8s_v5 —— 生产环境 |
| 磁盘 | 高级 SSD(P30 / P40)用于 /data1 |
| 加速网络 | 启用 |
| ExpressRoute / VPN | 与本地 PLC 网络连接 |
6.3 GCP
| 项目 | 推荐配置 |
|---|---|
| 机型 | e2-standard-4 —— 中小型 / n2-standard-8 —— 生产环境 |
| 磁盘 | pd-ssd(确保 Cassandra commitlog 1000 IOPS) |
| Cloud Interconnect / VPN | 本地连接 |
7. 云端-本地 PLC 网络连接
PLC 通常位于本地(工厂内部),如果网关部署在云端,则无法直接通信。有两种模式:
模式 A —— 云端网关 + 本地网关
[PLC] ─── [온프레 게이트웨이] ─── (Sparkplug B / MQTT) ─── [클라우드 게이트웨이] ─── [상위 플랫폼]
本地网关负责 PLC 数据采集并发布 Sparkplug,云端网关负责接收/集成。推荐模式。
模式 B —— 通过 VPN / SD-WAN 直接访问 PLC 网络
[PLC] ─── [VPN 게이트웨이] ──VPN── [클라우드 게이트웨이] ─── [상위 플랫폼]
延迟增加 + 线路成本增加。仅建议用于 1-2 个小站点。
8. 启动自动化(cloud-init)
在 VM / 云环境中,实例启动时自动安装 —— 以下为 cloud-init user-data 示例:
#cloud-config
package_update: true
write_files:
- path: /root/pp-edge-install.env
owner: root:root
permissions: '0600'
content: |
export EDGE_ID=EDGE_VM_001
export SITE_ID=SITE_00001
export SERVER_HOST=192.168.0.41
export SERVER_API_KEY=<platform-api-key>
runcmd:
- mkdir -p /data1 /opt/kopens
- . /root/pp-edge-install.env && bash < <(curl -fsSL https://product.kopens.io/plantpulse-edge/install.sh)
- bash /opt/kopens/install/bin/health.sh
在生产环境中,应在 cloud-init 中显式指定 固定 edge.id / 固定 site.id。
9. 常见误区(VM / 云环境特有)
| 症状 | 原因 / 解决方法 |
|---|---|
| Cassandra 频繁宕机 | 内存气球机制处于启用状态。改为固定内存配置 |
| MQTT keepalive 频繁超时 | 云 NAT 空闲超时时间较短。将 app.properties 的 keepalive 从 60 秒改为 30 秒 |
| 启动后时间显示为 1970 年 | 虚拟时间同步未启用。安装 VMware tools / qemu-guest-agent |
| 磁盘 IO 性能差 | 使用了 gp2 / 标准 HDD。改用 gp3 或 SSD |
| OPC-UA 证书频繁无效 | 虚拟主机名变化(DHCP)。在证书 SAN 中包含所有可能的 IP / 主机名 |
| 网络吞吐量不足 | 未启用 virtio / VMXNET3 / 加速网络 |