2011-06-27 37 views
17

Tôi đang làm việc để mở rộng ứng dụng của mình sang nhiều máy chủ và một yêu cầu là khách hàng luôn giao tiếp với cùng một máy chủ (quá nhiều dữ liệu trực tiếp được sử dụng để cho phép nảy giữa các máy chủ hiệu quả).Cân bằng tải (HAProxy hoặc khác) - Các phiên cố định

Thiết lập hiện tại của tôi là cụm máy chủ nhỏ (sử dụng Linode). Tôi có một nút giao diện người dùng chạy HAProxy bằng cách sử dụng "nguồn cân bằng" để một IP luôn được trỏ tới cùng một nút.

Tôi nhận thấy rằng "nguồn cân bằng" không phải là phân phối rất đồng đều. Với thiết lập thử nghiệm hiện tại của tôi (2 máy chủ phụ trợ), một máy chủ thường có nhiều kết nối 3-4x khi sử dụng kích thước mẫu 80-100 IP nguồn.

Có cách nào để đạt được phân phối cân bằng hơn không? Rõ ràng là các phiên dính gây ra sự cân bằng "hoàn hảo", nhưng phân chia 40/60 sẽ được ưu tiên hơn với tỷ lệ chia 25/75.

Trả lời

0

Bạn có thể điều chỉnh thuật toán cân bằng trong HA-Proxy có một số mặc dù có sẵn. Ví dụ: roundrobin hoặc ít nhất.

Nhưng bạn cần điều chỉnh nói chung cân bằng của bạn theo tên miền của người dùng được phân phát nội dung. Hầu hết các lần bạn cần làm các bài kiểm tra thực nghiệm và nhắc lại quyết định của bạn theo kết quả của bạn.

25

HAProxy hỗ trợ sửa đổi hoặc chèn cookie để cung cấp sự kiên trì phiên với tham số cookie.

Trong cả hai phụ trợ hoặc nghe phần, thêm dòng sau:

cookie COOKIENAME prefix 

Ví dụ này sẽ sửa đổi một cookie đang tồn tại bằng cách thêm tên của máy chủ để một cookie có tên COOKIENAME. Khách hàng của bạn sẽ thấy một cái gì đó như server1~someotherdata nhưng ứng dụng của bạn sẽ chỉ nhìn thấy phần someotherdata. Vì vậy, bạn có thể sử dụng điều này trên các cookie hiện có. Ngoài ra, phương pháp này cho phép bạn chỉ thực thi phiên hoạt động khi cookie đó tồn tại, có nghĩa là bạn vẫn có thể cân bằng đồng đều những người xung quanh phần tĩnh của trang web và chỉ thực thi độ dính khi cần, nhưng thêm tên cookie đó vào phiên.

Ngoài tên máy chủ của bạn, vì vậy dòng máy chủ của bạn trông giống như sau:

server server1 1.2.3.4 cookie server1 

Xem chi tiết là trong HAProxy config guide, nó cũng giống như bạn có thể sử dụng tham số appsession cấu hình là tốt. Khi bạn đã thực hiện việc này, bạn có thể chọn phương pháp số dư của riêng mình từ danh sách, tôi có xu hướng sử dụng roundrobin nhưng leastconn có thể cung cấp cho bạn số dư tốt hơn khi tính đến các phiên dính.


Thêm từ tài liệu hướng dẫn để làm cho nó dễ dàng hơn để tìm thấy phần tài liệu tham khảo:

cookie <name> [ rewrite | insert | prefix ] [ indirect ] [ nocache ] 
       [ postonly ] [ preserve ] [ domain <domain> ]* 
       [ maxidle <idle> ] [ maxlife <life> ] 
    Enable cookie-based persistence in a backend. 
    May be used in sections : defaults | frontend | listen | backend 
           yes | no | yes | yes 
Các vấn đề liên quan