N apache sunucuları arasında gelen web trafiğini nasıl dengeleyebilirim?


12

Dahili apache örnekleri arasında gelen trafik miktarını dengelemek için Heartbeat / Squid / Varnish / etc gibi bir şey kullanmak istiyorum. Tüm öğelerim VPS'de çalıştırıldığı için bu yazılım değil donanım olmalı. Terminolojiyi kötüye kullandığım ve yanlış paketleri seçtiğim için bu alanda çok fazla deneyimim yok.

Neyin peşinde olduğumu göstermek için bir şeyler hazırladım. Yeşil taraf, ilk kurulumun nasıl görüneceğidir ve mavi taraf, trafik artışı nedeniyle daha fazla apache örneği ekledikten sonra nasıl görünebileceğidir. Bu şeyler böyle olmayabilir, ama İdeal olarak dengeleyicilerin IP'lerini alanın DNS'sine eklerdim. Daha sonra dengeleyici (ler), her apache örneğinde (dahili IP'ler veya sonsuz IP'lerin bazı yapılandırma listesi aracılığıyla) kaç bağlantı olduğunu görür ve bağlantıları eşit olarak dağıtır. Mavide ikinci bir dengeleyici var, çünkü bir noktada dengeleyicinin de yardıma ihtiyacı olacağından eminim.

Belki bunu yanlış yapıyorum ama "dengeleyicilerin" ne olması gerektiği konusunda yardım ve onları nasıl kuracağım konusunda en iyi uygulamaları arıyorum.

Herhangi bir yardım çok iyi olurdu. alternatif metin


1
affedersiniz ama çizimleriniz için hangi programı kullandınız?
Prix

1
@Prix - Visio'ya benziyor ( office.microsoft.com/en-us/visio )
malonso

Yanıtlar:


4

Hemen hemen her "ters proxy" ne istersen yapacak.

Örneğin Vernik, Pound ve HAProksi, yaptıkları işte iyidir, ancak farklılıkları da vardır - ancak, sorduğunuz şey için, herhangi biri yapacak. Şahsen, HAProxy ile en iyi olacağını düşünürdüm, ama bu sadece bir tahmin.

Ne tür bir ihtiyacınız olduğuna karar vermenize yardımcı olmak için yük dengeleyicilerle ilgili bir makale okumak en iyisi olabilir: http://1wt.eu/articles/2006_lb/

Ayrıca, bunun için önceden oluşturulmuş bir hizmet kullanmayı düşünebilirsiniz - yazılımınızı Amazon'un Elastik Hesaplama Bulutu'nda çalıştırmak ve Elastik Yük Dengeleme işlevini kullanmak gibi.


2

İlk olarak, cevaplanması gereken önemli bir soru vardır:
kullanıcı oturumlarının yük dengeleyici (ler) tarafından ele alınması ve her zaman aynı web sunucusuna (canlıysa) yönlendirilmesi gerekiyor mu?

  • oturumlar gerekli değildir : bu durumda, yük dengeleyici olarak verimli nginx programını kullanmalısınız . Yapılandırmanın ayarlanması kolaydır, burada yalnızca bir deyimdeki web sunucularının listesini belirtmeniz gerekir upstream upstream_name { server1, ..., serverN }, ardından belirli bir etki alanı için basit bir proxy_pass upstream_nameyönerge gerekir .
    Bkz. Nginx wiki .

  • oturum için , oturum kimliğini ( ) barındıracak çerezin adını ve ardından tüm sunucularınız için bir listesini belirttiğiniz pound için benzer bir ayar vardır . Örneğin bkz . Pound kurulum örneği .ID MYCOOKIENAMEBACKEND

Birden fazla yük dengeleyicisine ihtiyaç duyulduğunda, heartbeatbelirli bir etki alanı için sanal IP'yi yalnızca bir dengeleyicinin bağlamasını sağlayacak bir yapılandırmaya gitmek isteyebilirsiniz (oturumlar gerekiyorsa veya her ikisini de bağlayın ve DNS'yi iki IP adresiyle besleyin örneği). Belki de bu gerekli olduğunda başka bir soruda daha ayrıntılı olmalıdır (araçlar hızla geliştikçe). Örneğin bu bağlantıya
da bakınız .


1

Mimarinize ek karmaşıklık ve tek bir hata noktası getirmek için çok iyi bir nedene ihtiyacınız var.

Round-Robin yük dengeleme

  • hiçbir maliyeti yok
  • uygulamak ve yönetmek kolaydır
  • istemciye yük devretme uygular - hatanın güvenilir bir şekilde algılanabileceği tek yer
  • dolaylı olarak sunucu benzeşimini destekler, ancak yapışkan oturumlarla ilişkili oturum yönetimi sorunları olmadan yük devretmeye izin verir
  • küme düğümlerinde ek yazılım / donanım / yapılandırma gerektirmez

Round-robin ile ilgili yapılan yanlış bilgi miktarını hayrete düşürüyor. Alaycı bir insan olsaydım, büyük pahalı yük dengeleme donanımı üreten satıcılarla herhangi bir bağlantı olup olmadığını merak edebilirim.

Kabul edeceğim tek nokta şu ki

  1. IPV4 adresleri kıt ve bu nedenle pahalı hale geliyor - ama yine de çok fazla. Cisco CSS'den çok daha ucuz.

  2. İnternet giderek daha fazla web hizmetlerinde çalışmaktadır ve tüm geliştiriciler özelliklere göre DNS desteği uygulamamaktadır . Ama şimdiye kadar kullandığım her tarayıcı olması gerektiği gibi çalışıyor


"ek yazılım gerektirmez" - webapp'ın oturum durumunu paylaşmasını gerektirir (giriş, alışveriş sepetinde ne var, vb.). Ve DNS RR'nin uzun süreler boyunca dengesiz yük dengelemesi olabilir. Evet, DNS RR uygulanabilir bir yöntemdir, ancak alternatiflerden neredeyse hiç üstün değildir ...
Jesper M



0

Nginx bir upstream proxy olarak harika, her gün 1M + uniques yapan bir yapılandırmada büyük bir başarıyla kullandım


0

Tamam, bu bir süre önce istendi ve partiye geç kaldım. Yine de buraya eklenecek bir şey var.

Jackie, hemen hemen çiviledin. Şekilde, çoğu küçük ve orta ölçekli kurulumda yük dengelemenin nasıl ele alındığı gösterilmektedir.

Sen okumalısınız Willy Tarreau tarafından yük dengeleme giriş Nakedible bağlantılı olduğunu. Hala geçerli ve iyi bir giriş.

Bunların ihtiyaçlarınızı nasıl karşıladığını düşünmeniz gerekir:

  • TCP / IP seviyesi yük dengeleyicileri (Linux Virtual Server et al). Ek yük başına en düşük, en yüksek hız, HTTP'yi "göremez".
  • HTTP düzeyinde yük dengeleyicileri (HAProxy, nginx, Apache 2.2, Pound, Microsoft ARR ve daha fazlası). Yüksek yük, HTTP görebilir, HTTP gzip olabilir, SSL yapabilir, yapışkan oturum yük dengeleme yapabilir.
  • HTTP ters proxy sunucuları (Apache Traffic Server, Vernik, Kalamar). Önbelleğe alınabilen nesneleri (bazı web sayfaları, css, js, resimler) RAM'de saklayabilir ve arka uç web sunucusuna dahil olmadan sonraki istemcilere iletebilir. L7 HTTP yük dengeleyicileriyle aynı şeyleri yapabilir.

bir noktada dengeleyicinin de yardıma ihtiyacı olacağından eminim ikinci bir dengeleyici var.

Eminim. Ancak yük dengeleme basittir ve genellikle tek bir yük dengeleyici hızlı gidebilir . Tek bir modern sunucunun hangi performans balo salonunun sağlayabileceğinin bir örneği olarak, web'de bir sinir oluşturan bu makaleye bağlantı veriyorum . İhtiyacınız olmadan birden fazla LB kullanmayın. Ortak bir yaklaşıma ihtiyacınız olduğunda, en önde IP seviyesi yük dengeleyicileri (veya DNS Round Robin), HTTP seviyesi yük dengeleyicilerine, proxy'lere ve webapp sunucularına gider.

"dengeleyicilerin" ne olması gerektiğine ve bunların nasıl oluşturulacağına ilişkin en iyi uygulamalara yardımcı olun.

Sorun nokta, oturum durumu işleme ve bir ölçüde başarısızlık durumu davranışıdır. Yük dengeleyicilerini kendileri kurmak nispeten kolaydır.

Yalnızca 2-4 arka uç webapp sunucuları kullanıyorsanız, kaynak IP adresine dayalı statik karma işleminin uygun olabileceğini unutmayın. Bu, webapp sunucuları arasında paylaşılan oturum durumu ihtiyacını ortadan kaldırır. Her webapp düğümü toplam trafiğin 1 / N'sini görür ve müşteri-sunucu eşlemesi normal çalışmada statiktir. Yine de daha büyük kurulumlar için uygun değildir.

En iyi iki yük dengeleme algoritması, yüksek yük ve hatta yük dağılımı altında iyi huylu davranışlara sahip olmaları açısından, yuvarlak robin ve gerçek rastgele yük dengeleme. Bunların her ikisi de, web uygulamanızın webapp düğümlerinde kullanılabilen genel oturum durumuna sahip olmasını gerektirir. Bunun nasıl yapılacağı webapp teknoloji yığınına bağlıdır; ancak bunun için genellikle standart çözümler mevcuttur.

Statik karma veya paylaşılan oturum durumu sizin için uygun değilse, seçim genellikle ' yapışkan oturum ' yük dengeleme ve sunucu başına oturum durumudur. Çoğu durumda bu iyi çalışır ve tamamen uygulanabilir bir seçimdir.

dengeleyiciler her apache örneğinde kaç bağlantı olduğunu görür (dahili IP'ler veya sonsuz IP'lerin bazı yapılandırma listesi aracılığıyla) ve bağlantıları eşit olarak dağıtır

Evet, bazı siteler bunu kullanıyor. Mevcut birçok farklı yük dengeleme algoritması için birçok isim vardır. Yuvarlak robin veya rastgele (veya ağırlıklı yuvarlak robin, rastgele ağırlıklı) seçerseniz, yukarıda verilen nedenlerden dolayı bunu yapmanızı tavsiye ederim.

Son şey: Birçok satıcının (üst düzey Fx, Cisco ve diğerleri, fx Coyote Point ve Kemp Technologies daha makul fiyatlarla) olgun yük dengeleme aletleri sunduğunu unutmayın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.