Nasıl Çalışır?

HAProxy, tek iş parçacıklı (single-threaded), olay güdümlü (event-driven), engellemeyen (non-blocking) bir motordur. Veri iletme hedefi göz önünde bulundurularak tasarlandığından, mimarisi mümkün olan en az işlemle verileri mümkün olduğunca hızlı taşımak için optimize edilmiştir. Bu nedenle, her seviyede verinin bypass mekanizmaları sunan katmanlı bir model uygular ve verilerin gerekmedikçe daha yüksek seviyelere ulaşmamasını sağlar. İşlemenin çoğu çekirdekte gerçekleştirilir ve HAProxy, bazı ipuçları vererek veya daha sonra gruplandırılabileceğini tahmin ettiğinde belirli işlemlerden kaçınarak çekirdeğin işi mümkün olduğunca hızlı yapmasına yardımcı olmak için elinden geleni yapar. Sonuç olarak testler HAProxy'de harcanan işlem süresinin %15'ini, TCP veya HTTP close mode çekirdeğin %85'ini ve HAProxy için yaklaşık% 30'unu HTTP Keep-alive modunda çekirdek için %70'ini kullanır.

Tek bir işlem birçok proxy örneği çalıştırabilir; Tek bir işlemde 300.000 ayrı proxy yapılandırmasının iyi çalıştığı test edilmiş. Bu nedenle, genellikle tüm örnekler için birden fazla işlem başlatmaya gerek yoktur.

HAProxy'nin birden fazla işlem üzerinde çalışmasını sağlamak mümkündür, ancak birkaç sınırlama ile birlikte gelir. Çekirdek tarafı connect() gibi bazı işlemlerde çok iyi ölçeklenmediğinden, genel olarak HTTP close veya TCP modlarında bir anlam ifade etmez. HTTP keep-alive modu için oldukça iyi ölçeklendirilir, ancak tek bir işlemden elde edilebilen performans genellikle ortak ihtiyaçları büyüklük sırasına göre daha iyi yapar. Bununla birlikte, SSL offloader olarak kullanıldığında mantıklıdır ve bu özellik çok işlemli modda iyi desteklenir.

HAProxy başladıktan sonra, tam olarak 3 şey yapar:

  1. Gelen bağlantıları işlemek;

  2. Sunucuların durumunu düzenli olarak kontrol eder (health check);

  3. Diğer HAProxy düğümleriyle iletişim kurar.

Last updated