2008-11-04 24 views
45

Chúng tôi đã chiến đấu với HAProxy trong vài ngày nay tại Amazon EC2; kinh nghiệm cho đến nay là tuyệt vời, nhưng chúng tôi đang bị mắc kẹt khi ép thêm hiệu suất ra khỏi cân bằng tải phần mềm. Chúng tôi không chính xác là mạng whizzes Linux (chúng tôi là một cửa hàng .NET, thông thường), nhưng chúng tôi đã cho đến nay tổ chức riêng của chúng tôi, cố gắng thiết lập đúng ulimits, kiểm tra thông điệp hạt nhân và tcpdumps cho bất kỳ bất thường. Cho đến nay, chúng tôi đã đạt đến một cao nguyên khoảng 1.700 yêu cầu/giây, tại thời điểm đó khách hàng hết thời gian chờ (chúng tôi đã sử dụng và tinh chỉnh httperf cho mục đích này). Một đồng nghiệp và tôi đang nghe podcast Stack Overflow gần đây nhất, trong đó những người sáng lập Reddit lưu ý rằng toàn bộ trang web của họ chạy ra khỏi một nút HAProxy, và cho đến nay nó vẫn chưa trở thành một nút cổ chai. Ack! Hoặc bằng cách nào đó không thấy rằng nhiều yêu cầu đồng thời, chúng tôi đang làm điều gì đó khủng khiếp sai, hoặc bản chất chung của EC2 đang hạn chế ngăn xếp mạng của cá thể Ec2 (chúng tôi đang sử dụng một loại cá thể lớn). Xem xét thực tế là cả hai nhà sáng lập Joel và Reddit đều đồng ý rằng mạng có thể sẽ là yếu tố hạn chế, có thể đó là giới hạn mà chúng ta đang thấy không?Cân bằng tải trong Amazon EC2?

Bất kỳ suy nghĩ nào được đánh giá cao!

Chỉnh sửa Có vẻ như vấn đề thực tế không thực tế, với nút cân bằng tải! Thủ phạm thực sự là các nút chạy httperf, trong trường hợp này. Như httperf xây dựng và rơi xuống một ổ cắm cho mỗi yêu cầu, nó dành một số lượng tốt thời gian CPU trong hạt nhân. Khi chúng tôi tăng tốc độ yêu cầu cao hơn, TCP FIN TTL (là 60 giây theo mặc định) đã giữ khoảng cách quá lâu và mặc định của ip_local_port_range quá thấp cho kịch bản sử dụng này. Về cơ bản, sau vài phút nút khách hàng (httperf) liên tục tạo và phá hủy các ổ cắm mới, số cổng không sử dụng đã hết, và các yêu cầu 'bị lỗi' tiếp theo ở giai đoạn này, cho số yêu cầu/giây thấp và số lượng lớn lỗi.

Chúng tôi cũng đã xem nginx, nhưng chúng tôi đã làm việc với RighScale, và họ đã có kịch bản thả xuống cho HAProxy. Oh, và chúng tôi đã có một thời hạn quá chặt chẽ [tất nhiên] để chuyển đổi các thành phần trừ khi nó chứng minh hoàn toàn cần thiết. Một cách thương xót, trên AWS cho phép chúng tôi thử nghiệm một thiết lập khác bằng nginx song song (nếu được bảo đảm), và thực hiện chuyển đổi qua đêm sau này.

This page mô tả từng biến số sysctl khá tốt (ip_local_port_range và tcp_fin_timeout được điều chỉnh, trong trường hợp này).

+3

Marc, bạn nên viết kinh nghiệm của mình bằng cách định cấu hình nội dung này và đăng chúng ở đâu đó (công ty của bạn có blog không?). Âm thanh như nó có thể hữu ích cho rất nhiều người. Đã bỏ phiếu cho câu hỏi của bạn. – SquareCog

+0

Liên kết của bạn bị hỏng. – Ztyx

+0

@Ztyx cảm ơn! Chỉ cần cập nhật nó. Tôi đã tìm hiểu về một nguồn mới hơn, cập nhật hơn, có vẻ như trang web gốc vẫn có PageRank khá cao và nội dung vẫn khá phong nha, vì vậy tôi chỉ chỉnh sửa nó để phản ánh URL mới. –

Trả lời

9

Không thực sự là câu trả lời cho câu hỏi của bạn, nhưng nginx và cả hai đều có danh tiếng tốt như cân bằng tải. Wordpress chỉ switched to nginx với kết quả tốt.

Nhưng cụ thể hơn, để gỡ lỗi sự cố của bạn. Nếu bạn không nhìn thấy 100% sử dụng CPU (bao gồm cả I/O chờ đợi), sau đó bạn đang bị ràng buộc mạng, có. EC2 sử dụng mạng gigabit nội bộ, hãy thử sử dụng phiên bản XL, vì vậy bạn có phần cứng cơ bản cho chính mình và không phải chia sẻ cổng mạng gigabit đó.

1

Tôi sẽ xem xét việc chuyển sang cân bằng tải ngoài trang web, không phải trong đám mây và chạy một cái gì đó giống như IPVS trên đầu trang của nó. [Lý do tại sao nó sẽ được tắt của đám mây của amazon là vì hạt nhân công cụ] Nếu Amazon không giới hạn nguồn IP của các gói dữ liệu sắp ra của bạn có thể đi với một cơ chế cân bằng tải unidirectional. Chúng tôi làm một cái gì đó như thế này, và nó cho chúng tôi khoảng 800.000 yêu cầu đồng thời [mặc dù chúng tôi không đối phó với độ trễ]. Tôi cũng sẽ nói sử dụng "ab2" (băng ghế dự bị apache), vì nó thân thiện với người dùng hơn một chút và dễ sử dụng hơn trong quan điểm khiêm tốn của tôi.

+0

Bạn biết bạn đã viết toàn bộ tin nhắn của mình bằng chữ in đậm? Nó khá khó đọc. –

20

Không trả lời trực tiếp câu hỏi, nhưng EC2 hiện hỗ trợ cân bằng tải thông qua Elastic Load Balancing thay vì chạy cân bằng tải của riêng bạn trong phiên bản EC2.

EDIT: Dịch vụ DNS tuyến 53 của Amazon hiện cung cấp cách trỏ tên miền cấp cao nhất tại ELB bằng bản ghi "bí danh". Vì Amazon biết địa chỉ IP hiện tại của ELB, nó có thể trả về bản ghi A cho IP hiện tại thay vì phải sử dụng bản ghi CNAME, trong khi vẫn được tự do thay đổi IP theo thời gian.

+0

Cảm ơn những người đứng đầu, tôi thực sự đánh giá điều này vào lúc này. Công cụ thú vị rất nhiều (mặc dù các công cụ dòng lệnh để lại một chút để được mong muốn)! –

+3

Thật không may, giải pháp cân bằng tải AWS (ELB) có một lỗ hổng lớn. Nó được thiết kế để sử dụng CNAMES ngăn người dùng trỏ một tên miền cấp cao trực tiếp tại bộ cân bằng tải. Nói cách khác, bạn có thể trỏ www.mydomain.com sang ELB nhưng không trỏ tới mydomain.com. Đối với nhiều người, đó là một showstopper. – kpw

+0

Bạn không thể chuyển hướng tất cả cuộc gọi đến trang web của mình sao cho www. sẽ được gõ vào? –

3

Có, Bạn có thể sử dụng cân bằng tải ngoài trang web .. và trên LVS kim loại trần là một lựa chọn tuyệt vời, nhưng độ trễ của bạn sẽ rất khủng khiếp! Có tin đồn rằng Amazon sẽ sửa vấn đề CNAME. Tuy nhiên, họ không có khả năng thêm https, kiểm tra sức khỏe độc ​​lập hoặc tùy chỉnh, các đại lý phản hồi, kết hợp url, chèn cookie (và một số người có kiến ​​trúc tốt sẽ nói đúng.) Tuy nhiên đó là lý do tại sao Scalr, RightScale và những người khác đang sử dụng HAProxy thường là hai chúng đằng sau một mục nhập DNS vòng robin. Ở đây tại Loadbalancer.org, chúng tôi sắp khởi chạy ứng dụng cân bằng tải EC2 của riêng mình: http://blog.loadbalancer.org/ec2-load-balancer-appliance-rocks-and-its-free-for-now-anyway/ Chúng tôi đang lên kế hoạch sử dụng các tập lệnh SSH để tích hợp với tính năng tự động tính toán theo cách tương tự, mọi nhận xét được đánh giá cao trên blog. Cảm ơn

0

Mặc dù sự cố đã được giải quyết. KEMP Technologies hiện có bộ cân bằng tải hoàn toàn cho AWS. Có thể giúp bạn tiết kiệm một số rắc rối.