2011-06-27 19 views
17

Uygulamamı birden çok sunucuya ölçeklendirmeye çalışıyorum ve bir gereksinim, bir istemcinin her zaman aynı sunucuyla iletişim kurmasıdır (çok fazla canlı veri sıçramasına izin vermek için kullanılır) sunucular arasında verimli bir şekilde).Yük Dengeleme (HAProxy veya diğer) - Sabit Oturumlar

Geçerli ayarım küçük bir sunucu kümesi (Linode kullanarak). Ben bir IP her zaman aynı düğüme doğru işaret böylece "denge kaynağı" kullanarak HAProxy çalıştıran bir ön uç düğüm var.

"Denge kaynağı" nın çok eşit bir dağılım olmadığını farkettim. Mevcut test kurulumumla (2 arka uç sunucusu), bir sunucu genellikle 80-100 kaynak IP'lerin örnek büyüklüğünü kullanırken birçok bağlantıya 3-4x sahiptir.

Daha dengeli bir dağılım elde etmek için herhangi bir yolu var mı? Belli ki yapışkan oturumlar "mükemmel" bir dengeyi yasaklıyor, ancak 25/75'lik bir bölüme 40/60 oranında bir bölünme tercih edilecek.

cevap

0

HA-Proxy'deki dengeleme algoritmasını ayarlayabilirsiniz, ancak bazı kullanılabilir. Ör. yuvarlak veya en küçük bağlantı.

Ancak, genel olarak, içeriğinizin sunulduğu kullanıcıların etki alanına göre dengelemenizi ayarlamanız gerekir. Çoğu zaman ampirik testler yapmalı ve kararlarınızı bulgularınıza göre tekrar etmelisiniz.

25

HAProxy, cookie parametresiyle oturum sürekliliği sağlamak için bir çerezi değiştirmeyi veya eklemeyi desteklemektedir. arka uç veya bölümlerini dinlemek ikisinde de

şunları ekleyin:

cookie COOKIENAME prefix 

Bu örnek mevcut çerezi değiştirecektir COOKIENAME adında bir çerez sunucunun adını ekleyerek. Müşteriniz server1~someotherdata gibi bir şey görecektir, ancak uygulamanız sadece someotherdata bölümünü görecektir. Böylece bunu mevcut çerezlerde kullanabilirsiniz. Buna ek olarak, bu yöntem yalnızca o çerezin varlığını sürdürmenizi sağlar; yani, sitenizin statik bölümleri etrafındaki insanları dengeli bir şekilde dengeleyebilir ve yalnızca gerektiğinde yapışkanlığı zorlayabilir, ancak bu çerez adını oturuma ekleyebilir.

Ayrıca sunucularını isim, bu nedenle sunucu hatları aşağıdaki gibi görünecektir:

server server1 1.2.3.4 cookie server1 

daha fazla ayrıntı siz de appsession yapılandırma parametresini kullanabilirsiniz gibi o da görünüyor HAProxy config guide içindedir.

Bunu yaptıktan sonra, listeden kendi denge yönteminizi seçebilirsiniz, roundrobin'u kullanma eğilimindeyim ancak leastconn, yapışkan oturumlar dikkate alındığında size daha iyi bir denge verebilir.

cookie <name> [ rewrite | insert | prefix ] [ indirect ] [ nocache ] 
       [ postonly ] [ preserve ] [ domain <domain> ]* 
       [ maxidle <idle> ] [ maxlife <life> ] 
    Enable cookie-based persistence in a backend. 
    May be used in sections : defaults | frontend | listen | backend 
           yes | no | yes | yes 
:


belgelerinden Daha kolay referans bölümüne bulmasını sağlamak