Ngingx Upstream Modül

Ngingx Upstream Modül

Ngingx Upstream Modül

ngx_stream_upstream_module modülü (1.9.0) proxy_pass direktifi tarafından referans alınabilen sunucu gruplarını tanımlamak için kullanılmaktadır.

 

Konfigürasyon Örneği

upstream backend {

hash $remote_addr consistent;

server backend1.example.com:12345 weight=5;

server backend2.example.com:12345;

server unix:/tmp/backend3;

server backup1.example.com:12345 backup;

server backup2.example.com:12345 backup;

}

 server {

listen 12346;

proxy_pass backend;

}

 

Periyodik health checks ile dinamik olarak konfigüre edilebilir grup commercial subscription (ticari aboneliğimizin) parçası olarak mevcuttur.

resolver 10.0.0.1;

 

upstream dynamic {

zone upstream_dynamic 64k;

 

server backend1.example.com:12345 weight=5;

server backend2.example.com:12345 fail_timeout=5s slow_start=30s;

server 192.0.2.1:12345 max_fails=3;

server backend3.example.com:12345 resolve;

server backend4.example.com service=http resolve;

 

server backup1.example.com:12345 backup;

server backup2.example.com:12345 backup;

}

 

server {

listen 12346;

proxy_pass dynamic;

health_check;

}

Direktifler

Syntax:

upstream name { ... }

Default:

Context:

stream

Bir sunucu grubunu tanımlar. Sunucular farklı portlar üzerinden dinleyebilirler. Ayrıca, TCP ve UNIX-domain soketler üzerinden dinleyen sunucular karıştırılabilir.

 

Örnek:

upstream backend {

server backend1.example.com:12345 weight=5;

server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;

server unix:/tmp/backend2;

server backend3.example.com:12345 resolve;

 

server backup1.example.com:12345 backup;

}

Varsayılan olarak, bağlantılar ağırlıklı bir round-robin dengeleme metodunu kullanan sunucular arasında dağıtılır. Yukarıdaki örnekte, her 7 bağlantı aşağıda belirtildiği gibi dağıtılacaktır: backend1.example.com:12345’e 5 bağlantı ve ikinci ve üçüncü sunucuların her birine bir bağlantı gidecektir. Bir sunucu ile iletişim esnasında bir hata meydana gelirse, faal olan sunucuların tamamı denene kadar, bağlantı bir sonraki sunucu ve diğerlerine geçecektir. Tüm sunucularla iletişim kesilirse, bağlantı kapanacaktır.

Syntax:

server address [parameters];

Default:

Context:

upstream

Bir sunucunun adres ve diğer parametrelerini tanımlamaktadır. Adres mecburi bir port ile bir alan adı veya IP adresi olarak, ya da unix:” önekinden sonra belirtilen bir UNIX-domain yolu olarak tanımlanabilir. Çeşitli IP adreslere çözümleyen bir alan adı aynı anda birçok sunucuyu tanımlamaktadır.

Aşağıdaki parametreler şöyle tanımlanabilir:

weight=number

varsayılan 1 olarak, sunucu ağırlığını ayarlar.

max_conns=number

Maksimum eş zamanlı bağlantıların sayısını vekil sunucu (1.11.5.)e sınırlandırır. Varsayılan değer, sınırın olmadığı anlamına gelen sıfırdır. Sunucu grubu shared memory (paylaşımlı bellek) içinde yer almadığı takdirde, limit her işçi sürecine göre işler.

1.11.5 sürümünden önce, bu parametre ticari aboneliğimizin parçası olarak mevcuttur.

max_fails=number

Aynı zamanda fail_timeout parametresi ile ayarlı bir sürede sunucuya ulaşım sağlanamaması göz önünde bulundurmak amacıyla, fail_timeout parametresi ile ayarlı sürede gerçekleşmesi gereken sunucu ile temas kurmak için başarısız girişimlerin sayısını ayarlar. Varsayılan olarak, başarısız girişimlerin sayısı 1’e ayarlanır. Sıfır değer, girişimlerin hesaplamasını etkisiz kılar. Burada, sunucu ile bağlantı kurarken başarısız bir girişim bir hata veya zaman aşımıdır.

fail_timeout=time

 

  • Sunucuya ulaşım sağlanamamasını göz önünde bulundurmak amacıyla, sunucu ile temas kurmak için belirlenen başarısız girişimlerin sayısı süresince zamanı ayarlar;

  • Ve sunucu zaman periyodu kullanım dışı olarak göz önünde bulundurulacaktır.

 

Varsayılan olarak, parametre 10 saniyeye ayarlanır.

 

Backup

Sunucuyu bir yedekleme sunucusu olarak işaretler. Yedekleme sunucusuna yapılan bağlantılar, ana sunucular kullanım dışı olduğunda geçirilecektir.

 

Down

Sunucuyu kalıcı bir şekilde kullanım dışı olarak işaretler.

 

Ayrıca, aşağıdaki parametreler commercial subscription (ticari aboneliğimizin) parçası olarak mevcutturlar.

resolve

bir sunucu alan adına karşılık gelen IP adres değişikliklerini takip eder ve nginx’i tekrar başlatma gereksinimi duymadan upstream konfigürasyonu üzerinde otomatik olarak değişiklik yapar. Sunucu grubu shared memory (paylaşımlı bellek) içinde yer almalıdır.

 

Bu parametrenin çalışması için, resolver direktifi stream bloğu içinde tanımlanmalıdır. Örnek:

 

 

stream {

resolver 10.0.0.1;

 

upstream u {

zone ...;

...

server example.com:12345 resolve;

}

}

service=name

DNS SRV kayıtlarının çözümlenmesine olanak tanır ve servis name (1.9.13) ayarlar. Bu parametrenin çalışması için, sunucu için resolve parametresini tanımlamak ve port numarası olmadan bir sunucu adı (hostname) belirlemek gerekir.

 

Hizmet adı bir nokta (“.”) içermiyorsa, o zaman RFC- uyumlu isim yapılandırılır ve TCP protokolü hizmet önekine eklenir. Örneğin, _http._tcp.backend.example.com SRV kaydını aramak için, yönergeyi belirlemek gerekir:

server backend.example.com service=http resolve;

Eğer hizmet bir ya da birden fazla hizmet adı içeriyorsa, o zaman isim, hizmet öneki ve sunucu adı ekleyerek yapılandırılır. Örneğin, _http._tcp.backend.example.com ve server1.backend.example.com SRV kayıtlarını aramak için şu yönergeleri belirlemek gerekir:

 

server backend.example.com service=_http._tcp resolve;

server example.com service=server1.backend resolve;

 

En yüksek önceliğe sahip SRV kayıtları (en düşük numaralı öncelik değerine sahip olan kayıtlar ile) ana sunucular olarak çözümlenir, geri kalan SRV kayıtları yedekleme sunucular olarak çözümlenir. Eğer backup (yedekleme) parametresi sunucu için tanımlanırsa, yüksek önceliğe sahip SRV kayıtları yedekleme sunucuları olarak çözümlenir, kalan SRV kayıtları ignore edilir.

 

slow_start=time

sunucunun kendi ağırlığını sıfırdan nominal değere düzelttiği süre boyunca time (zamanı) ayarlar, hatalı sunucu healthy (hatasız) hale geldiğinde, ya da sunucu bir zaman sonra mevcut olduğunda, unavailable (kullanım dışı) olarak düşünülür. Varsayılan değer sıfırdır, yani yavaş başlangıç işlevsiz hale gelir. Parametre hash yük dengeleme yöntemi ile birlikte kullanılamaz.

Bir grupta sadece tek bir sunucu bulunuyorsa, max_failsfail_timeout ve slow_start parametreleri ignore edilir ve böyle bir sunucu asla kullanım dışı olarak düşünülmeyecektir.

 

Syntax:

zone name [size];

Default:

Context:

upstream

Gerçekleşen işlemler arasında paylaşılan çalışma zamanı ve grup konfigürasyonunu sürdüren paylaşılan bellek bölgesine ait name ve size (ad ve boyut) tanımlar. Pek çok grup aynı bölgeyi paylaşabilir. Bu durumda, bölge boyutunu sadece bir kez belirlemek yeterlidir.

İlaveten, commercial subscription (ticari aboneliğimizin) parçası olarak, bu tür gruplar grup üyeliğini değiştirmeye ve nginx tekrar başlatmayı gerektirmeden belli bir sunucu ayarları üzerinde değişiklik yapmaya izin verir. Konfigürasyona API modülü (1.13.3) aracılığıyla erişilebilir.

 

1.13.3 sürümünden önce, konfigürasyona sadece upstream_conf tarafından işlenen özel bir lokasyon vasıtasıyla erişilebiliniyordu.

Syntax:

state file;

Default:

Context:

upstream

1.9.7. sürümünde ortaya çıkan bu direktif,

 

Dinamik anlamda konfigüre edilebilir grup durumunu sürdüren bir file (dosya)yı belirler.

Örnekler:

 

state /var/lib/nginx/state/servers.conf; # path for Linux

state /var/db/nginx/state/servers.conf; # path for FreeBSD

 

Durum şu anda parametrelerine sahip sunucuların listesiyle sınırlıdır. Konfigürasyon ayrıştırılırken dosya okunur ve upstream konfigürasyonu her değiştiğinde (changed) güncellenir. Dosya içeriğini doğrudan değiştirmekten kaçınılmalıdır. Direktif, server direktifi ile birlikte kullanılamaz.

binary upgrade ya da configuration reload süresince yapılan değişiklikler kaybolabilir.

Bu yönerge, commercial subscription (ticari aboneliğimizin) parçası olarak mevcuttur.

 

 

Syntax:

hash key [consistent];

Default:

Context:

upstream

İstemci sunucu eşlemesi hashed key value değerine bağlı olduğu yerde bir sunucu grubu için bir yük dengeleme metodu belirler. Key metin, değişkenler ve onların kombinasyonlarını (1.11.2) içerebilir. Kullanım örneği:

 

hash $remote_addr;

 

Bir sunucunun gruptan eklenmesinin ya da çıkarılmasının, anahtarların çoğunun farklı sunuculara yeniden yazılmasına neden olabileceğini dikkate alın. Yöntem Cache::Memcached Perl library ile uyumludur.

Eğer consistent parametresi belirlenirse, onun yerine ketama consistent hashing yöntemi kullanılacaktır. Yöntem, bir sunucu gruba eklendiğinde ya da gruptan çıkarıldığında yalnızca birkaç anahtarın farklı sunuculara yazılmasını sağlar. Bu, önbellek sunucuları için daha yüksek bir cache hit ratio elde edilmesine yardımcı olur. Yöntem, 160’a ayarlı ketama_points parametresi ile Cache::Memcached::Fast Perl library ile uyumludur.

Syntax:

least_conn;

Default:

Context:

upstream

 

Bir sunucu grubunun sunucuların ağırlıklarını dikkate alarak, bağlantının en az sayıda etkin bağlantılar ile sunucuya aktarıldığı yerde bir yük dengeleme metodu kullanması gerektiğini belirtir. Bu türde pek çok sunucu bulunuyorsa, sırayla ağırlıklı round-robin dengeleme metodu denenir.

Syntax:

least_time connect | first_byte | last_byte [inflight];

Default:

Context:

upstream

 

Bir grubun sunucuya en az ortalama süre ve en az sayıda etkin bağlantıya aktarıldığı ve sunucuların ağırlıkları dikkate alınarak bir yük dengeleme yöntemi kullanması gerektiğini belirtir. Bu türde çeşitli sunucu bulunuyorsa, sırayla ağırlıklı round-robin dengeleme metodu denenir.

Eğer connect parametresi belirtilirse, upstream sunucusuna bağlanmak için zaman kullanılır. first_byte parametresi belirtilirse, son bayt veriyi almak için zaman kullanılır. İnflight parametresi belirtilirse (1.11.6), yarım kalan bağlantılar da dikkate alınır.

1.11.6 sürümünden önce, yarım kalan bağlantılar varsayılan olarak dikkate alınmıştır.

Bu direktif commercial subscription (ticari aboneliğimizin) parçası olarak mevcuttur.

 

Gömülü Değişkenler

ngx_stream_upstream_module modülü aşağıda bulunan gömülü değişkenleri desteklemektedir:

$upstream_addr

IP adres ve portu, ya da upstream sunucusunun (1.11.4) UNIX-domain soket yolunu saklı tutar. Vekil süresince çeşitli sunucular ile temasa geçilmişse, adresleri virgül ile ayrılır, örneğin; 192.168.1.1:12345, 192.168.1.2:12345, unix:/tmp/sock”. Bir sunucu seçilemediği taktirde, değişken sunucu grubunun adını saklı tutar.

$upstream_bytes_sent

Bir upstream sunucuya (1.11.4) gönderilen baytlar numarası. Birçok bağlantıdan oluşan değerler $upstream_addr değişkenindeki adresler gibi virgüller ile ayrılır.

$upstream_bytes_received

Bir upstream sunucusundan (1.11.4) alınan baytların numarası. Birçok bağlantıdan oluşan değerler $upstream_addr değişkenindeki adresler gibi virgüller ile ayrılır.

$upstream_connect_time

Upstream sunucusuna (1.11.4) bağlanmak için zamandır; zaman milisaniye çözünürlüğü ile saniye olarak tutulur. Birçok bağlantıdan oluşan zaman $upstream_addr değişkenindeki adresler gibi virgüller ile ayrılır.

$upstream_first_byte_time

İlk veri baytını (1.11.4) almak için zaman; zaman milisaniye çözünürlüğü ile saniye olarak saklanır. Birçok bağlantıdan oluşan zaman $upstream_addr değişkenindeki adresler gibi virgüller ile ayrılır.

$upstream_session_time

Milisaniye çözünürlük (1.11.4) ile saniye olarak oturum süresi. Birçok bağlantıdan oluşan zamanlar $upstream_addr değişkenindeki adresler gibi virgüller ile ayrılır.

 

Ngingx Upstream Modül
Dedicated Sunucu Nedir ve...
  • 2019-02-21
  • 1
  • 1933
Ngingx Upstream Modül
WordPress nedir? Avantajl...
  • 2019-12-05
  • 1
  • 2830
Ngingx Upstream Modül
Wordpress CPU Kullanımı
  • 2019-12-06
  • 1
  • 906
Ngingx Upstream Modül
DDOS Nedir ? Korumalı Hos...
  • 2019-03-26
  • 1
  • 1420
Ngingx Upstream Modül
Email Hosting Nedir? Avan...
  • 2019-03-05
  • 1
  • 1193
Ngingx Upstream Modül
NGINX WAF Nedir?
  • 2019-03-26
  • 1
  • 1346