HAProxy (seperti banyak penyeimbang beban) umumnya mempertahankan dua percakapan. Proxy memiliki sesi (tcp dalam hal ini) dengan klien, dan sesi lain dengan server. Karena itu dengan proxy Anda akhirnya melihat 2x koneksi pada load balancer. Karenanya semua lalu lintas mengalir melalui penyeimbang beban.
Ketika berbicara tentang penskalaan di beberapa penyeimbang beban, saya pikir Anda tidak perlu melakukannya. Tetapi cara praktis dan cukup mudah untuk melakukan ini adalah menggunakan sesuatu seperti tetap hidup dengan dua IP mengambang dan DNS round robin antara kedua IP tersebut. Dengan keepalived, jika salah satu penyeimbang beban turun yang lain akan menampung kedua IP, sehingga Anda mendapatkan ketersediaan tinggi dengan cara ini. Yang sedang berkata, saya pikir Anda akan baik-baik saja dengan satu contoh haproxy aktif dengan beban Anda.
Timbangan HAProxy sangat baik. Sebagai contoh, jaringan Stack Exchange menggunakan soket web yang mempertahankan koneksi TCP terbuka. Sementara saya memposting ini kami memiliki 143.000 soket TCP yang mapan di mesin virtual VMware tanpa masalah. Penggunaan CPU pada VM adalah sekitar 7%.
Dengan pengaturan semacam ini dengan HAProxy pastikan Anda mengatur maxconn
cukup tinggi. Berikut ini beberapa contoh konfigurasi HAProxy untuk membantu Anda memulai:
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