Katman 4 vs Katman 7 Yük Dengeleme


21

Veri merkezim için bir katman 4 yük dengeleme çözümü veya bir katman 7 çözümü arasında karar vermeye çalışıyorum. Ne yazık ki (akıl sağlığım için, yani), benim kullanım durumum, her iki çözümün de iyi çalışacağı, zayıf yönlerin çoğundan kaçınma ve diğer güçlerini gerçekten kullanmamaya yetecek kadar basit. Hangi çözümü kullanırsak kullanın, yüksek kullanılabilirliğe ve yüksek verime sahip olmak zorundadır. Ancak, yalnızca "yapışkan" oturum yönetimi (çerez veya IP), karmaşık yeniden yazma kuralları veya herhangi bir konuda yeniden yazma kuralları olan herhangi bir gereksinimi olmayan bir web sunucusu kümesi üzerinden denge yüklemek için kullanmayı planlıyoruz. herşey.

Yük dengeleyiciler, hem veri merkezi toplama katmanına bağımsız bir bağlantısı olan iki anahtara bağlanacak hem de Hızlı Yayılma Ağacı kullanılarak ve anahtarların sanallaştırma için kullandığı her hangi bir özel protokol kullanılarak birleştirilecektir. Yük dengeleyiciler aynı zamanda bir çapraz kablo üzerinden birbirlerine çapraz bağlanacaktır. Kümedeki tüm sunucular her iki anahtara bağlı. Yük dengeleyicilerin tek yapması gereken, onların üzerindeki trafiği işaret etmek.

Sadece HTTP olduğundan, HAProxy veya nginx gibi bir katman 7 yük dengeleme çözümü kullanabilirim. Ancak LVS projesini ldirectord veya keepalived veya her neyse kullanabilirim.

Artıları ve eksileri, onları gördüğüm gibi ayırmaya çalıştım, ama bu sadece bir yıkamanın sonunda bitiyor. Ne tavsiye edersiniz ve neden? Bir şey mi eksik?

Yanıtlar:


17

"L7" nin haproxy gibi faydalı bir yararı, aynı tarayıcının aynı arka uç sunucusuna ulaşmasını sağlamak için çerezleri kullanabilmektir. Bu hata ayıklama istemcisi çok daha kolay vurur.

L4 balanslama işlemi, çeşitli arka uç sunucularda tek bir kullanıcıyı zıplatabilir. (bazı durumlarda avantajlı olabilir, ancak hata ayıklama / profilleme anlamında "L7" kullanımı çok daha değerlidir.)

EDIT: HTTP dengelemeyi kullanmanın da potansiyel bir hız avantajı var. Keep-alives ile müşteriler dengeleyicinize tek bir TCP oturumu açabilir ve daha sonra yeni TCP oturumlarını (3-yollu el sıkışma) yeniden kurmak zorunda kalmadan birçok HIT gönderebilir. Benzer şekilde, birçok LB, arka uçta aynı el sıkışma işlemini yapma gereksinimini ortadan kaldırarak arka uç sistemler için canlı tutma oturumları sürdürür.

Sıkı TCP yük dengeleme, her ikisini de bu kadar kolay başaramaz.

/ * FWIW: "L7" veya "L4" demezdim, HTTP veya TCP derdim. Ancak, OSI'yi eşleşmeyen şeyleri tanımlamak için kullanmaktan kaçındığım için ben bir yapıştırıcıyım. * /

Temelde ne konuşlandırılacağından emin değilseniz, sizin için basit ve doğal olan şeylere gidin. Test edin (apache tezgahı kullanın?) Ve ihtiyaçlarınız için çalıştığından emin olun. Bana göre HTTP LB daha doğal.


Yapışkanlık, çerez bazlı veya IP bazlı, kesinlikle L7 anahtarlamanın bir avantajıdır. Ancak uygulamamızın özellikle yararlanabileceği bir şey değil.
Scrivener

HTTP düzeyindeki yük dengelemenin bir dezavantajı, yük devretme ikisi arasında gerçekleşmesi için HTTP dengeleyicilerin önünde bir TCP düzeyi yük dengeleyicisine sahip olmanız gerekmiyor mu?
Scrivener

@ Scrivener - yapmamalısın, hayır. round-robin DNS, sorunuzu yanlış anlamadığım sürece inandığımın üstesinden gelebilir.
mfinni

@mfinni: Küresel coğrafi DNS, veri merkezi başına bir IP'ye işaret edebilir. Bu IP'ye cevap verecek bir şeye ihtiyacım var.
Scrivener

Anlıyorum. Bu, cihazınızın özelliklerine bağlıdır. Büyük olasılıkla donanım TCP / IP yük dengeleyici gerektirmeyen tek bir VIP küme ile birlikte çalışabilen L7 özellikli bir aygıt bulabilirsiniz. IIS ve MS Windows NLB bunu yapabilirse, diğer pek çok ticari ürünün de yapabileceğini hayal ediyorum.
mfinni

4

Size L7 balanslama yapmanın avantajı olmadığı için, bunun yerine L4 bakiyesine karar verdim. Çok fazla fedakarlık etmeden mümkün olduğunca basit tutmanın büyük bir hayranıyım.

L7, dengeleyicilerin, paketlerin içerisindeki http başlıklarını uygun yönlendirme için incelemelerini, ek bir ek yük ve son kullanıcı için gecikme süresinde marjinal bir artış yapmasını gerektirir. Hiçbir şey elde edemezsen, bana anlamsız bir masraf gibi geliyor.


0

Bazı DNS sağlayıcıları, basit yerine çalışma işlevselliğine sahiptir. Gereksinimlerinizin ne olmadığı ve ne olmadıklarından bahsettiniz, ancak tek ihtiyacınız olan şey yük devretme olan bir yük devretme olan yuvarlak robin ise, örneğin zoneedit.com'un Yük Devretme özelliğini kullanabilirsiniz . HA gereksinimlerinize bağlı olarak, yeterince iyi olabilir ve mimarinizdeki tüm aşamayı atlayabilirsiniz.


Keşke bu kadar basit olsaydı - başarısız olan yuvarlak robin ve artı coğrafi ayrılık gibi bir şeye ihtiyacımız var. Ancak bunların hepsi söz konusu değil, çünkü bir dış şirket tarafından yapılıyor.
Scrivener

Ne demek istiyorsun - sanırım, DNS'nin dış bir şirket tarafından da yapıldığını ve bazılarının coğrafi yük dengelemesini ve bir DNS hizmeti olarak yerine çalışmalarını desteklediğini düşünüyorum - ya da siz ve DNS sağlayıcısı arasında ek bir üçüncü taraf olduğunu ya da doğrudan DNS üzerinden söylemediğiniz mi?
Ernest Mueller

Eski - zaten farklı veri merkezlerine dengeleme ve coğrafi yük dengelemesi yapan bir dış şirketle DNS yapıyoruz. Sadece veri merkezindeki dengeyi yüklemem gerekiyor.
Scrivener

Aynı tur robinini sunucu için ön uçtan sunucuya kullanabilirsin, değil mi? Yuvarlak robin yük dengeleme için DNS genellikle tek bir veri merkezi için kullanılır; çoklu coğrafi konumlar bunun üzerinde büyük bir çocuk gereksinimidir.
Ernest Mueller
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.