Малий VPS як флот ігрових серверів
Усі наші онлайн-світи — портал, офіційні світи, світи, створені гравцями — працюють на одному орендованому Linux-сервері (VPS). Ніякого дата-центру, ніякого хмарного рахунку на п’ять цифр. У цій статті я покажу, як налаштований сервер і чого ми навчилися дорогою.
Спершу зміцнення. Перш ніж гру пустили на сервер, на першому місці була базова безпека: брандмауер (ufw), що відкриває лише потрібні порти, fail2ban проти автоматизованих спроб входу та SSH лише з ключами. Caddy працює як зворотний проксі у своєму Docker-варіанті — він сам отримує TLS-сертифікати й спрямовує запити до потрібних контейнерів.
Кожен світ має власний контейнер. Сама гра працює як Docker-образ, а кожен світ отримує власний контейнер із жорсткими лімітами: 768 МБ оперативної пам’яті й 2 ядра процесора на світ, щонайбільше десять активних світів одночасно. Так жоден окремий світ ніколи не покладе весь сервер.
Моніторинг, що телефонує нам. Netdata стежить за сервером понад 140 сигналами тривоги — від «диск заповнюється» до «портал не відповідає». Якщо щось спрацьовує, на телефон надходить пуш-сповіщення (через ntfy). Так ми дізнаємося про проблеми раніше за гравців.
Найнесподіваніша знахідка: коли ми заміряли в стані спокою, приблизно половина використаної пам’яті йшла зовсім не на гру — вона йшла на Docker і сам моніторинг. Інфраструктура, що несе гру, у спокої важча за саму гру. Гарне нагадування, що треба вимірювати, а не вгадувати.
Вердикт після кількох місяців роботи: невеликий, як слід захищений сервер чудово тягне інді-мультиплеєр — якщо ставити ліміти й стежити за ним.
Коментарі