fix public ip selfcheck logic
This commit is contained in:
1 parent
a6f9646da5
commit
67adc6670e
18 files changed
+209
-90
No files matched your search
+14
-16
@@ -113,8 +113,15 @@ JSON, базовый префикс прикладных методов — `/ap
|
||||
|
||||
Отчёт о результате self-check — подтверждение, что исходящий трафик
|
||||
валидатора действительно идёт через только что назначенный FIP. Агент
|
||||
определяет это, вызвав `GET /api/v1/whatsmyip` и сравнив ответ с
|
||||
`ip_address` из задания.
|
||||
определяет это **сам**, обращаясь к внешнему (снаружи облака) IP-echo
|
||||
сервису (`self_check.ip_echo_urls` в `validator-agent.yaml`, например
|
||||
`api.ipify.org`) и сравнивая ответ с `ip_address` из задания — control-api
|
||||
в этом определении не участвует. Важно, что ресурс должен быть именно
|
||||
внешним: OpenStack применяет SNAT через Floating IP только к трафику,
|
||||
уходящему через внешнюю сеть, поэтому обращение к чему-либо внутри
|
||||
проекта (в том числе к самому control-api, если он в той же внутренней
|
||||
сети) покажет приватный адрес валидатора независимо от того, правильно
|
||||
ли привязан FIP.
|
||||
|
||||
Запрос:
|
||||
```json
|
||||
@@ -247,17 +254,6 @@ IP на данном проходе". До этого момента control-api
|
||||
Проверка живости процесса. Ответ: `{"ok": true}`. Используется в systemd/
|
||||
внешних системах мониторинга.
|
||||
|
||||
### `GET /api/v1/whatsmyip`
|
||||
|
||||
Возвращает IP-адрес, с которого пришёл TCP-запрос (без учёта заголовков
|
||||
`X-Forwarded-For` — специально, чтобы self-check нельзя было подделать).
|
||||
Это основа механизма self-check.
|
||||
|
||||
Ответ:
|
||||
```json
|
||||
{"ip": "203.0.113.10"}
|
||||
```
|
||||
|
||||
### `GET /api/v1/admin/status`
|
||||
|
||||
Сводка по очереди — сколько IP в каком состоянии.
|
||||
@@ -348,9 +344,11 @@ curl -s -X POST "$BASE/api/v1/agents/register" \
|
||||
curl -s "$BASE/api/v1/agents/validator_01/assignment"
|
||||
# => {"ip_id":1,"ip_address":"203.0.113.10","phase":"awaiting_self_check","check_config":[...]}
|
||||
|
||||
# 3. Self-check: спросить у control-api, каким адресом мы к нему пришли
|
||||
curl -s "$BASE/api/v1/whatsmyip"
|
||||
# => {"ip":"203.0.113.10"} (в реальном стенде это и есть проверка через FIP)
|
||||
# 3. Self-check: спросить у ВНЕШНЕГО (вне облака) IP-echo сервиса, каким
|
||||
# адресом мы наружу выглядим — это делает сам агент, control-api тут
|
||||
# ни при чём (см. self_check.ip_echo_urls в validator-agent.yaml)
|
||||
curl -s "https://api.ipify.org"
|
||||
# => 203.0.113.10 (в реальном стенде это и есть проверка через FIP)
|
||||
|
||||
curl -s -X POST "$BASE/api/v1/agents/validator_01/self-check" \
|
||||
-d '{"ip_id":1,"detected_egress_ip":"203.0.113.10","success":true,"detail":"matched"}'
|
||||
|
||||
Reference in new issue
Block a user