HAProxy (เช่นตัวโหลดบาลานซ์หลายตัว) โดยทั่วไปจะรักษาการสนทนาสองครั้ง พร็อกซีมีเซสชัน (tcp ในกรณีนี้) กับลูกค้าและอีกเซสชันหนึ่งกับเซิร์ฟเวอร์ ดังนั้นเมื่อใช้พรอกซีคุณจะเห็นการเชื่อมต่อ 2x บนตัวโหลดบาลานซ์ ดังนั้นทราฟฟิกทั้งหมดจะไหลผ่านตัวโหลดบาลานซ์
เมื่อพูดถึงการปรับขนาดตัวโหลดบาลานซ์หลายตัวฉันไม่คิดว่าคุณต้องทำ แต่วิธีที่ใช้งานได้จริงและค่อนข้างง่ายคือใช้บางอย่างเช่นเก็บไว้กับIP แบบลอยสองและDNS แบบปัดวนระหว่าง IP ทั้งสอง ถ้ามีคนใดคนหนึ่งโหลดบาลานเซอร์ลงไปอีกคนหนึ่งจะถือ IP ทั้งสองไว้ดังนั้นคุณจะได้รับความพร้อมใช้งานสูงด้วยวิธีนี้ ที่ถูกกล่าวว่าฉันคิดว่าคุณจะดีกับอินสแตนซ์ haproxy หนึ่งที่ใช้งานกับการโหลดของคุณ
HAProxy ชั่งได้ดีมาก ตัวอย่างเช่นเครือข่าย Stack Exchange ใช้เว็บซ็อกเก็ตซึ่งรักษาการเชื่อมต่อ TCP แบบเปิด ในขณะที่ฉันโพสต์สิ่งนี้เรามี 143,000 ซ็อกเก็ต TCP ที่สร้างขึ้นบนเครื่องเสมือน VMware โดยไม่มีปัญหา การใช้งาน CPU บน VM ประมาณ 7%
ด้วยการตั้งค่าประเภทนี้ด้วย HAProxy ให้แน่ใจว่าคุณตั้งค่าไว้maxconn
สูงพอ นี่คือตัวอย่างการกำหนดค่า HAProxy เพื่อให้คุณเริ่มต้น:
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