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

节点管理 ​

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

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

实例数量与流量排行 ​

从 0.4.9 起,管理面板的「节点管理」列表显示每个节点的实例数量,包含运行、停止等状态的未删除实例。点击数量可进入该节点的实例列表,节点详情还提供各状态的数量分布。

点击节点列表的流量排行入口,或在节点详情的「实例」页面点击「流量排行」,即可按已用流量从高到低查看实例,同时显示流量配额和所属用户。排行按实例统计,不会将同一用户的多台实例合并。

已用流量统计本月用量;手动重置后从重置点计算,数据随系统采集更新。

添加节点 ​

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

字段说明
名称节点的显示名称,如「香港节点 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。

编辑节点时,除以上字段外还可以设置:

字段说明
网络名称节点使用的网桥名称(初始化时自动检测)
存储池节点使用的存储池名称
上联网卡连接公网的物理网卡名称(如 ens160),用于 IPv6 routed 模式。设置后,IPv6 IP 池的地址会通过宿主机直接路由,NAT 模式和公网模式均可使用

设置上联网卡时,系统会自动检测节点上的物理网卡供选择;节点不可达时也可手动输入。如果节点已有 IPv6 池,保存后会自动下发 IPv6 转发和 NDP 代理配置到宿主机。

测试连接 ​

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

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

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

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

初始化节点 ​

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

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

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

从 0.4.6 起,已安装运行环境的节点也会检查并补齐服务自启配置。在使用 systemd 的节点上,服务启动默认等待最多 180 秒;启动失败或超时后,任务日志会输出服务状态和诊断信息。初始化任务整体超时为 30 分钟,超时后会结束任务并报告失败。

节点服务器重启后,默认会恢复重启前正在运行的实例,原本已停止的实例保持停止。如果您为实例单独设置了启动策略,则以该策略为准。初始化不会强制修改实例的启动策略。

已有节点升级

升级 Novaix 面板不会自动升级节点的运行环境。已有节点可重新执行初始化以补齐服务自启和依赖;如果节点运行环境版本较旧,需要另行升级才能使用实例防火墙等依赖节点能力的功能。

操作系统要求

初始化要求节点服务器运行受支持的操作系统,不满足要求的系统(如 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 Linux、Alpine、Void Linux、Gentoo

详见环境要求 — 节点要求。

WARNING

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

节点终端 ​

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

DANGER

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

同步资源 ​

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

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

TIP

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

拉取镜像 ​

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

管理节点资源 ​

在节点详情页面,您可以管理镜像缓存、配置文件和自定义存储卷。执行创建、修改或删除操作时,节点需处于在线状态。

清理镜像缓存 ​

在「镜像」页面点击镜像的删除按钮,可以清理该节点上的镜像缓存,不会删除全局镜像模板或已有实例。关联模板配置了远程源时,后续创建或重装实例会重新拉取镜像。

以下情况会阻止清理:

  • 依赖本地副本:镜像模板或实例仅依赖该节点上的本地镜像源,请先处理关联模板或实例的镜像源
  • 存在关联任务:创建、重装、分发等任务正在使用该镜像,请等待相关任务完成后再清理;参数异常的镜像任务需先处理

管理配置文件 ​

在「配置文件」页面可以创建、编辑和删除配置文件。已被实例使用或引用的配置文件,只允许修改描述,不能修改配置、设备或删除。删除前还需解除适用于该节点的套餐引用,默认配置文件 default 不允许删除。

扩容存储池 ​

从 0.4.9 起,新节点初始化和文件存储池扩容使用同一套容量规则:先扣除同一运行环境存储目录中、同分区池文件尚未占用的承诺容量,再为宿主保留剩余空间的 20%。最低预留按所在分区总容量的 10% 计算,不低于 2 GiB、不高于 10 GiB,最终取较大的预留值。

例如,20 GiB 分区剩余 13 GiB,且没有其他池待占用空间时,宿主预留 2.6 GiB,新池可分配 10 GiB。容量向下取整为 GiB,不足 5 GiB 时会停止创建,并显示分区可用、池待占用、宿主预留及可分配容量。目录池和原生文件系统使用原有容量方式。

已有池不会因升级或重新初始化自动扩容。在节点详情的「存储」页面,点击对应池的「扩容」按钮:

  1. 查看当前容量、宿主可用空间、池待占用空间及宿主预留空间。
  2. 输入目标容量,必须大于当前容量且不超过页面显示的上限。
  3. 点击「确认扩容」。系统会再次检查容量,完成后核实实际存储容量并刷新节点资源。

此入口仅支持独立节点中能识别的、由节点管理的文件存储池。目录池、独立磁盘、外部存储及集群存储需使用对应的扩容方式,页面会说明原因。扩容保留池内实例和数据,不支持缩容;它不会改变实例自己的磁盘配额。

WARNING

宿主显示有空闲空间,不代表这些空间都可用于扩容:稀疏池文件中尚未写入的数据仍需要预留。如果扩容后核实失败,请先刷新并检查节点实际状态,不要尝试缩小池文件回滚。容量检查不覆盖其他运行环境或人工并发调整,请避免同时从多个入口修改存储。

管理自定义存储卷 ​

在「存储」页面选择存储池后,可以创建或删除自定义存储卷。正在使用或已被实例设备引用的卷不能删除,请先解除关联。

WARNING

删除自定义存储卷会删除卷内数据,请在操作前确认已完成必要备份。

资源超开 ​

默认情况下,节点的可分配资源等于物理资源总量——一台 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 或 NAT 资源
  • 现有实例继续运行,不受影响
  • 可以随时点击「恢复」将节点重新上线(系统会同步检测节点可达性)

实例处置 ​

停用节点的详情页会显示实例处置面板,列出每个实例的迁移可行性:

  • 可迁移:没有网络资源绑定限制的实例,可以直接选择目标节点进行迁移
  • 需退役迁移:使用了 NAT 端口转发、独享 IP 或节点绑定 IP 池的实例,无法直接迁移。系统提供「退役迁移」功能,将实例数据复制到目标节点并自动重新分配 IP 和端口(原 IP 和端口不保留)
  • 快照备份:所有实例都可以创建本地快照用于回滚保护

TIP

退役迁移会保留实例的全部磁盘数据,但 IP 地址和 NAT 端口将在目标节点重新分配。自定义端口转发规则会在目标节点重建,如与目标已有规则冲突,系统会自动重新分配公网端口。

WARNING

  • 所有实例处理完毕后才能删除节点。停用节点存在未处理的实例时,即使选择「强制删除」也会被拒绝。
  • 退役迁移需要实例处于停止状态。迁移失败时,原实例和所有资源保持不变,可以安全重试。

网络向导 ​

节点初始化完成后,在节点详情的「网络」Tab 中可以快速配置网络。系统会自动检测节点上的网桥和物理网卡,根据您选择的模式完成配置。

NAT 模式 ​

适用于共享 IP 出网的场景。系统会自动:

  1. 配置网桥的 DHCP 和 NAT(如未开启)
  2. 创建共享 IP(如提供了公网地址)
  3. 设置节点的默认网络

公网模式 ​

适用于实例直接使用公网 IP 的场景。需要填写机房分配的网段(CIDR 格式)和网关地址,系统会:

  1. 创建 IP 池并绑定到节点
  2. 如果选择了上联网卡:
    • 空闲网卡(无地址):直接桥接到网桥
    • 已有管理地址的网卡:通过路由模式接入(IPv4 转发 + Proxy ARP + IPv6 转发 + NDP 代理),保留管理连接不中断
  3. 设置节点的默认网络和上联网卡

配置上联网卡后,IPv6 IP 池会自动使用 routed NIC 模式——每个实例的 IPv6 通过宿主机直接路由,避免网桥与宿主机共用 /64 子网时的 NDP 冲突。这是 IDC 场景下 IPv6 的标准做法。

创建 IP 池后,还需要在「IP 池管理」中生成具体的 IP 地址。

同步 IPv6 NIC 模式 ​

如果先创建了实例、后配置了上联网卡,已有实例的 IPv6 网卡仍为 bridged 模式。点击网络区域的「同步 IPv6 NIC」按钮,系统会将这些实例的 IPv6 网卡转换为 routed 模式,同时保留 IPv4 NAT 的桥接网卡不受影响。

运行中的实例需要重启后新网卡配置才会生效,同步结果会提示需要重启的实例数量。

TIP

  • 同一节点重复配置时,如果已有匹配的共享 IP 或 IP 池,系统会自动复用而非重复创建。
  • 已配置的网络可以随时重新配置,切换模式时系统会提示可能的影响。

删除节点 ​

如果节点上还有关联的实例或共享 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)。如果安装失败,系统会将监控标记为未启用,您可以在节点详情页手动启用。

从 0.4.9 起,启用监控或修改监控端口后,系统会等待采集接口实际就绪,最多等待 30 秒。配置未变化时,重复启用不会重启正在运行的服务。安装失败或服务未就绪时,页面会提示具体故障类别,后台日志会记录安装输出和服务诊断。

如果启用失败,可在节点服务器上检查服务状态和最近日志:

bash
sudo systemctl status node_exporter --no-pager -l
sudo journalctl -u node_exporter -n 30 --no-pager

同时在管理面板服务器上查看 journalctl -u novaix,核对对应节点的监控配置日志。确认服务按设置的端口监听节点本机后,再重新启用;无需向公网开放监控端口。

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

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

TIP

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