@LoGK_Shadoww
Moderatör
- MC Yaşı
- 4 gün
- Mesaj Sayısı
- 26
- Konu Sayısı
- 14
- Beğeni Sayısı
- 32
- Trade Sayısı
- 0
- Memleket
- ANKARA
Selamlar değerli forum üyeleri ve sunucu sahipleri,
Sunucunuz büyüdükçe, Reklam/Yayıncı aldığınızda veya büyük bir Lobi / Skyblock ağı kurduğunuzda karşılaştığınız en büyük felaket nedir? Proxy (BungeeCord / Velocity) sunucusunun tek bir CPU çekirdeğine yüklenip RAM/CPU şişmesi yaşaması, çökmesi ve binlerce oyuncunun aynı anda oyundan düşmesidir.
Piyasada hemen hemen herkes klasik BungeeCord veya Velocity kurulumunu anlatıp geçer. Ancak kimse birden fazla Proxy sunucusunu Redis RAM veritabanı ile birbirine bağlamayı (Cluster), yükü 3-4 farklı proxy portuna dağıtmayı ve sunucunun çökme riskini %0'a indirmeyi anlatmaz!
1. Mimari Mantık: Klasik Sistem vs. Redis Cluster
Klasik Sistemde Ne Olur?Tüm oyuncular tek bir Bungee/Velocity (Örn: Port 25565) üzerinden bağlanır. 400-500 aktif oyuncudan sonra Bungee tek çekirdeğe yüklendiği için TPS düşer, ping yükselir ve en küçük bir Bot/DDoS saldırısında tüm sunucu ağı patlar.
Redis Cluster Sisteminde Ne Olur?Aşağıdaki şemadaki gibi arkada 2, 3 veya 5 adet bağımsız Proxy (Velocity-1, Velocity-2, Velocity-3) çalışır. Oyuncular bu proxy'lere eşit dağıtılır. Redis RAM veritabanı ise bu proxy'lerin arkasında durarak hepsini birbirine "tek bir vücut" gibi bağlar.
- Proxy-01 çökse bile: Oyuncular hiç fark etmeden Proxy-02'ye kayar, oyundan düşmez.
- Global Komutlar: Proxy-01'deki oyuncu ile Proxy-02'deki oyuncu sorunsuz şekilde /msg, /glist atabilir veya partiye katılabilir.
Adım 1: Redis Sunucusunu Kurma ve Sıkılaştırma (Linux/Ubuntu)
Proxy'lerin birbiriyle mikro saniyeler içinde haberleşmesi için bellek içi (In-Memory) çalışan Redis veritabanını Linux sunucumuza kuruyoruz.
Terminalinize kök (root) yetkisiyle girin ve şu komutları sırasıyla çalıştırın:
Bash:
[HEADING=2]Paket listesini güncelleyip Redis'i indiriyoruz[/HEADING]
sudo apt update && sudo apt install redis-server -y
[HEADING=2]Redis'in sistem açılışında otomatik başlamasını sağlıyoruz[/HEADING]
sudo systemctl enable redis-server
Şimdi Redis config dosyasını düzenleyerek dışarıdan güvenli bağlantıya açalım:
Bash:
nano /etc/redis/redis.conf
Dosya içinde şu satırları bulun ve belirtildiği şekilde değiştirin:
Kod:
[HEADING=2]Sadece local yerine tüm IP'lerden gelen isteklere izin veriyoruz (Eğer proxy'ler farklı makinedeyse)[/HEADING]
bind 0.0.0.0
[HEADING=2]Güvenlik modunu kapatıp şifreli erişime geçiyoruz[/HEADING]
protected-mode no
[HEADING=2]Redis için ultra güçlü bir şifre tanımlayın (MUTLAKA DEĞİŞTİRİN)[/HEADING]
requirepass CokGucluRedisSifresi2026!
[HEADING=2]RAM sınırını aşmaması için maxmemory limiti koyuyoruz (Örn: 2GB RAM)[/HEADING]
maxmemory 2gbmaxmemory-policy allkeys-lru
Değişiklikleri kaydedip (CTRL+X -> Y -> Enter) Redis servisimi yeniden başlatıyoruz:
Bash:
sudo systemctl restart redis-server
Adım 2: Proxy Sunucularında (Velocity/Bungee) Redis Konfigürasyonu
Bu adımda kurduğumuz 2 veya daha fazla Proxy sunucusuna RedisBungee (BungeeCord için) veya RedisVelocity (Velocity için) eklentisini yüklüyoruz.
Proxy-01 Config Ayarı (plugins/RedisBungee/config.yml):
YAML:
[HEADING=2]Redis Veritabanı Bağlantı Bilgileri[/HEADING]
redis-server: "127.0.0.1" # Redis başka makinedeyse oranın IP'sini yazınredis-port: 6379redis-password: "CokGucluRedisSifresi2026!"
[HEADING=2]BU PROXY'NIN BENZERSİZ KİMLİĞİ (Çok Önemli!)[/HEADING]
server-id: "proxy-01"
[HEADING=2]Global Komut Senkronizasyonları[/HEADING]
register-bungee-commands: trueexempt-ip-addresses: []
[HEADING=2]Gelişmiş Ağ Ayarları[/HEADING]
multicast-events: trueping-passthrough: true
Proxy-02 Config Ayarı (plugins/RedisBungee/config.yml):İkinci proxy sunucunuzdaki config dosyasını da birebir aynı şekilde yapıyorsunuz. Sadece tek bir satırı değiştiriyorsunuz:
YAML:
server-id: "proxy-02"
Adım 3: BungeeGuard ve Güvenlik Duvarı (IP-Forwarding)
Ağımızda birden fazla Proxy olduğu için alt sunucularımızın (Lobi, Skyblock vb.) yetkisiz girişlere maruz kalmaması adına BungeeGuard kullanmak şarttır.
- BungeeGuard eklentisini tüm Proxy'lerinize ve alt sunucularınıza yükleyin.
- Proxy-01 açıldığında plugins/BungeeGuard/token.yml dosyasında oluşan gizli anahtarı (Token) kopyalayın.
- Bu anahtarı tüm Proxy'lerinize ve alt sunucularınızdaki plugins/BungeeGuard/config.yml dosyasına yapıştırın:
YAML:
[HEADING=2]Tüm proxy'lerin ortak kabul edilen token anahtarı[/HEADING]
allowed-tokens:
[LIST]
[*]"eX3a8K0Lp9Z2mN7qR5tY1vW4uI8oP0aS"
Adım 4: HAProxy ile Yük Dengeleme (Load Balancing)
Oyuncular sunucuya play.sunucunuz.com adresinden bağlandığında, onları otomatik olarak en az yoğun olan Proxy'ye yönlendirecek olan HAProxy katmanını kuruyoruz.
Linux terminalinde HAProxy'yi kurun:
Bash:
sudo apt install haproxy -y
/etc/haproxy/haproxy.cfg dosyasının en altına şu yük dengeleme kodlarını ekleyin:
Kod:
[HEADING=2]Oyuncuların Karşılandığı Giriş Portu[/HEADING]
frontend minecraft_frontendbind *:25565mode tcpoption tcplogdefault_backend minecraft_proxies
[HEADING=2]Trafiğin Dağıtılacağı Proxy Sunucuları[/HEADING]
backend minecraft_proxiesmode tcpbalance roundrobin # Oyuncuları sırayla 1-2-3 şeklinde eşit dağıtıroption tcp-check
# Proxy Sunucularınızın IP ve Portları<br>server proxy1 127.0.0.1:25566 check<br>server proxy2 127.0.0.1:25567 check<br>
HAProxy servisini başlatın:
Bash:
sudo systemctl restart haproxy
Karşılaşılabilecek Hatalar ve Çözüm Yolları
1. Redis Connection Refused (Bağlantı Reddedildi):
- Sebep: Redis portu (6379) Linux güvenlik duvarı (UFW) tarafından engelleniyordur.
- Çözüm: Terminalden sudo ufw allow 6379/tcp komutu ile geçiş izni verin.
- Sebep: HAProxy arkasından gelen oyuncuların gerçek IP'leri kayboluyordur.
- Çözüm: Velocity kullanıyorsanız velocity.toml içinde haproxy-protocol = true ayarını aktif edin. BungeeCord kullanıyorsanız config.yml içinde proxy_protocol: true yapın.
- Sebep: Redis üzerindeki şifreler (redis-password) proxy'ler arasında uyuşmuyordur.
Özet ve Performans Değerlendirmesi
Bu mimariyi kurduğunuzda:
- Tek Çekirdek Darboğazı Biter: 2.000 oyuncuyu 4 farklı Proxy'ye bölerek sıfır lag ile oynatabilirsiniz.
- Çökme Riski Sıfırlanır: Proxy-01 çökse bile HAProxy milisaniyeler içinde trafiği Proxy-02'ye kaydırır.
- Tam Senkronizasyon: Oyuncular hangi proxy'de olursa olsun tek bir sunucudaymış gibi sohbet edebilir, parti kurabilir.
İyi forumlar, bol oyunculu sunucular!
elinize sağlık