HAProxy (birçok yük dengeleyici gibi) genellikle iki görüşmeyi sürdürür. Proxy'nin istemciyle bir oturumu (bu durumda tcp) ve sunucuyla başka bir oturumu vardır. Bu nedenle vekillerle yük dengeleyicideki bağlantıları 2 kat görürsünüz. Bu nedenle tüm trafik yük dengeleyiciden akar.
Birden fazla yük dengeleyicisinde ölçeklendirme söz konusu olduğunda, ihtiyacınız olduğunu düşünmüyorum. Ancak bunu yapmanın pratik ve oldukça kolay bir yolu, iki değişken IP ile keepalived ve bu iki IP arasında yuvarlak robin DNS gibi bir şey kullanmaktır . Keepalived ile, yük dengeleyicilerinden biri düşerse diğeri her iki IP'yi de tutacaktır, böylece bu şekilde yüksek kullanılabilirlik elde edersiniz. Bununla birlikte, yükünüzle birlikte bir aktif haproksi örneği ile iyi olacaksınız.
HAProxy çok iyi ölçeklenir. Bir örnek olarak, Stack Exchange ağı açık TCP bağlantılarını koruyan web soketleri kullanır. Bunu gönderirken bir VMware sanal makinesinde 143.000 kurulu TCP soketi var. VM'deki CPU kullanımı yaklaşık% 7'dir.
HAProxy ile bu tür bir kurulumla, maxconn
yeterince yüksek ayarladığınızdan emin olun . Başlamanız için bazı örnek HAProxy yapılandırması:
frontend fe_websockets
bind 123.123.123.123:80
mode tcp
log global
option tcplog
timeout client 3600s
backlog 4096
maxconn 50000
default_backend be_nywebsockets
backend be_nywebsockets
mode tcp
option log-health-checks
option redispatch
option tcplog
balance roundrobin
server web1 10.0.0.1:1234
server web2 10.0.0.2:1234
timeout connect 1s
timeout queue 5s
timeout server 3600s