Cân bằng tải đàn hồi cho nhiều ứng dụng web


13

Tôi có Nứng dụng web. Mỗi ứng dụng web được phục vụ bởi một tên máy chủ khác nhau trong miền của tôi và được triển khai thành 2 phiên bản đang chạy trong AWS. Nói cách khác, tôi có các 2Ntrường hợp, được chia thành các cặp chạy Ncác ứng dụng web riêng biệt.

Tôi muốn thiết lập một Bộ cân bằng tải đàn hồi AWS duy nhất sẽ ủy quyền một yêu cầu cho một trong hai trường hợp phục vụ nó dựa trên Hosttiêu đề. Có thể sử dụng một ELB đơn lẻ hay tôi sẽ cần triển khai NELB, một cho mỗi cặp trường hợp?


Câu trả lời:


19

Một ELB duy nhất định tuyến lưu lượng truy cập đến chính xác một bộ phiên bản và phân phối lưu lượng đến cho tất cả các phiên bản "đằng sau" nó. Nó không chọn lọc định tuyến lưu lượng dựa trên bất kỳ phân tích lưu lượng lớp 7 nào, chẳng hạn như Host:tiêu đề.

Bạn cần một ELB cho mỗi bộ phiên bản. Như bạn mô tả, đó là một ELB cho mỗi ứng dụng web.

Nếu mục đích chính của bạn để chạy ELB là giảm tải SSL bằng chứng chỉ ký tự đại diện (tôi có một hệ thống được thiết kế như thế này, với hàng tá ứng dụng sống tại nhiều -different-domains.my-wildcard-cert-domain.com), thì các trường hợp "Đằng sau" ELB có thể đang chạy một proxy ngược như HAProxy (hoặc một số lựa chọn thay thế khác, như Varnish) có thể đưa ra quyết định định tuyến lớp 7 và sau đó chuyển tiếp lưu lượng đến tập hợp con phù hợp của các máy phía sau chúng, cũng cho phép tinh vi hơn cân bằng tải và có lợi thế là cung cấp cho bạn các số liệu thống kê và lưu lượng truy cập, tổng hợp và riêng biệt.

       /-- HAProxy \  /----- instances hosting app #1  
ELB ---|            >> ----- instances hosting app #2 
       \-- HAProxy /  \----- instances hosting app #n 

Các phiên bản ^^ ^ ^ trung gian có thể đánh giá các Host:tiêu đề (trong số những thứ khác) và thậm chí nắm bắt giá trị của cookie phiên trong nhật ký của chúng để phân tích.

Thiết lập này cũng cho phép tôi chạy nhiều ứng dụng trên các tập hợp con chồng chéo, khi thích hợp và thực hiện nhiều việc khác mà ELB tự nó không hỗ trợ trực tiếp. Nó cũng trả về một trang "503" tùy chỉnh trong trường hợp ứng dụng bị quá tải hoặc không có sẵn, điều mà ELB không tự làm được. Tôi đã mô tả 2 máy chủ proxy ở đây, không vì lý do cụ thể nào ngoài việc bạn đề cập đến số 2 trong câu hỏi. Thiết lập của tôi thực sự có 3, một cho mỗi vùng khả dụng trong khu vực nơi triển khai này.


3
Vào tháng 8 năm 2016, Amazon đã ra mắt Trình cân bằng tải ứng dụng AWS cho phép định tuyến đến các nhóm mục tiêu khác nhau dựa trên các tiêu đề HTTP.
Jens Bannmann

2
@JensBannmann đó là sự thật. Khi họ phát hành nó, các quy tắc định tuyến duy nhất mà nó hỗ trợ được dựa trên đường dẫn. Năm 2017, họ đã thêm khả năng định tuyến dựa trên Host:tiêu đề. Câu trả lời này đã trở lại chính xác khi tôi viết nó vào năm 2014, nhưng có vẻ như đã đến lúc cập nhật. Cảm ơn đã mang nó trở lại sự chú ý của tôi.
Michael - sqlbot

3

Kể từ tháng 8 năm 2016, Amazon ELB cung cấp hai loại cân bằng tải khác nhau:

  • Classic Load Balancer định tuyến tất cả lưu lượng truy cập đến một bộ phiên bản mà không xem xét nội dung giao thức ứng dụng. Trước đây, đây là loại ELB duy nhất có sẵn.
  • Trình cân bằng tải ứng dụng có thể định tuyến lưu lượng truy cập đến các nhóm mục tiêu khác nhau theo các quy tắc có thể định cấu hình dựa trên các đường dẫn URL. Bài đăng trên blog Mới - Trình cân bằng tải ứng dụng AWS đề cập đến các ứng dụng bao gồm một số dịch vụ siêu nhỏ làm trường hợp sử dụng chính và đưa ra hướng dẫn thiết lập chi tiết.

Đối với trường hợp sử dụng của bạn, Application Load Balancer có vẻ lý tưởng. Tuy nhiên, nó bị giới hạn ở 10 quy tắc, do đó, nó sẽ chỉ hoạt động dễ dàng nếu bạn Nkhông lớn hơn 10.


0

Trong danh sách các trường hợp ec2 của bạn, bạn thấy hai trường hợp, phải không? Nhưng trên mỗi trường hợp bạn có nhiều ứng dụng web? Bạn sử dụng máy chủ ảo để triển khai từng cái?

Bạn chỉ cần một ELB để chia phí trên máy chủ của mình. Thí dụ:

External request > ELB (based on CNAME pointer)  > EC2 Instance. 

Tôi nghĩ rằng tốt hơn là bạn cho tôi nhiều kịch bản của bạn và có lẽ tôi có thể giúp bạn.

Trân trọng.

CẬP NHẬT

Nếu bạn có các ứng dụng web khác nhau trên các phiên bản EC2, bạn cần phải có hai Bộ cân bằng tải đàn hồi (ELB). Mỗi người cho một cặp. Tổng cộng, bốn trường hợp


Trên danh sách ví dụ của tôi, tôi thấy 2Ncác ứng dụng. Có N webapps, hai trường hợp cho mỗi. Tôi sẽ chỉnh sửa câu hỏi để làm rõ điều này.
từ

Cập nhật phản hồi.
Junior Rocha
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.