• Аудит та перебудова відмовостійкого Nginx+PHP-FPM+PostgreSQL стека на 2 VPS з жорсткими SLO

    1 година тому
    • Бажаний бюджет до 900.42 USD
    • Очікує виконавця...
  • Вихідна ситуація: є 2 VPS у Hetzner (Ubuntu 22.04) для B2B SaaS (пікове навантаження до 800 одночасних користувачів, ~120 req/s). Зараз все крутиться на одному сервері: Nginx, PHP-FPM, PostgreSQL 14, Redis, cron, надсилання пошти. При списах з'являються 502/504, періодично забивається диск, бекапи робляться нерегулярно, оновлення ставляться руками. Другий VPS порожній, хочемо використовувати його для відмовостійкості та безпечних бекапів.

    Технічне середовище та обмеження:
    - Доступ: SSH root на обидва сервери, домен і DNS у Cloudflare
    - Не можна змінювати код програми та схему БД, допускаються лише зміни конфігурації ОС та сервісів
    - Допустиме вікно деградації/перемикання вночі – до 10 хвилин, повна недоступність – не більше 2 хвилин
    - Не можна купувати додаткові managed-сервіси, тільки можливості двох VPS та Cloudflare
    - Потрібно залишити можливість обслуговувати систему без Docker/Kubernetes (дозволено використовувати systemd та стандартні пакети)

    Що потрібно зробити за етапами:
    1) Діагностика проблем продуктивності та надійності на поточному сервері - аналіз логів Nginx/PHP-FPM/PostgreSQL, навантажувальні вузькі місця, дискова підсистема, ліміти systemd, мережа, таймаути, налаштування keepalive, буфери, slow queries
    2) Перерозмітка ролей на 2 VPS:
    - VPS-1 - frontend: Nginx, PHP-FPM, Redis (якщо потрібен локально), cron
    - VPS-2 - база та бекапи: PostgreSQL + реплікація/резервування, зберігання бекапів, мінімальні сервіси
    3) Налаштування PostgreSQL з акцентом на стабільність – коректні параметри пам'яті/автовакуум, архівування WAL, контроль зростання, базовий hardening, моніторинг затримок
    4) Резервне копіювання та перевірка відновлення – щоденні base backup + WAL (або інший обґрунтований підхід), ротація, шифрування, тестовий restore в окрему БД/каталог, документація процедури відновлення
    5) Безпека та експлуатація:
    - firewall (ufw/nftables) з мінімально необхідними портами, обмеження доступу до PostgreSQL
    - SSH hardening (ключі, відключення паролів, fail2ban або аналог)
    - автоматичні оновлення безпеки (unattended-upgrades) з контрольованим перезавантаженням
    6) Спостережливість:
    - метрики та алерти: завантаження CPU/RAM/disk, I/O wait, заповнення диска, кількість 5xx, час відповіді, реплікація/лаг, бекап-джоби
    - допускається Prometheus node_exporter + simple alerting (наприклад, через Alertmanager/telegram) або інший стек, але без важких платформ
    7) План перемикання під час аварії - покрокова інструкція, як переключити додаток на резервний сервер/резервну БД у межах обмежень за часом

    Конкретний результат:
    - Два сервери з розділеними ролями, документованою схемою, з налаштованими бекапами та перевіреним відновленням
    - Конфіги Nginx/PHP-FPM/PostgreSQL та systemd-юніти приведені в стан, де їх можна відтворити (в ідеалі – через Ansible, але допустимі і акуратні скрипти + README)
    - Окремий файл з картою портів/доступів та списком внесених змін

    Вимірювані критерії приймання:
    - На стороні Nginx частка 5xx за 24 години під типовим навантаженням – не більше 0.1%
    - P95 часу відповіді за access-логами Nginx - не гірше поточного значення та цільове покращення мінімум на 20% після тюнінгу (фіксуємо базову лінію на початку робіт)
    - Бекап-ланцюжок проходить щодня, зберігається щонайменше 7 точок відновлення, і виконаний хоча б 1 тестовий restore зі звітом
    - При штучній недоступності VPS-1 або VPS-2 є робоча процедура перемикання, що укладається в обмеження (до 2 хвилини повної недоступності, до 10 хвилин деградації вночі)
    - Усі сервіси після перезавантаження серверів автоматично піднімаються без ручних дій

    Важливо: робота включає аналіз та відповідальність за зміни на проді. Перед внесенням ризикованих змін – погодження плану дій та відкату.
  • Як ви оцінюєте це завдання?

    Увійдіть в обліковий запис, щоб залишити свою оцінку.

    Усього оцінок: 0

Ваша пропозиція

Ви ще не залишили пропозицію до цього замовлення.
Натисніть «Запропонувати послугу», щоб надіслати свою пропозицію.

Потрібне схоже завдання?

Якщо завдання схоже на ваше, можна переглянути готові послуги в категорії або створити власне завдання з потрібним бюджетом, строками та вимогами.

Завдання «Аудит та перебудова відмовостійкого Nginx+PHP-FPM+PostgreSQL стека на 2 VPS з жорсткими SLO» можна використати як орієнтир для свого брифа: що потрібно зробити, який результат потрібен і який бюджет вказати.