[#37] 测试通过swarm跨机部署节点;更新文档

This commit is contained in:
2025-11-04 15:20:08 +08:00
parent b9611c2dd2
commit 38f8ee9301
9 changed files with 166 additions and 21 deletions

View File

@@ -7,11 +7,10 @@
## Quick Start
1. Extract to a target dir, e.g. `/opt/argus-deploy/versions/<YYYYMMDD>`
2. `cd scripts && sudo ./server-prepare-dirs.sh` (recommended)
3. `./server-install.sh` (non‑root is supported: it will precreate minimal dirs and auto-fix Kibana/ES/Bind in containers)
4. `./server-status.sh`
5. `./server-selfcheck.sh` (on failure it auto-runs diagnose and writes logs under `logs/`)
6. `./server-uninstall.sh` to tear down
2. `./server-install.sh` (non‑root is supported: it will precreate minimal dirs and auto-fix Kibana/ES/Bind in containers)
3. `./server-status.sh`
4. `./server-selfcheck.sh` (on failure it auto-runs diagnose and writes logs under `logs/`)
5. `./server-uninstall.sh` to tear down
## What the Installer Does
- Loads local images (`images/all-images.tar.gz`)
@@ -29,7 +28,7 @@
- If you cannot use sudo, the installer will:
- create minimal data dirs (incl. `private/argus/log/{elasticsearch,kibana}`) with permissive perms when possible;
- ensure inside containers: Kibana `data` → `/private/argus/log/kibana`, Elasticsearch `data` → `/private/argus/log/elasticsearch`, and Bind `rndc.key` is generated.
You can still run `sudo ./server-prepare-dirs.sh` later to normalize ownership.
(Manual pre-creation scripts are no longer required.)
## Files & Layout
- `compose/` (docker-compose.yml, .env)

View File

@@ -7,11 +7,10 @@
## 快速开始
1. 解压到目标目录(例如 `/opt/argus-deploy/versions/<YYYYMMDD>`)
2. 进入 `scripts/`:`sudo ./server-prepare-dirs.sh`(推荐)
3. 安装:`./server-install.sh`(支持普通用户:会自动创建最小目录并在容器内修复 Kibana/ES/Bind)
4. 状态:`./server-status.sh`
5. 自检:`./server-selfcheck.sh`(失败会自动采集诊断)
6. 卸载:`./server-uninstall.sh`
2. 安装:`./server-install.sh`(支持普通用户:会自动创建最小目录并在容器内修复 Kibana/ES/Bind)
3. 状态:`./server-status.sh`
4. 自检:`./server-selfcheck.sh`(失败会自动采集诊断)
5. 卸载:`./server-uninstall.sh`
## 安装流程要点
- 仅启动 10 个服务端组件(不包含测试节点);
@@ -20,11 +19,10 @@
## 兼容说明(NixOS 等)
- 使用 `security_opt: ["label=disable"]` 与 `userns_mode: host`。
- 若不能使用 sudo:安装器会创建最小目录(含 `private/argus/log/{elasticsearch,kibana}`),并在容器内完成:
- 非 root 场景:安装器会创建最小目录(含 `private/argus/log/{elasticsearch,kibana}`),并在容器内完成:
- Kibana 的 `data` 软链到 `/private/argus/log/kibana`
- Elasticsearch 的 `data` 软链到 `/private/argus/log/elasticsearch`
- Bind 生成 `/etc/bind/rndc.key`
安装后也可再执行 `sudo ./server-prepare-dirs.sh` 统一目录属主。
## 故障排查(见下文 Troubleshooting_zh)
- `./server-selfcheck.sh` → `logs/selfcheck.json`

View File

@@ -7,7 +7,6 @@
- 初始化 Swarm:`docker swarm init --advertise-addr <manager_ip>`
- 创建 overlay:`docker network create --driver overlay --attachable argus-sys-net`
- 解压离线包后执行:
- `cd scripts && sudo ./server-prepare-dirs.sh`
- `./server-install.sh`(会验证 Swarm 状态、确保 overlay 存在、写入 dns.conf)
- `./server-selfcheck.sh`(失败会自动触发诊断)
@@ -24,3 +23,28 @@
- 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> <Manager_IP>: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 <NODE-ID>` 将其提升为 Manager。

View File

@@ -17,5 +17,4 @@ Kibana/ES:
- Verify `es.log.argus.com` resolves inside Kibana
Permissions:
- Ensure `sudo ./server-prepare-dirs.sh` ran and ownership matches runtime UID:GID
- The installer auto-creates minimal dirs and applies container-side fixes (Kibana/ES/Bind). If you still see EACCES/lock errors, rerun `./server-install.sh` and review diagnose logs.

View File

@@ -12,5 +12,5 @@
Web‑Proxy:8083=200/302/403;8084/8085 需包含 CORS
Kibana:确认可解析 `es.log.argus.com`
权限:
- 非 root 安装时,安装器已创建最小目录并在容器内修复 Kibana/ES/Bind;
- 如仍有 `EACCES`/锁文件报错,可再运行 `sudo ./server-prepare-dirs.sh` 统一目录属主。
- 非 root 安装时,安装器会创建最小目录并在容器内修复 Kibana/ES/Bind;
- 如仍有 `EACCES`/锁文件报错,先重跑 `./server-install.sh`(会重复容器内修复),并查看诊断日志。