feat(health): деплоить probe-Worker из CFDM и опрашивать цели с edge
quality / changes (push) Successful in 9s
quality / commitlint (push) Skipped
quality / docker-check (push) Skipped
CD / update-wiki (push) Successful in 6s
quality / web (push) Successful in 1m4s
quality / api (push) Successful in 54s
CD / quality (push) Successful in 2m17s
CD / publish (push) Successful in 2m21s
quality / changes (push) Successful in 9s
quality / commitlint (push) Skipped
quality / docker-check (push) Skipped
CD / update-wiki (push) Successful in 6s
quality / web (push) Successful in 1m4s
quality / api (push) Successful in 54s
CD / quality (push) Successful in 2m17s
CD / publish (push) Successful in 2m21s
Worker сам ходит на origin по Cron Trigger; CFDM кладёт цели в KV и забирает результаты без POST /probe. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
+15
-13
@@ -14,7 +14,7 @@ Manage Cloudflare zones, DNS records, domain groups, and TLS certificate expiry
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `CLOUDFLARE_API_TOKEN` | API token with Zone.DNS permissions |
|
||||
| `CLOUDFLARE_API_TOKEN` | API token: Zone.DNS **и** для Worker — Account Workers Scripts Write + Workers KV Storage Write |
|
||||
| `DATABASE_URL` | SQLite path (`sqlite:/data/app.db`) |
|
||||
| `JWT_SECRET` | JWT signing secret |
|
||||
| `ADMIN_USERNAME` | Admin username |
|
||||
@@ -25,8 +25,6 @@ Manage Cloudflare zones, DNS records, domain groups, and TLS certificate expiry
|
||||
| `HEALTH_DOWN_FAILURES` | Ошибок подряд до `down` (default `2`). То же в UI. |
|
||||
| `HEALTH_SUCCESS_RECOVERIES` | Успехов подряд для recovery `CHECKING → HEALTHY` (default `2`). То же в UI. |
|
||||
| `HEALTH_LATENCY_WARN_MS` | Латентность-порог для `degraded` (default `1000`). То же в UI. |
|
||||
| `HEALTH_WORKER_URL` | URL Worker health-probe (fallback). Переопределяется в **Настройки → Health-check**. |
|
||||
| `HEALTH_WORKER_TOKEN` | Bearer-токен Worker (fallback). В GET `/settings` не отдаётся целиком. |
|
||||
|
||||
## Load balancing & health checks
|
||||
|
||||
@@ -58,22 +56,26 @@ health-check работают на двух уровнях:
|
||||
|
||||
| | Local | Cloudflare Worker |
|
||||
|---|---|---|
|
||||
| Кто пробирует | процесс API CFDM | Worker на edge Cloudflare |
|
||||
| Планировщик | глобальный cron CFDM | тот же cron вызывает Worker |
|
||||
| Кто пробирует | процесс API CFDM | Worker на edge (Cron Trigger) |
|
||||
| Планировщик | глобальный cron CFDM | cron Worker + ingest KV в CFDM |
|
||||
| Пороги Slow/Down | Настройки → Health-check | те же |
|
||||
| Результат | SQLite `ip_health_status` | та же SQLite + `colo` |
|
||||
| Результат | SQLite `ip_health_status` | та же SQLite + `colo` из KV |
|
||||
| Регионы Health Checks | нет | нет (на Free продукта нет) |
|
||||
|
||||
**Cloudflare в CFDM — это Worker**, не [Health Checks API](https://developers.cloudflare.com/api/resources/healthchecks).
|
||||
Продукт Health Checks на Free-плане недоступен и **не используется**. Worker
|
||||
stateless: конфиг и журнал (`health_probe_log`) живут в SQLite CFDM.
|
||||
Продукт Health Checks на Free-плане недоступен и **не используется**.
|
||||
|
||||
Деплой Worker: [`workers/health-probe/README.md`](../workers/health-probe/README.md)
|
||||
(`wrangler deploy`). URL и токен — **Настройки → Health-check**. Если Worker не
|
||||
задан, cloudflare-цели **не** пробируются как Local.
|
||||
Worker **сам** опрашивает IP/порты/протоколы (TCP/HTTP, паттерн [UptimeFlare](https://github.com/lyc8503/UptimeFlare): `sockets.opened`, p-limit 5).
|
||||
CFDM создаёт скрипт через Workers Scripts API, кладёт список целей в KV и читает результаты.
|
||||
Публичный URL API не нужен. Если Worker/KV не готовы, cloudflare-цели **не** пробируются как Local.
|
||||
|
||||
Reconcile DNS запускается cron-задачей `health-check`. Free Workers ≈ 100k
|
||||
запросов/сутки; cron раз в 2 мин × число IP должен влезать.
|
||||
Кнопка **Создать / обновить Worker** — **Настройки → Health-check**. Токен:
|
||||
Account `Workers Scripts Write` + `Workers KV Storage Write`. Zone DNS недостаточно.
|
||||
|
||||
Free: 5 Cron Triggers на аккаунт; KV 1000 writes/сутки (интервал ≥ 2 мин);
|
||||
≤ 48 целей за тик. Исходник: [`workers/health-probe/`](../workers/health-probe/).
|
||||
|
||||
Reconcile DNS запускается cron-задачей `health-check` после ingest KV.
|
||||
|
||||
## Docker
|
||||
|
||||
|
||||
Reference in New Issue
Block a user