节点安装
在主控复制命令安装 cdnca 节点、常用参数、初始化、加入线路分组,以及怎样确认节点可用。
节点是真正为网站提供加速和防护的服务器。主控管理员在主控里复制一条安装命令,到节点服务器上执行;节点会自动注册到主控,再由管理员初始化、加入线路分组后开始服务。
准备
- 已能登录的主控,以及剩余的节点授权额度。
- 一台全新安装系统的 x86_64 节点服务器和它的 root 权限,配置见系统要求。
- 先想好这台节点归属哪个区域。稍后节点和线路分组要选同一个区域,否则在线路分组里看不到这台节点的 IP。
第一步:复制安装命令
- 用管理员账号进入“节点管理 → 节点列表”。打算用命名区域时,先点“区域管理”新增区域。
- 点“安装节点”,选择“复制命令安装”,再点“复制安装命令”。
同一台主控的所有节点用同一条命令,不需要先手动添加节点,也不需要填写节点编号。复制命令本身不会创建节点。命令里带注册凭据(只经标准输入传递,不出现在进程参数里),不要公开;如已泄露,点“重置注册凭据”,之前复制的命令全部失效,已安装的节点不受影响。“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)第三步:初始化节点
- 回到“节点管理 → 节点列表”,打开“待初始化”,按 IP 和添加时间找到新节点。
- 点该节点的“初始化”。确认框里有“区域”时选择准备使用的区域(只有一个区域时会自动选中),点“确定”。
- 节点转为“正常”后,检查在线状态和最近心跳是否在更新。
初始化前,节点不下发任何站点或系统配置,也不加入 DNS 解析。页面提示节点证书 24 小时内有效,请在此期间完成初始化。只在服务器上装完、不做初始化,节点不会开始服务。
第四步:加入线路分组
- 打开“节点管理 → 线路分组”,点“新增分组”。
- “区域”选择与节点相同的区域,填写名称。解析值可以留空自动生成,备注可以留空,排序保留 100 即可,点“确定”。
- 在新分组这一行点“配置解析”。在左侧可添加的 IP 列表里勾选节点 IP,点“批量添加”→“确定”。
- 核对右侧已配置的 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,节点区域是否与分组区域一致 |
| 节点正常但网站打不开 | 继续检查网站选择的线路、配置发布结果、域名解析、源站和证书;不要只看节点在线标签 |
| 想重装这台节点 | 同一台机器已注册时安装器会拒绝重复注册。先在主控处理原节点,再重新执行;“重置注册凭据”不是重装按钮 |
卸载节点见重启、升级、卸载与迁移。更多排查见问题处理。