# Infrastructure Plan ## Текущее состояние сервера (март 2026) ### Сервер: 87.249.49.32 (VPS-1, основной) | Ресурс | Состояние | Оценка | |--------|-----------|--------| | CPU | 1 vCPU, load avg 1.63 | 🔴 Критично | | RAM | 1.9 ГБ, свободно 99 МБ | 🔴 Критично | | Swap | Отсутствует | 🔴 Опасно | | Disk | 29 ГБ, 45% занято | 🟢 Норм | **Вывод:** сервер работает на пределе. Любой пик нагрузки (деплой через CI/CD, обращение к Plane, тяжёлый запрос) приводит к конкуренции за RAM без возможности свопирования — процессы убиваются OOM killer'ом. ### Крупнейшие потребители RAM | Контейнер | RAM | |-----------|-----| | plane-minio | 244 МБ | | plane-api | 198 МБ | | plane-worker | 178 МБ | | plane-beat | 150 МБ | | plane-space | 111 МБ | | forgejo | 140 МБ | | plane-db | 40 МБ | | forgejo-db | 41 МБ | --- ## Немедленные действия (без смены тарифа) ### 1. Добавить swap (делается за 2 минуты) ```bash sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab ``` Это не решит проблему, но защитит от внезапных OOM kills. ### 2. Ограничить mem_limit у Plane-сервисов - `plane-worker` и `plane-beat` сейчас без лимита, жрут ~150-180 МБ каждый - Поставить `mem_limit: 256m` на каждый --- ## Архитектура: два сервера ### Рекомендуемая схема ``` ┌─────────────────────────────────┐ Internet ──────────────── │ VPS-1 (основной, 87.249.49.32) │ │ │ │ Traefik (80/443) │ │ ├── Forgejo (git.csrx.ru) │ │ ├── Vaultwarden (vault.) │ │ ├── Plane (plane.) │ │ ├── Syncthing (sync.) │ │ └── Forgejo Runner │ └─────────────────────────────────┘ │ Ansible SSH │ ┌─────────────────────────────────┐ │ VPS-2 (мониторинг + тулзы) │ │ │ │ Traefik (80/443) │ │ ├── Grafana (dashboard.) │ │ ├── Prometheus (internal) │ │ ├── cAdvisor (internal) │ │ ├── Node Exporter × 2 servers │ │ └── Claude Code Agent │ └─────────────────────────────────┘ ``` ### Почему два сервера? 1. **Изоляция:** мониторинг не ест ресурсы продакшен-сервисов 2. **Мониторинг мониторит продакшен снаружи** — видит проблемы даже при перегрузке VPS-1 3. **Claude Agent** работает на отдельной машине — не мешает пользователям 4. **Цена:** маленький VPS для мониторинга стоит 200-400 руб/мес ### Параметры VPS-2 (мониторинг) Минимум: **2 vCPU, 2 ГБ RAM, 20 ГБ SSD** — этого хватит для Grafana+Prometheus+Claude Agent. ### Параметры для апгрейда VPS-1 (опционально) Текущий тариф явно перегружен. Рекомендую апгрейд до **2 vCPU, 4 ГБ RAM** — это закроет проблему RAM и CPU. --- ## Провайдеры Текущий сервер на **Timeweb Cloud** (судя по IP-диапазону и ключу `timeweb` в ~/.ssh/). **Варианты для VPS-2:** - **Timeweb Cloud** — тот же провайдер, можно управлять из одного кабинета, хороший пинг между серверами (оба в одном датацентре) - **Hetzner** — дешевле, но выше пинг из России - **Selectel / Beeline Cloud** — российские, быстро **Рекомендация:** VPS-2 тоже на Timeweb Cloud — серверы в одной сети, внутренний трафик между ними бесплатный или очень дешёвый. --- ## Что деплоить на VPS-2 через Ansible Добавить VPS-2 в `inventory/hosts.ini` как отдельный хост `monitoring`. Создать роль `monitoring` с: - Prometheus + Node Exporter (scrape обоих серверов) - Grafana с дашбордами - cAdvisor (мониторит контейнеры VPS-2) - Remote scrape Node Exporter на VPS-1 (добавить Node Exporter на VPS-1 без публичного доступа, через Prometheus federation или прямой scrape по внутреннему IP) --- ## Таймлайн | Приоритет | Действие | Время | |-----------|----------|-------| | 🔴 Сейчас | Добавить swap на VPS-1 | 5 мин | | 🟡 Эта неделя | Купить VPS-2, задеплоить мониторинг | 1-2 ч | | 🟡 Эта неделя | Апгрейд VPS-1 до 4 ГБ RAM | 10 мин (перезагрузка) | | 🟢 Позже | Claude Agent на VPS-2 | см. claude-agent.md |