Nginx ve Upstream Yapısı
Nginx, yüksek performanslı bir web sunucusu ve ters proxy sunucusu olarak bilinir. Yük dengelemesi ve dağıtık mimariler için yaygın olarak kullanılmaktadır. Upstream, Nginx’in daha fazla bilgi sağlamak amacıyla yönlendirdiği bir grup sunucudur. Bu yapı, istemciden gelen isteklerin hangi sunuculara dağıtılacağını belirler. Upstream sunucuları yönetmek, uygulama performansı ve kullanılabilirliği açısından kritik öneme sahiptir. Yöneticiler, gerekli durumlarda yeni sunucular ekleyebilir, mevcut sunucuları çıkarabilir veya devre dışı bırakabilir.
Upstream Tanımlama
Upstream sunucuları tanımlamak için Nginx yapılandırma dosyasında `upstream` direktifi kullanılır. Bu direktif içinde istenilen sunucular belirtilir. Örneğin:
“`
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
“`
Yukarıdaki yapılandırma, iki sunucudan oluşan bir upstream grubu tanımlar. Bu grup “backend” ismiyle anılacaktır. Nginx, gelen istemci isteklerini bu sunucular arasında yük dengelemesi yaparak dağıtacaktır.
Sunucu Ekleme
Yeni bir sunucu eklemek, mevcut bir upstream grubuna yeni bir `server` direktifi ekleyerek gerçekleştirilir. Örneğin, mevcut yapılandırmaya yeni bir sunucu eklemek için aşağıdaki gibi bir değişiklik yapılabilir:
“`
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com; Yeni eklenen sunucu
}
“`
Yapılandırma dosyası kaydedildikten sonra, Nginx’in yapılandırma dosyasını yeniden yüklemesi gerekir. Bu işlem için aşağıdaki komut kullanılabilir:
“`
sudo nginx -s reload
“`
Bu komut, sunucu yapılandırmasını yeniden yükler ve yeni eklenen sunucu geçerli hale gelir.
Sunucu Çıkarma
Mevcut bir upstream sunucusunu çıkarmak da oldukça basittir. Çıkarılacak sunucuya ait `server` direktifi, yapılandırma dosyasından silinmelidir. Örneğin:
“`
upstream backend {
server backend1.example.com;
server backend2.example.com; Çıkarılan sunucu
}
“`
Bu değişiklik yapıldıktan sonra, yapılandırma dosyası yeniden kaydedilmeli ve Nginx yeniden yüklenmelidir:
“`
sudo nginx -s reload
“`
Böylece, çıkarılan sunucu artık yük dengelemesi sürecine dahil edilmez.
Sunucu Devre Dışı Bırakma
Bir sunucunun geçici olarak devre dışı bırakılması gerekiyorsa, sunucu tanımlamaları üzerinde `down` ifadesi kullanılır. Bu, sunucunun yanıt vermediği ve ister istemez yük dengelemesi sırasında dikkate alınmadığı anlamına gelir. Örnek bir yapılandırma:
“`
upstream backend {
server backend1.example.com;
server backend2.example.com down; Devre dışı bırakılan sunucu
}
“`
Bu değişiklik ile birlikte, `backend2.example.com` sunucusu devre dışı bırakılmış olur. Yine, yapılan değişiklerin geçerli olması için Nginx yeniden yüklenmelidir:
“`
sudo nginx -s reload
“`
Sağlıklı Sunucu Kontrolü
Nginx, yük dengelemesi yaptığı sunucuların sağlık durumunu otomatik olarak kontrol etmez. Bununla birlikte, `max_fails` ve `fail_timeout` direktifleri kullanılarak, belirli bir hata sayısına ulaşıldığında bir sunucunun devre dışı bırakılması sağlanabilir. Örneğin:
“`
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=30s;
server backend2.example.com;
}
“`
Bu yapılandırma, `backend1.example.com` sunucusunun üç başarısız isteğe yanıt vermemesi durumunda, 30 saniye boyunca devre dışı bırakılmasını sağlar.
Performans İyileştirmeleri
Upstream sunucularının performansını artırmak için, bağlantı sayısını arttırmak amacıyla `keepalive` direktifi kullanılabilir. Bu, sunucu ile istemci arasındaki bağlantının daha uzun süre açık kalmasını sağlar, böylece yeni bağlantılar için zaman kaybı minimize edilir. Örnek yapılandırma:
“`
upstream backend {
server backend1.example.com;
server backend2.example.com;
keepalive 32; 32 sürekli bağlantı
}
“`
Bu ayarın kullanılması, sunucuların daha hızlı yanıt vermesine yardımcı olur.
Güncellemelerin Geçerliliği
Yapılandırma dosyasında yapılan her değişiklikten sonra Nginx’in yeniden yüklenmesi gerekir. Bu işlem, sunucunun yapılandırmasının güncellenmesini sağlar ve yapılan değişikliklerin geçerli olmasını sağlar. Ayrıca, yapılandırma dosyası değişikliklerinden önce mutlaka yedek almak, olası sorunların önüne geçmek açısından faydalı olacaktır. Yapılandırma dosyası kontrolü için:
“`
sudo nginx -t
“`
Bu komut, yapılandırma dosyasını kontrol eder ve hataları bildirir.
Nginx upstream sunucuları yönetmek, bu yöntemler sayesinde kolaylaşmaktadır. Doğru yapılandırma ve düzenli bakım ile sistem performansı artırılabilir ve sorunsuz bir yük dengelemesi sağlanabilir.