HAProxy (giống như nhiều bộ cân bằng tải) thường duy trì hai cuộc hội thoại. Proxy có phiên (tcp trong trường hợp này) với máy khách và phiên khác với máy chủ. Do đó, với proxy bạn sẽ thấy gấp đôi kết nối trên bộ cân bằng tải. Do đó tất cả lưu lượng truy cập thông qua cân bằng tải.
Khi nói đến việc nhân rộng trên nhiều bộ cân bằng tải, tôi không nghĩ bạn cần phải làm vậy. Nhưng một cách thực tế và khá dễ dàng để làm điều này là sử dụng một cái gì đó như được giữ lại với hai IP nổi và DNS tròn giữa hai IP đó. Với chế độ giữ nguyên, nếu một trong các bộ cân bằng tải đi xuống thì cái kia sẽ giữ cả hai IP, do đó bạn có tính sẵn sàng cao theo cách này. Điều đó đang được nói, tôi nghĩ rằng bạn sẽ ổn với một ví dụ haproxy hoạt động với tải của bạn.
HAProxy cân rất tốt. Một ví dụ, mạng Stack Exchange sử dụng các ổ cắm web duy trì các kết nối TCP mở. Trong khi tôi đăng bài này, chúng tôi có 143.000 socket TCP được thiết lập trên máy ảo VMware mà không gặp vấn đề gì. Việc sử dụng CPU trên VM là khoảng 7%.
Với kiểu thiết lập này với HAProxy, đảm bảo bạn đặt maxconn
đủ cao. Dưới đây là một số ví dụ cấu hình HAProxy để giúp bạn bắt đầu:
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