节点管理
节点是 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 时会停止创建,并显示分区可用、池待占用、宿主预留及可分配容量。目录池和原生文件系统使用原有容量方式。
已有池不会因升级或重新初始化自动扩容。在节点详情的「存储」页面,点击对应池的「扩容」按钮:
- 查看当前容量、宿主可用空间、池待占用空间及宿主预留空间。
- 输入目标容量,必须大于当前容量且不超过页面显示的上限。
- 点击「确认扩容」。系统会再次检查容量,完成后核实实际存储容量并刷新节点资源。
此入口仅支持独立节点中能识别的、由节点管理的文件存储池。目录池、独立磁盘、外部存储及集群存储需使用对应的扩容方式,页面会说明原因。扩容保留池内实例和数据,不支持缩容;它不会改变实例自己的磁盘配额。
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 是宿主机内核级功能,需要在节点服务器上手动开启:
# 启用 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 出网的场景。系统会自动:
- 配置网桥的 DHCP 和 NAT(如未开启)
- 创建共享 IP(如提供了公网地址)
- 设置节点的默认网络
公网模式
适用于实例直接使用公网 IP 的场景。需要填写机房分配的网段(CIDR 格式)和网关地址,系统会:
- 创建 IP 池并绑定到节点
- 如果选择了上联网卡:
- 空闲网卡(无地址):直接桥接到网桥
- 已有管理地址的网卡:通过路由模式接入(IPv4 转发 + Proxy ARP + IPv6 转发 + NDP 代理),保留管理连接不中断
- 设置节点的默认网络和上联网卡
配置上联网卡后,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 秒。配置未变化时,重复启用不会重启正在运行的服务。安装失败或服务未就绪时,页面会提示具体故障类别,后台日志会记录安装输出和服务诊断。
如果启用失败,可在节点服务器上检查服务状态和最近日志:
sudo systemctl status node_exporter --no-pager -l
sudo journalctl -u node_exporter -n 30 --no-pager同时在管理面板服务器上查看 journalctl -u novaix,核对对应节点的监控配置日志。确认服务按设置的端口监听节点本机后,再重新启用;无需向公网开放监控端口。
采集间隔和数据保留时间可以在 config.yaml 中配置:
collector:
interval: 60 # 采集间隔(秒)
retention: 720 # 数据保留时间(小时,默认 30 天)
timeout: 10 # 单次采集超时(秒)TIP
- Novaix 通过 SSH 隧道采集监控数据,监控端口无需对外开放,仅需在节点本机可访问即可。
- 如果监控采集程序未安装或未运行,节点层面的监控图表将无数据显示,但不影响实例层面的监控(实例监控数据直接从运行环境 API 获取)。
- 监控数据保留时间设得过长会占用更多数据库空间。对于 SQLite 用户,建议
retention不超过 720 小时(30 天),避免数据库文件过大影响性能。
