AWS ELB, xin lỗi, trang này bị rớt trang


9

Tôi có một trang ELB v2 cơ bản. Không có cụm hoặc bất cứ điều gì chưa. Tôi khá thiếu kinh nghiệm với AWS.

Ngăn xếp của tôi là nginx / uwsgi / django + một số dịch vụ khác.

Tôi đã tự hỏi liệu có ai có suy nghĩ về việc tạo ra một trang "xin lỗi, trang web hiện đang ngừng hoạt động ..." (văn bản tùy chỉnh tôi có thể cập nhật thời gian ngừng hoạt động theo kế hoạch là một phần thưởng!) Bất cứ khi nào có thời gian chết vì bất kỳ lý do gì và sức khỏe của ví dụ là màu đỏ. Dường như Amazon không cung cấp khả năng này - tôi có thiếu gì không? Có cách nào để tạo một cá thể siêu nhỏ riêng biệt CHỈ được phục vụ nếu cái chính có màu đỏ hay cái gì đó không?

Cảm ơn!

Câu trả lời:


22

Giải pháp đơn giản và thú vị ở đây là đặt ELB của bạn phía sau CloudFront.

Nếu máy chủ gốc (ELB trong trường hợp này) đưa ra lỗi 5XX (hoặc 4XX nếu bạn muốn), CloudFront có thể trả về trang lỗi tùy chỉnh , bạn có thể định cấu hình CloudFront để tìm nạp từ nhóm S3 bằng cách tạo nguồn gốc thứ hai trỏ đến xô và tạo một định tuyến hành vi bộ đệm (ví dụ) /errors/static/*đến nhóm.

Điều này hoạt động tốt hơn so với chuyển đổi dự phòng của Tuyến 53 vì một lý do quan trọng ... một lỗ hổng nghiêm trọng, nếu bạn sẽ ... trình duyệt rất tệ về việc tra cứu DNS trong thời gian dài hơn bạn mong đợi. DNS TTL không liên quan.

Về cơ bản, một khi trình duyệt có mục nhập DNS trong tay, nó sẽ tiếp tục cố gắng sử dụng nó ... thông thường, cho đến khi tất cả các cửa sổ trình duyệt được đóng lại.

Vì vậy, nếu trang web của bạn không hoạt động đối với một khách truy cập đã ở trên trang web, họ không thể thấy trang web thay thế.

Tồi tệ hơn, nếu khách truy cập truy cập trang web của bạn lần đầu tiên trong khi nó ngừng hoạt động, họ sẽ "dính" vào trang bảo trì cho đến khi họ đóng tất cả các cửa sổ trình duyệt.

Nếu bạn sử dụng DNS failover, điều đó thực sự chỉ tốt nếu mục tiêu chuyển đổi dự phòng vẫn là ứng dụng của bạn, có thể chỉ là xa hơn.

Bạn có thể tắt bộ nhớ đệm của CloudFront nếu bạn không cần nó.

Bạn cũng có thể định cấu hình bộ đệm ẩn lỗi của CloudFront thành giá trị khác không nếu bạn muốn nó thoát khỏi trang web của bạn trong khi nó ngừng hoạt động và cố gắng khôi phục. Đối với một trang nhất định có lỗi, nó sẽ tiếp tục hiển thị trang lỗi và không làm phiền máy chủ của bạn với nhiều yêu cầu hơn cho trang đó cho đến khi Lỗi bộ nhớ cache hết hạn.


Hấp dẫn. AWS không đề cập đến nhược điểm này trong tài liệu của họ. Điều này nhấn mạnh việc kiểm tra quan trọng như thế nào.
Tim

Vâng @Tim, AWS khuyên bạn nên thực hiện cập nhật. Họ không có "Dịch vụ Docker" mà họ cung cấp bây giờ, vì vậy EBS nó dành cho ứng dụng Docker của chúng tôi. Chỉ cần một, mặc dù.
std''OrgnlDave

6

Sử dụng DNS Route53 và định tuyến chuyển đổi dự phòng . Bạn sẽ có thể nhận được một nhóm S3 lưu trữ một trang web tĩnh. Tôi không nghĩ bạn có thể làm điều đó chỉ với ELB.

Amazon có một bài đăng blog cho bạn biết làm thế nào để làm điều đó ở đây .

Cập nhật: như Michael nói, có một nhược điểm xung quanh bộ nhớ cache DNS của trình duyệt, hãy xem câu trả lời của anh ấy để biết thêm thông tin. Tuyến 53 có lẽ là một tùy chọn đơn giản hơn CloudFront, nhưng CF có lợi thế khác, hiệu suất và trong một số trường hợp sử dụng có thể giảm chi phí.


Tôi nói +1 ở đây ... đây là một giải pháp tốt, nhưng nó dường như có một gót chân achilles, làm cho nó ít khả thi hơn trong một số trường hợp sử dụng.
Michael - sqlbot

@ Michael-sqlbot nhược điểm của phương pháp này là gì? Trình duyệt bộ nhớ cache DNS thời gian?
Tim

Đúng chính xác. Mọi người "dính" vào trang lỗi là điều tôi thấy không đáng tin.
Michael - sqlbot

Dưới đây là một bài đăng blog được cập nhật từ AWS với một phương pháp đơn giản mới hơn để định tuyến chuyển đổi dự phòng ELB. aws.amazon.com/bloss/aws/ đá Xem bài viết của tôi dưới đây để biết thêm chi tiết.
AstroTom

2

Một số giải pháp đã được đề cập, bao gồm CloudFront và Route53. CloudFront là một giải pháp tuyệt vời và theo kinh nghiệm của tôi, tôi đã không làm mọi thứ chậm lại, nhưng nó mang lại thêm chi phí. Và Route53 có các vấn đề bộ đệm DNS đã được đề cập.

Cho đến khi ALB hỗ trợ các trang lỗi tùy chỉnh ngoài hộp (có thể xảy ra hoặc không xảy ra), có khả năng là một giải pháp mới sau thông báo gần đây về các phản hồi cố định ALB , nhưng đó không phải là điểm và nhấp: bạn có thể thiết lập chức năng Lambda tạm thời thêm một quy tắc cho bộ cân bằng tải của bạn, cung cấp phản hồi cố định với nội dung 'trang lỗi' của bạn.

Ngoài việc viết Lambda, bạn sẽ cần tìm cách kích hoạt nó 'bật' và 'tắt', có thể thông qua kiểm tra sức khỏe Route53 hoặc kiểm tra sức khỏe nhóm cân bằng tải (có thể thông qua báo động CloudWatch -> SNS - > Lambda).

Nó không chính xác đơn giản, nhưng có lẽ sẽ hoạt động tốt khi được thiết lập!


0

Như được viết bởi @Tim và @Micheal, bạn có thể lựa chọn sử dụng DNS Route53 và định tuyến chuyển đổi dự phòng hoặc CloudFront với các trang lỗi tùy chỉnh . Cả hai phương pháp đều có ưu và nhược điểm của chúng.

Nếu bạn chưa sử dụng Cloudfront, tôi nghĩ Route53 là một giải pháp đơn giản hơn. Xem bài đăng blog được cập nhật từ AWS (hiện bao gồm một phương pháp đơn giản hơn để tích hợp ELB).

CloudFront phức tạp hơn nhiều để thiết lập và sẽ mất khoảng 15 phút cho mỗi bản cập nhật. Cloudfront cũng lưu trữ (như dự kiến) vì vậy không rõ liệu điều đó có phản hồi chậm hơn không, so với các vấn đề về bộ đệm DNS với Tuyến 53.

Lưu ý rằng nếu trang web ELB của bạn chỉ phản hồi với SSL thì bạn không thể sử dụng giải pháp S3 đơn giản như được mô tả trong blog AWS 3 . Trong trường hợp đó, bạn sẽ phải thêm Cloudfront phía trước nhóm S3 để thêm SSL, điều này làm cho giải pháp định tuyến lỗi DNS trở nên phức tạp hơn.


Bài đăng trên blog đó không cung cấp một giải pháp sạch - nó có chính xác vấn đề tôi đã đề cập trong bài đăng của mình và thảo luận với Tim trong các bình luận. Hoàn toàn khả thi khi bạn có nhiều triển khai có thể phục vụ các yêu cầu của bạn nhưng hoàn toàn không được sử dụng cho một trang lỗi do cách trình duyệt tra cứu DNS của trình duyệt. Nội dung của bài đăng AWS không may không xem xét thực tế này. Chuyển đổi dự phòng DNS không đáng tin cậy "thất bại trở lại" từ quan điểm của người dùng cuối. CloudFront cũng có các cài đặt bộ đệm hoàn toàn riêng biệt cho các phản hồi lỗi .
Michael - sqlbot
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.