虚拟机 / 云端安装
本文仅整理在非物理硬件环境,即 VM(VMware / Hyper-V / KVM / Proxmox)或 公有云(AWS EC2 / Azure VM / GCP)上部署网关时的差异点。新装的基本流程请参见 快速安装(2026.05+ 容器版)。H/W 完整安装 仅供 legacy native 主机的运维参考。
在 VM 中使用 Docker
2026.05+ 容器模式在 VM 内同样可正常运行 —— Docker 基于 cgroup/namespace 而非嵌套虚拟化,因此在 VM 上也能获得与 native 相当的性能。若 cgroup MemoryMax=12G 超过 VM 的内存上限,则需要调整(通过 systemd drop-in,如 MemoryMax=6G 等)。
1. 规格要求
| 等级 | vCPU | RAM | 磁盘 | 备注 |
|---|---|---|---|---|
| 小(≤ 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 会延迟,并以报警形式表现出来。建议独占分配。
2. 磁盘配置 —— 推荐
将 /opt 与 /data1 分离到独立磁盘(或独立 LVM 卷)后:
- 升级时即使替换
/opt/kopens,也能保留/data1/pp-data(用户 flows / Cassandra / 备份) - 分离磁盘 IO 负载(Cassandra commitlog vs 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 reservation(保障 Cassandra 稳定性) |
| 启用 Memory reservation —— 按满配预留(禁用内存气球) |
添加 tools.guestlib.enableHostInfo = TRUE —— 与宿主机时间同步 |
4. KVM / Proxmox
| 推荐 |
|---|
cpu host 模式(passthrough) |
virtio 网卡 + virtio-blk / virtio-scsi |
安装 qemu-guest-agent(客户机健康检查) |
| 禁用 Memory ballooning(保障 Cassandra heap 稳定性) |
磁盘缓存模式 = none(延迟 ↓)或 writeback(吞吐量 ↑) |
5. Hyper-V
| 推荐 |
|---|
| Generation 2(UEFI) |
| 禁用 Dynamic Memory(Cassandra heap 波动 → 触发 swap) |
| Integration Services 最新版本(时间同步) |
虚拟网卡的 Adapter Type = Synthetic(非 Legacy) |
6. 公有云
6.1 AWS EC2
| 项目 | 推荐 |
|---|---|
| 实例 | m5.xlarge(4 vCPU / 16 GB)—— 中小规模 / m5.2xlarge(8/32)—— 生产 |
| AMI | Amazon Linux 2(优先推荐 Fedora 38,但 RHEL 系兼容) |
| 磁盘 | gp3(/opt 100 GB)、gp3(/data1 1 TB+)—— io1/io2 用于 Cassandra commitlog |
| Security Group | inbound 80 / 443 / 22(仅限管理员 IP),MQTT 1883 / OPC-UA 12000(按需 —— 通常在 VPC 内部) |
| EFA / 增强联网 | enabled(降低延迟) |
| Placement | Cluster placement group(大规模) |
通过 AWS PrivateLink / VPC Peering 与 本地 PLC 网络 连接。
6.2 Azure VM
| 项目 | 推荐 |
|---|---|
| 规格 | D4s_v5(4 vCPU / 16 GB)—— 中小规模 / D8s_v5 —— 生产 |
| 磁盘 | Premium SSD(P30 / P40)用于 /data1 |
| Accelerated Networking | enabled |
| ExpressRoute / VPN | 与本地 PLC 连接 |
6.3 GCP
| 项目 | 推荐 |
|---|---|
| 机型 | e2-standard-4 —— 中小规模 / n2-standard-8 —— 生产 |
| 磁盘 | pd-ssd(保障 Cassandra commitlog 1k 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 频繁崩溃 | 启用了内存 ballooning。改为固定内存 |
| MQTT keepalive 频繁超时 | 云端 NAT idle timeout 过短。将 app.properties 的 keepalive 由 60 改为 30 秒 |
| 启动后时间显示为 1970 年 | 未启用虚拟时间同步。安装 VMware tools / qemu-guest-agent |
| 磁盘 IO 缓慢 | 使用了 gp2 / standard HDD。改用 gp3 或 SSD |
| OPC-UA 证书每次都 invalid | 虚拟主机名变更(DHCP)。在证书 SAN 中包含所有可能的 IP/主机名 |
| 网络吞吐量不足 | 未启用 virtio / VMXNET3 / Accelerated Networking |
10. 了解更多
- 标准安装:快速安装
- 生产验收标准:生产验收标准
- legacy native:(legacy) H/W 完整安装
- 隔离网络:离线 / 隔离网络安装
- 网络拓扑:网络配置(NIC 布置)
- 安装后检查清单:安装后即时检查清单