top of page

Mały VPS jako flota serwerów gry

Zdjęcie autora: Marcel Dütscher
Marcel Dütscher
5 lip
1 minut(y) czytania

Wszystkie nasze światy online — portal, oficjalne światy, światy tworzone przez graczy — działają na jednym wynajętym serwerze z Linuksem (VPS). Bez centrum danych, bez pięciocyfrowego rachunku za chmurę. W tym artykule pokażę, jak ten serwer jest ustawiony i czego się po drodze nauczyliśmy.


Najpierw utwardzanie. Zanim gra została wpuszczona na serwer, na pierwszym miejscu stanęło podstawowe bezpieczeństwo: zapora (ufw), która otwiera tylko niezbędne porty, fail2ban przeciw automatycznym próbom logowania i SSH wyłącznie z kluczami. Caddy działa jako reverse proxy w wersji dockerowej — sam pobiera certyfikaty TLS i kieruje żądania do właściwych kontenerów.


Każdy świat dostaje własny kontener. Sama gra działa jako obraz Dockera, a każdy świat dostaje własny kontener ze stałymi limitami: 768 MB RAM-u i 2 rdzenie procesora na świat, co najwyżej dziesięć aktywnych światów naraz. Dzięki temu pojedynczy świat nigdy nie położy całego serwera.


Monitoring, który do nas dzwoni. Netdata pilnuje serwera za pomocą ponad 140 alarmów — od „dysk się zapełnia” po „portal nie odpowiada”. Gdy coś się uruchomi, powiadomienie push ląduje na telefonie (przez ntfy). Dzięki temu o problemach dowiadujemy się przed graczami.


Najbardziej zaskakujące odkrycie: Gdy zmierzyliśmy serwer w stanie spoczynku, mniej więcej połowa zajętej pamięci wcale nie szła na grę — szła na Dockera i sam monitoring. Infrastruktura, która niesie grę, jest w spoczynku cięższa niż gra. Dobre przypomnienie, że trzeba mierzyć, a nie zgadywać.


Werdykt po kilku miesiącach działania: mały, porządnie utwardzony serwer spokojnie uniesie indie grę multiplayer — jeśli ustawi się limity i ma się go na oku.

Ostatnie posty

Zobacz wszystkie

Komentarze


Komentowanie tego posta nie jest już dostępne. Skontaktuj się z właścicielem strony, aby uzyskać więcej informacji.
bottom of page