查看文档目录

节点安装

在主控复制命令安装 cdnca 节点、常用参数、初始化、加入线路分组,以及怎样确认节点可用。

节点是真正为网站提供加速和防护的服务器。主控管理员在主控里复制一条安装命令,到节点服务器上执行;节点会自动注册到主控,再由管理员初始化、加入线路分组后开始服务。

准备

  • 已能登录的主控,以及剩余的节点授权额度。
  • 一台全新安装系统的 x86_64 节点服务器和它的 root 权限,配置见系统要求。
  • 先想好这台节点归属哪个区域。稍后节点和线路分组要选同一个区域,否则在线路分组里看不到这台节点的 IP。

第一步:复制安装命令

  1. 用管理员账号进入“节点管理 → 节点列表”。打算用命名区域时,先点“区域管理”新增区域。
  2. 点“安装节点”,选择“复制命令安装”,再点“复制安装命令”。

同一台主控的所有节点用同一条命令,不需要先手动添加节点,也不需要填写节点编号。复制命令本身不会创建节点。命令里带注册凭据(只经标准输入传递,不出现在进程参数里),不要公开;如已泄露,点“重置注册凭据”,之前复制的命令全部失效,已安装的节点不受影响。“SSH 远程安装”是另一种入口,第一次接入用复制命令即可。

命令的样子如下(实际以主控页面复制的为准):

(f=$(mktemp) || exit 1; trap 'rc=$?; rm -f "$f"; exit $rc' EXIT; trap 'exit 130' INT; trap 'exit 143' TERM; { curl --proto '=https' --proto-redir '=https' -fsSL -o "$f" 'https://console.cdnca.com/downloads/install-node.sh'; } || { rc=$?; echo '[cdnca-edge] error: 无法下载安装脚本' >&2; exit $rc; }; { [ "$(head -c 2 "$f")" = '#!' ] && [ "$(tail -n 1 "$f")" = 'main "$@"' ]; } || { echo '[cdnca-edge] error: 下载的安装脚本为空或不完整' >&2; exit 1; }; printf '%s\n' '<注册密钥>' | bash "$f" --control-plane 'https://console.cdnca.com' --registration-key-stdin)

第二步:在节点服务器上执行

以 root 登录节点服务器,粘贴整条命令执行。安装器会逐步显示当前步骤、整体进度与预计剩余时间,完整输出写入 /var/log/cdnca-install-node-*.log。最后一行 `install-state:` 是结论:`install-state: serving` 表示安装完成、节点已对外服务;全新节点还没初始化,安装器不等待凭据,直接显示 `install-state: installed_pending_initialization` 并以退出码 3 结束,表示已安装、待初始化,不是安装失败,完成第三步初始化后节点自动开放;已初始化的节点 180 秒内没收到首张授权签名凭据时显示 `install-state: installed_pending_ticket`(已安装、待首票)。

常用参数(加在复制的命令末尾的右括号之前):

参数作用
--yes预检只有“警告”时不再询问,直接继续
--public-ip IP指定本机公网 IP(默认自动探测)
--no-external-probe不参与外部节点探测
--skip-firewall不修改本机防火墙
--disable-xdp不挂载 XDP 内核过滤(只用 nftables)
(f=$(mktemp) || exit 1; trap 'rc=$?; rm -f "$f"; exit $rc' EXIT; trap 'exit 130' INT; trap 'exit 143' TERM; { curl --proto '=https' --proto-redir '=https' -fsSL -o "$f" 'https://console.cdnca.com/downloads/install-node.sh'; } || { rc=$?; echo '[cdnca-edge] error: 无法下载安装脚本' >&2; exit $rc; }; { [ "$(head -c 2 "$f")" = '#!' ] && [ "$(tail -n 1 "$f")" = 'main "$@"' ]; } || { echo '[cdnca-edge] error: 下载的安装脚本为空或不完整' >&2; exit 1; }; printf '%s\n' '<注册密钥>' | bash "$f" --control-plane 'https://console.cdnca.com' --registration-key-stdin --yes --public-ip 203.0.113.10)

第三步:初始化节点

  1. 回到“节点管理 → 节点列表”,打开“待初始化”,按 IP 和添加时间找到新节点。
  2. 点该节点的“初始化”。确认框里有“区域”时选择准备使用的区域(只有一个区域时会自动选中),点“确定”。
  3. 节点转为“正常”后,检查在线状态和最近心跳是否在更新。

初始化前,节点不下发任何站点或系统配置,也不加入 DNS 解析。页面提示节点证书 24 小时内有效,请在此期间完成初始化。只在服务器上装完、不做初始化,节点不会开始服务。

第四步:加入线路分组

  1. 打开“节点管理 → 线路分组”,点“新增分组”。
  2. “区域”选择与节点相同的区域,填写名称。解析值可以留空自动生成,备注可以留空,排序保留 100 即可,点“确定”。
  3. 在新分组这一行点“配置解析”。在左侧可添加的 IP 列表里勾选节点 IP,点“批量添加”→“确定”。
  4. 核对右侧已配置的 IP 列表里出现了这个 IP,且为启用状态。需要备用 IP 时用“批量备用”;第一次接入先配主 IP。

只有已初始化、有可用 IP、且与分组同区域的节点,才会出现在可添加列表里。

怎样确认节点可用

  • 节点列表里 IP 正确,状态“正常”,心跳持续更新。
  • 线路分组里有这台节点的 IP。
  • 网站接入时选到这条线路,配置发布完成后,用自己的测试网站实际访问成功(见添加网站)。

在节点服务器上也可以检查。节点上没有单独的 OpenResty 服务,OpenResty 由 cdnca-edge-agent 在收到首个发布后拉起;第二条返回 204 表示 OpenResty 在运行:

systemctl is-active cdnca-edge-agent
curl -fsS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:18080/healthz

遇到问题

现象先检查什么
安装命令失败终端最后标出的失败步骤和上方的 error 行;完整输出在 /var/log/cdnca-install-node-*.log。按 error 行修复后重新执行同一条命令
节点没出现在“待初始化”命令是否来自本主控;安装是否报错;节点授权额度是否用完;节点到主控的网络与网关端口是否放行
一直停在“待初始化”是否已点“初始化”;仅在服务器上安装不能代替这一步
线路分组里没有可添加的 IP节点是否已初始化、有可用 IP,节点区域是否与分组区域一致
节点正常但网站打不开继续检查网站选择的线路、配置发布结果、域名解析、源站和证书;不要只看节点在线标签
想重装这台节点同一台机器已注册时安装器会拒绝重复注册。先在主控处理原节点,再重新执行;“重置注册凭据”不是重装按钮

卸载节点见重启、升级、卸载与迁移。更多排查见问题处理。