Oyun sunucusu filosu olarak küçük bir VPS
Tüm çevrimiçi dünyalarımız, yani portal, Resmi Dünyalar ve oyuncuların oluşturduğu dünyalar, kiralık tek bir Linux sunucusunda (VPS) çalışıyor. Veri merkezi yok, beş haneli bulut faturası yok. Bu yazıda sunucunun nasıl kurulduğunu ve yol boyunca neler öğrendiğimizi göstereceğim.
Önce sağlamlaştırma. Oyunun sunucuya girmesine izin verilmeden önce temel güvenlik geldi: yalnızca gerekli portları açan bir güvenlik duvarı (ufw), otomatik giriş denemelerine karşı fail2ban ve yalnızca anahtarlı SSH. Caddy, Docker sürümüyle ters vekil sunucu olarak çalışıyor: TLS sertifikalarını otomatik alıyor ve istekleri doğru konteynerlere yönlendiriyor.
Her dünya kendi konteynerini alır. Oyunun kendisi bir Docker imajı olarak çalışıyor ve her dünya sabit sınırlarla kendi konteynerini alıyor: dünya başına 768 MB RAM ve 2 işlemci çekirdeği, aynı anda en fazla on etkin dünya. Böylece tek bir dünya tüm sunucuyu asla çökertemez.
Bizi arayan izleme. Netdata sunucuyu "disk doluyor"dan "portal yanıt vermiyor"a kadar 140'tan fazla alarmla izliyor. Bir şey tetiklenirse telefona (ntfy ile) bir anlık bildirim düşüyor. Böylece sorunları oyunculardan önce öğreniyoruz.
En şaşırtıcı bulgu: Boşta ölçüm yaptığımızda, kullanılan belleğin kabaca yarısı oyuna hiç gitmiyordu; Docker'a ve izlemenin kendisine gidiyordu. Oyunu taşıyan altyapı, dinlenme hâlinde oyunun kendisinden daha ağır. Tahmin etmek yerine ölçmek gerektiğinin güzel bir hatırlatması.
Birkaç aylık işletmeden sonra hüküm: küçük ama düzgün sağlamlaştırılmış bir sunucu, bir bağımsız çok oyunculu oyunu gayet iyi taşıyor, yeter ki sınırlar koyup gözünüzü üzerinden ayırmayın.
Yorumlar