# Argus 多机部署(Docker Swarm + External Overlay) - 前提:Docker ≥ 20.10;Manager/Worker 节点开放 2377/tcp、7946/tcp+udp、4789/udp。 - DNS:Bind9 为统一权威,解析 *.argus.com 至部署机固定对外主机 IP。 ## 在部署机(Manager) - 初始化 Swarm:`docker swarm init --advertise-addr ` - 创建 overlay:`docker network create --driver overlay --attachable argus-sys-net` - 解压离线包后执行: - `./server-install.sh`(会验证 Swarm 状态、确保 overlay 存在、写入 dns.conf) - `./server-selfcheck.sh`(失败会自动触发诊断) ## 在节点机(Worker 或非 Docker 主机) - Swarm Worker:执行 Manager 的 `docker swarm join ...`; - 运行客户端容器: - `docker run -d --name argus-metric-node-001 --network argus-sys-net -v /data/argus/agent:/private/argus/agent argus-sys-metric-test-node:latest sleep infinity` - 进入容器安装(先 IP 引导,后域名): - `curl -u ftpuser:*** -fsSL ftp://:21/setup.sh -o /tmp/setup.sh && chmod +x /tmp/setup.sh` - `AGENT_ENV=dev AGENT_USER=alice AGENT_INSTANCE=node001 MASTER_ENDPOINT=http://master.argus.com:3000 /tmp/setup.sh --server ftp.argus.com --user ftpuser --password '***' --port 21` ## 关键点 - 首次必须使用 FTP 的 IP 引导(下载 setup.sh 与 dns.conf) - MASTER_ENDPOINT 永远使用域名:`http://master.argus.com:3000` - docker compose 改为 external overlay;容器内不使用 Docker 服务名;web-proxy 与组件上游统一用域名 ## 找回/轮换 Swarm 加入令牌与解锁密钥 在任意一个 Manager 节点上执行以下命令即可查看或轮换加入令牌(join token): - 查看加入 Worker 的命令: - `docker swarm join-token worker` - 只打印 Worker 的 token: - `docker swarm join-token -q worker` - 查看加入 Manager 的命令: - `docker swarm join-token manager` - 只打印 Manager 的 token: - `docker swarm join-token -q manager` 在待加入节点执行(示例,替换 Manager_IP): - `docker swarm join --token <上面查到的token> :2377` 轮换 token(怀疑泄露或需要更新时): - 轮换 Worker:`docker swarm join-token --rotate worker` - 轮换 Manager:`docker swarm join-token --rotate manager` 如果你指的是“解锁密钥”(autolock 的 unlock key),在 Manager 上: - 查看:`docker swarm unlock-key` - 轮换:`docker swarm unlock-key --rotate` 提示:当看到 “This node is not a swarm manager.” 时,说明当前节点不是 Manager,需要到 Manager 节点执行,或在现有 Manager 上 `docker node promote ` 将其提升为 Manager。