Skip to content
Novaix 目前处于早期开发阶段,功能尚未稳定,可能存在严重的 Bug。请勿用于生产环境。

节点管理

节点是 Novaix 管理的基础单元,每个节点对应一台用于运行容器/虚拟机的服务器。Novaix 通过 API 连接这些节点,实现对虚拟机和容器的集中管理。

添加节点后,您需要手动点击「初始化」,系统会通过 SSH 自动完成运行环境的安装和配置。

添加节点

在管理面板的「节点管理」页面,点击「添加节点」按钮,填写以下信息:

字段说明
名称节点的显示名称,如「香港节点 1」
地址节点服务器的 IP 地址或域名
区域从已创建的区域中选择(可选),用于下单分区、仪表盘地图展示等
服务端口管理服务端口,默认 8443
SSH 端口SSH 连接端口,默认 22
SSH 用户SSH 登录用户名,默认 root
SSH 认证方式密码认证或密钥认证(必填)
SSH 密码/私钥根据认证方式填写对应的密码或 SSH 私钥
监控端口监控采集程序的监听端口,默认 9100

WARNING

  • 地址填写:如果 Novaix 管理面板和节点不在同一内网,请填写节点的公网 IP。如果在同一内网,建议使用内网 IP 以减少延迟和流量费用。
  • 端口开放:请确保节点服务器的防火墙(iptables / firewalld)和云服务商的安全组都已放行服务端口(默认 8443)。只放行防火墙而忘了安全组是最常见的连接失败原因。
  • 证书安全:客户端证书和密钥会使用 AES-256 加密后存储在数据库中,请确保您在 config.yaml 中设置了 security.encryption_key

测试连接

添加或编辑节点时,可以点击「测试连接」按钮验证连通性。系统会并行测试:

  • SSH 连接:使用提供的 SSH 凭据连接节点并执行测试命令
  • 服务端连接:使用 TLS 证书连接节点的管理 API(仅已初始化的节点)

测试结果会显示每项的连通状态和响应延迟。新建节点由于尚未初始化,只会测试 SSH 连接。

在节点列表的操作菜单中也可以对已保存的节点执行「测试连接」。编辑节点时,测试使用的是当前表单中的值(而非已保存的配置),方便在修改连接参数后先验证再保存。

初始化节点

节点添加后需要进行初始化操作,系统会通过 SSH 自动完成运行环境的安装和配置,包括:

  • 检测操作系统并安装容器/虚拟机管理服务
  • 启用必要的系统服务
  • 安装虚拟化组件(QEMU)
  • 安装并配置存储后端(优先 ZFS,其次 btrfs/LVM,最后降级 dir)
  • 生成 TLS 证书并配置远程管理 API
  • 检测系统架构、网桥和存储池
  • 安装并启动监控采集程序(Node Exporter)

初始化是一个异步任务,您可以在任务列表中查看进度和日志。初始化完成后,系统会自动同步节点资源信息。

操作系统要求

初始化要求节点服务器运行受支持的操作系统,不满足要求的系统(如 Ubuntu 18.04)将无法完成初始化。支持的操作系统及最低版本:

  • Ubuntu 22.04+(推荐 24.04 LTS)
  • Debian 11+
  • CentOS / RHEL / Rocky Linux / AlmaLinux 9+
  • Fedora 39+
  • openSUSE Leap 15.6+ / Tumbleweed
  • Arch LinuxAlpineVoid LinuxGentoo

详见环境要求 — 节点要求

WARNING

如果您的节点上已有运行中的实例,初始化不会影响这些实例。初始化完成后,您可以使用「同步」功能将已有实例导入到 Novaix 中。

节点终端

管理员可以直接在浏览器中打开节点的终端(Shell),无需额外 SSH 登录。在节点详情页面点击「终端」按钮即可访问。

DANGER

节点终端拥有节点服务器的完整 Shell 权限,等同于 SSH 登录。请不要在公共场合使用此功能,确保只有受信任的管理员才有面板访问权限。

同步资源

如果您直接在节点服务器上进行了操作(如手动创建了实例),可以使用「同步」功能将节点上的资源状态同步到 Novaix 数据库中。

同步操作还会检测节点的虚拟机(QEMU)支持状态。如果节点不支持虚拟机,在创建虚拟机类型的实例时会提前拦截并给出明确提示,避免异步任务执行到一半才失败。

TIP

同步操作只会将节点上的实际状态同步到 Novaix 数据库中,不会修改节点上的任何资源。如果您在 Novaix 外手动删除了实例,同步后该实例也会从 Novaix 中移除。

拉取镜像

您可以从远程镜像服务器(如 images.linuxcontainers.org)拉取镜像到指定节点的本地缓存中。这不会在 Novaix 的全局镜像管理中创建记录,主要用于提前预热节点上的镜像缓存,加速后续实例创建。

资源超开

默认情况下,节点的可分配资源等于物理资源总量——一台 32 核服务器只能分配 32 核给实例。在 IDC 场景中,用户实际使用的资源通常远低于分配量,因此可以通过超开来提高资源利用率。

在节点编辑页面,可以独立设置 CPU、内存、磁盘的超开百分比:

字段说明默认值建议范围
CPU 超开0% = 不超开,100% = 可多卖一倍0%(不超开)100%~700%
内存超开0% = 不超开,100% = 可多卖一倍0%(不超开)0%~100%
磁盘超开0% = 不超开,100% = 可多卖一倍0%(不超开)0%~50%

例如,一台 32 核 / 64GB 内存的服务器,设置 CPU 超开 300%、内存超开 50% 后,可分配 128 核 CPU 和 96GB 内存。当已分配资源超过超开后的上限时,才会提示「资源不足」。

WARNING

超开意味着实际分配给实例的资源总和超过物理资源。CPU 超开通常没有问题(操作系统会自动调度),但内存超开需要谨慎——如果所有实例同时满负载运行,可能导致 OOM(Out of Memory)。磁盘超开则要求使用精简置备(thin provisioning)的存储后端。

动态内存

开启「动态内存」后,容器实例的内存限制会设为软限制(soft enforce):当宿主机有空闲内存时,容器可以使用超出配置限制的内存;当宿主机内存紧张时,内核会回收超额部分。

TIP

  • 此开关仅对容器实例生效(设置 limits.memory.enforce=soft)。虚拟机天然支持动态内存——通过内存热插拔(hotplug)和气球设备(balloon)机制,调整 limits.memory 即可自动增减内存,无需额外开关。
  • 动态内存与内存超开搭配使用效果最佳:超开允许多卖内存,动态内存让实际使用更灵活。
  • 修改此设置后,新创建的容器实例会自动应用,已有实例需要通过编辑实例触发配置同步。

KSM 内存合并

KSM(Kernel Same-page Merging,内核同页合并)是 Linux 内核提供的内存优化技术。它会扫描宿主机上所有虚拟机的内存页,将内容相同的页面合并为一份,从而节省物理内存。例如,10 台虚拟机都运行 Ubuntu,它们内核中相同的内存页只需保留一份。

Novaix 会在节点详情的「概览」页面展示当前节点的 KSM 状态,包括是否启用、共享页面数和节省的内存量。

启用 KSM

KSM 是宿主机内核级功能,需要在节点服务器上手动开启:

bash
# 启用 KSM
echo 1 > /sys/kernel/mm/ksm/run

# 可选:调整扫描参数
echo 1000 > /sys/kernel/mm/ksm/pages_to_scan    # 每次扫描的页面数
echo 20 > /sys/kernel/mm/ksm/sleep_millisecs     # 两次扫描之间的休眠时间(毫秒)

如需开机自动启用,可将上述命令添加到 /etc/rc.local 或创建 systemd 服务。

注意事项

  • 仅对虚拟机有效:KSM 只能合并 KVM/QEMU 虚拟机的内存页,对容器实例无效。
  • CPU 开销:KSM 会持续扫描和比对内存页,带来一定的 CPU 开销。如果节点 CPU 资源紧张,建议谨慎使用。
  • 同质化环境效果最佳:相同操作系统、相同软件栈的虚拟机越多,内存合并率越高。异构环境下收益有限。
  • 需要充足 Swap:开启 KSM 超售内存时,建议配置足够的 Swap 空间作为安全缓冲。
  • 与超开搭配使用:KSM 从物理层面减少实际内存占用,资源超开从管理层面允许多卖内存,两者搭配效果更佳。

节点组

多个节点可以组织成节点组,实现集群管理、热迁移和 HA 自动疏散。详见节点组管理

维护模式

当您需要对节点进行计划内维护时,可以将节点设为维护模式。维护模式下节点不会接收新的实例创建任务,如果节点组启用了 HA,系统会自动将该节点上的实例疏散到其他健康节点。

维护完成后,点击「退出维护」恢复节点的正常状态。详见节点组管理

删除节点

如果节点上还有关联的实例或共享 IP,系统会拒绝删除操作。请先将该节点上的实例全部迁移或删除,再删除节点。如果该节点是带 VPC 节点组中的最后一个在线节点,删除和进入维护操作也会被阻止,以保护 VPC 网络正常运行。

当节点不可达时,您可以选择强制删除。强制删除会级联清理该节点下所有实例和共享 IP 的数据库记录,但不会尝试连接节点进行远端清理。节点恢复后如需彻底清理,请手动处理服务器上的相关配置。

WARNING

删除节点只会将节点从 Novaix 的管理中移除,不会影响节点服务器上的运行环境。强制删除时,关联实例的 IP 会被释放回 IP 池,端口分配会被清理,但节点服务器上的实际资源需手动处理。

监控数据

使用 systemd 的节点(Ubuntu、Debian、CentOS 等主流发行版)在初始化时会自动安装并启动监控采集程序(Node Exporter)。非 systemd 系统(如 Alpine、Void Linux、Chimera Linux)需手动安装,详见 Node Exporter 文档

Novaix 通过该程序定期采集节点的资源使用数据(CPU、内存、磁盘、网络),并在管理面板的仪表盘和节点详情页面展示。

监控采集程序默认监听 9100 端口(仅本机),您可以在添加或编辑节点时自定义「监控端口」(范围 1024-65535)。如果安装失败,系统会将监控标记为未启用,您可以在节点详情页手动启用。

采集间隔和数据保留时间可以在 config.yaml 中配置:

yaml
collector:
  interval: 60    # 采集间隔(秒)
  retention: 720  # 数据保留时间(小时,默认 30 天)
  timeout: 10     # 单次采集超时(秒)

TIP

  • Novaix 通过 SSH 隧道采集监控数据,监控端口无需对外开放,仅需在节点本机可访问即可。
  • 如果监控采集程序未安装或未运行,节点层面的监控图表将无数据显示,但不影响实例层面的监控(实例监控数据直接从运行环境 API 获取)。
  • 监控数据保留时间设得过长会占用更多数据库空间。对于 SQLite 用户,建议 retention 不超过 720 小时(30 天),避免数据库文件过大影响性能。