- remove Java plugins (velocity/paper), dashboard, all MC-specific code
(handshake, death_code, varint, hostname-HMAC); available in history pre-v0.2
- merge crates/* into one package with src/bin/{rampart,rampart-manager,rampart-cli}
- ProtocolHandler trait + registry (no implementations yet), universal PoW kept
- XDP: universal L3/L4 filter (xdp/core/) + pluggable hook API (xdp/hooks/),
fix IPv6 saddr bug; clang build verified
- docs: bilingual knowledge base (docs/kb/: attacks x4, defense-levels,
practice x3), rewrite README/architecture for universal concept
- TODO.md v4.0: <=300-line module limit, competitor benchmark section (ref/)
- deploy/CI/docs cleanup: no MC references, new binary names
cargo build/clippy(-D warnings)/test green (55 tests)
4.2 KiB
4.2 KiB
Disaster Recovery - Rampart
Что делать, когда что-то пошло не так.
Схема failover
Redis упал:
Edge: продолжает автономно на локальном кэше блэклиста
Manager: API отдаёт пустые списки / ошибки → рестарт Redis
Manager упал:
Edge: продолжает фильтрацию (фильтрация не зависит от Manager)
Управление (CLI/API) недоступно до восстановления
Edge нода упала:
Клиенты за ней теряют соединение
При нескольких edge → DNS round-robin на живые
Если edge одна — сервис недоступен
Полный сбой дата-центра:
Edge в других ДЦ продолжают работу
Баны/ноды не синхронизируются до восстановления Redis
1. Redis упал
Симптомы
- Edge перестал синхронизировать блэклист
- Manager API отдаёт пустые списки nodes/servers/blacklist
Влияние
- Edge: работает с локальным кэшем; новые баны не распространяются между нодами.
- Manager: данные из Redis недоступны.
Действия
redis-cli ping || systemctl restart redis
# Поднять новый (пароль должен совпадать):
docker run -d --name rampart-redis -p 6379:6379 \
redis:7-alpine redis-server --requirepass "$REDIS_PASSWORD"
systemctl restart rampart-manager # переподключится
# Edge переподключается сам (retry в драйвере); иначе:
systemctl restart rampart
Предотвращение
- AOF + RDB persistence включены
- Регулярные бэкапы:
redis-cli SAVE
2. Manager упал
Симптомы
rampart-cliкоманды падают с ошибкой соединения/api/v1/healthне отвечает
Влияние
- Edge продолжает фильтровать трафик автономно.
Действия
systemctl status rampart-manager
journalctl -u rampart-manager -n 50 --no-pager
systemctl restart rampart-manager
# Не стартует? Частая причина — env:
# JWT_SECRET < 32 байт или API_PASSWORD=changeme → процесс выходит с ошибкой.
journalctl -u rampart-manager -e | grep ERROR
3. Edge нода упала
Симптомы
- Клиенты теряют соединение, метрики :9090 пропали
Действия
systemctl status rampart
journalctl -u rampart -n 50 --no-pager
dmesg | grep -i "oom\|rampart" # OOM kill?
systemctl restart rampart
# Не стартует — проверь конфиг и логи (см. runbook.md §2)
Предотвращение
- Минимум 2 edge ноды + DNS round-robin
- systemd
Restart=always - Несколько edge нод за одним DNS-именем
4. ClickHouse упал
Влияние
Только потеря аналитики: события буферизуются и пишутся асинхронно, фильтрация не зависит от ClickHouse.
Действия
curl http://localhost:8123/ping || systemctl restart clickhouse-server
df -h /var/lib/clickhouse # диск полон?
5. Полный сбой инфраструктуры
# 1. Поднять Manager на новой VDS
docker compose up -d redis && cargo run --release --bin rampart-manager
# 2. Восстановить Redis из бэкапа
redis-cli --pipe < /backup/rampart-redis-$(date +%Y-%m-%d).rdb
# 3. Edge ноды переподключатся автоматически
# 4. Проверить
rampart-cli doctor
6. Cheatsheet быстрых команд
systemctl restart rampart rampart-manager redis clickhouse-server
journalctl -u rampart -n 50 -f
htop -p $(pgrep -d',' rampart)
iftop -i eth0
ss -s | grep TCP
Версия: 2.0 | Август 2026