Làm thế nào để ngăn chặn cái chết của EC2?


9

Tôi đã có một ứng dụng iOS trên cửa hàng ứng dụng và gần đây tôi đã nhận được một lưu lượng truy cập lớn đến trang đích của tôi được lưu trữ trên EC2 và kết quả là trang không phản hồi, may mắn là tôi đã tìm cách khôi phục nó bằng cách khởi động lại và nâng cấp phiên bản lên t2.medium.

Bây giờ tôi đang tìm cách thuê một người nào đó thực hiện một công nghệ để ngăn chặn cái chết tương tự một lần nữa. Kinh nghiệm của tôi chỉ kéo dài đến mức cho phép tôi hiểu các công cụ cơ bản nhưng không đủ cho bộ cân bằng tải trên AWS, tôi muốn biết đâu là một triển khai hợp lý cho ví dụ của tôi.

Trang đích và phụ trợ ứng dụng iOS của tôi được lưu trữ trên cùng một ví dụ.


1
Trang đích của bạn có tĩnh không?
Michael - sqlbot

Câu trả lời:


8

Nếu bạn muốn một cái gì đó nhanh chóng để có được thứ này được sắp xếp mà không có nhiều kiến ​​thức hơn, tôi khuyên bạn nên dùng cây đậu co giãn. Đây là một ứng dụng AWS khác sẽ xử lý cấu hình cân bằng tải và tỷ lệ cá thể cho bạn.

Không có chi phí thêm trên đầu cân bằng tải và các trường hợp để bạn có thể tiếp tục sử dụng các thể hiện loại t2 nhưng hãy để tỷ lệ cây đậu co giãn nhiều như bạn muốn giúp đỡ.

Tự động mở rộng quy mô không phải là ngay lập tức và trong thời gian lưu lượng truy cập tăng tốc sẽ mất một khoảng thời gian ngắn, bình thường vài phút, để có thể xử lý tăng đột biến nhưng sẽ tốt hơn nhiều so với quy mô thủ công và thực sự dễ dàng nắm bắt với.


1

Tôi sẽ khuyên bạn nên tự động điều chỉnh tỷ lệ như đã đề cập ở trên cùng với việc thêm một số báo thức CloudWatch để bắt đầu quá trình tự động mở rộng khi các ngưỡng cụ thể bắt đầu tăng, chứ không phải khi nó đã đi xa.

Ví dụ; định cấu hình CloudWatch để giám sát máy chủ của bạn, khi CPU ở mức 50% trở lên trong khoảng thời gian 30 giây trở lên bắt đầu quá trình tự động mở rộng quy mô.

Điều này có thể không hoàn toàn không có lỗi nhưng thật dễ dàng để thực hiện thông qua một số hướng dẫn trực tuyến và tất cả có thể định cấu hình qua GUI.

Ngoài ra, nếu trang đích của bạn tĩnh, tại sao không lưu trữ trên t2.micro cấp miễn phí và sử dụng một cấp miễn phí t2.micro khác cho ứng dụng của bạn?


Tự động hóa không phải là câu trả lời tổng thể trong khi tăng lưu lượng truy cập đột ngột. Cửa sổ phát hiện tự động hóa nằm trong khoảng từ 1-5 phút, tùy thuộc vào việc cung cấp của bạn, việc này cũng có thể mất một chút thời gian. Nói chung, câu trả lời đúng là chạy các trường hợp nóng, tức là: trên mức lưu lượng truy cập được nhận biết của bạn sẽ là gì và cho phép tự động hóa để duy trì mức ký quỹ đó.
Matt O.

1

Tôi rất muốn giúp với điều này nếu bạn đang tìm kiếm sự giúp đỡ. Tùy thuộc vào trang của bạn, bạn có thể không cần ec2. Chẳng hạn, nếu bạn phục vụ một cái gì đó tĩnh hoặc JavaScript, nó có thể được phục vụ từ s3 với phân phối trên nền tảng đám mây. Hoặc chúng ta có thể sử dụng một nhóm tự động mở rộng nếu thực sự cần thiết.


1

Có hai chiến lược chung để đối phó với sự gia tăng lưu lượng: tăng công suất và giảm chi phí.

Tăng công suất có nghĩa là tự động mở rộng quy mô, điều mà mọi người đều rất phấn khích khi các đám mây công cộng lần đầu tiên xuất hiện. Theo nghĩa cơ bản nhất của nó, điều này sẽ khởi động nhiều máy chủ web hơn cho bạn dựa trên tải và thêm chúng vào bộ cân bằng tải, nhưng vì có thể gây khó khăn cho việc quản lý, cũng có nhiều giải pháp tự động hơn, như Elastic Beanstalk.

Rắc rối với việc mở rộng công suất tự động là việc mở rộng hóa đơn cũng tự động - lưu lượng truy cập bình thường gấp 10 lần có nghĩa là máy chủ gấp 10 lần nghĩa là bạn phải trả gấp 10 lần. Đó là lý do tại sao, trong khi đó là một chiến lược hữu ích cần ghi nhớ, tôi nghĩ bạn nên luôn bắt đầu bằng cách xem bạn có thể gian lận đến mức nào.

Bằng cách gian lận, ý tôi là bộ nhớ cache, dựa trên ý tưởng rằng hầu hết thời gian bạn có thể cung cấp cho người dùng một chút dữ liệu lỗi thời và họ sẽ không nhận thấy, và điều đó có thể giúp bạn tiết kiệm rất nhiều thời gian. Hãy tưởng tượng rằng bạn có một trang mà bạn quyết định sẽ ổn nếu hết năm giây và nó nhận được 20 req / s. Không có bộ nhớ đệm, bạn đang chạy phép tính đó 1200 lần một phút, trong khi với bộ đệm chỉ là 12. Bạn có thể thấy điều này có thể tạo ra sự khác biệt to lớn như thế nào.

Tất nhiên có nhiều loại bộ nhớ đệm và một trang web thành công sẽ sử dụng một vài trong số chúng. Nhưng đối với trường hợp sử dụng của bạn, có hai lựa chọn khá tốt và dễ dàng.

Đầu tiên là làm cho trang web hoàn toàn tĩnh. Điều này giả định rằng bạn có thể làm như vậy, nhưng nếu bạn có thể, thì bạn chỉ cần Nginx phục vụ trực tiếp html và nó có thể phục vụ hàng tấn yêu cầu mà không phải đổ mồ hôi.

Nếu bạn cần một số mức độ năng động, thì thực hiện một số bộ nhớ đệm toàn trang là một lựa chọn tốt. Nginx có một số khả năng để làm điều này, nhưng tôi thực sự thích Varnish vì tính linh hoạt của nó.

Bất kể tùy chọn hoặc tùy chọn nào bạn đi cùng, hãy đảm bảo bạn thực hiện kiểm tra tải để xác thực rằng bạn đã thiết lập đúng; đôi khi sửa một chỗ làm lộ ra một nút cổ chai mới.


0

Tôi muốn chia sẻ kinh nghiệm của chúng tôi với AWS. Chúng tôi đã triển khai ứng dụng của mình trên EC2 và đối mặt với cùng một vấn đề và chi phí cao. Chúng tôi đã triển khai ứng dụng Amazon EC2 Container Service mặc dù ứng dụng của chúng tôi nguyên khối, nhưng chúng tôi đã đạt được

  • khả dụng
  • Chi phí hiệu quả
  • Khả năng mở rộng

Bộ cân bằng tải ứng dụng sẽ xử lý lưu lượng và sẽ định tuyến lưu lượng đến trường hợp lành mạnh và bạn có thể chạy nhiều tác vụ của cùng một dịch vụ mà không phải lo lắng về việc mở rộng và cân bằng tải.

Kiến trúc này làm cho nó dễ dàng hơn để thực hiện cách ly thất bại. Các kỹ thuật như kiểm tra sức khỏe, bộ nhớ đệm, vách ngăn hoặc bộ ngắt mạch cho phép bạn giảm bán kính nổ của một bộ phận bị hỏng và để cải thiện tính khả dụng chung của một ứng dụng nhất định.


Không có giá riêng cho ECS , chỉ có các tài nguyên EC2 cơ bản, vậy sử dụng ECS ​​có hiệu quả hơn về chi phí không? Nó sẽ tiêu thụ cùng một lượng tài nguyên cho dù bạn tự quản lý các container hoặc để Amazon làm điều đó.
Tẩy chay SE cho Monica Cellio

trong container nếu bạn đang sử dụng alpine là 5mb và ec2 thì bạn đang sử dụng ubfox là 2gb? điều gì là tốt nhất trong t2 micro, bạn có thể chạy 5 bộ chứa php với tỷ lệ vào và ra trên cơ sở các phần bổ sung .. bạn có thể chạy trong ec2 với tỷ lệ trong và quy mô không?
Adiii

Bạn không phải sử dụng Ubuntu cho các trường hợp ec2; bạn có thể tải lên một hình ảnh Alps và sử dụng nó nếu bạn muốn. Nếu bạn đã có mọi thứ hoạt động với ECS, điều đó thật tuyệt và không chắc bạn sẽ muốn quay lại, nhưng quan điểm của tôi là chỉ chuyển sang ECS ​​sẽ không làm cho ứng dụng có thể mở rộng hơn hoặc hiệu quả về chi phí; đó là những thay đổi khác mà bạn đã thực hiện cho ứng dụng, cơ sở hạ tầng và kiến ​​trúc cùng một lúc đã làm điều đó.
Tẩy chay SE cho Monica Cellio

0

Điều này phụ thuộc rất nhiều vào kiến ​​trúc cụ thể, nhưng ví dụ:

  • Tải trước trang web của bạn với CloudFront để giảm tải cho máy chủ
  • Sử dụng dịch vụ lưu trữ phía máy khách trong một cái gì đó như S3 cho quy mô
  • Cân bằng tải đàn hồi với nhóm Autoscaling
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.