2014-12-12 16 views
7

Tôi có một Celery Task-Manager để crunch một số con số để phân tích công ty.Autoscale Python Celery với Amazon EC2

Trình quản lý tác vụ và công nhân được lưu trữ trên Máy chủ Linux EC2 của Amazon.

Tôi cần thiết lập hệ thống như vậy nếu chúng tôi gửi quá nhiều nhiệm vụ đến cần tây Amazon sẽ tự động thiết lập một cá thể EC2 mới để chạy nhiều công nhân hơn và cân bằng tải trên những công nhân này.

Các dịch vụ mà tôi biết là Amazon Autoscale và Amazon Load balancing mà dường như chính xác những gì tôi muốn sử dụng, tôi không chắc cách tốt nhất để cấu hình Celery là gì.

I nghĩ rằng tôi nên có một "bậc thầy" cần tây thu thập tất cả các nhiệm vụ và một số công nhân cần tây thực hiện chúng. Khi số lượng công việc tăng lên, tôi muốn thêm nhiều công nhân hơn. Cách thức hoạt động của autoscale (bằng cách lấy một AMI của máy chủ cần tây) Tôi nghĩ rằng tôi hiện đang nhân bản Master cũng như những công nhân mà dường như không phải là những gì tôi muốn làm.

Làm cách nào để tổ chức việc này để đạt được mục tiêu cuối cùng của mình là quản lý tác vụ tự động linh hoạt bằng cách sử dụng Celery để quản lý các tác vụ và Dịch vụ web của Amazon để lưu trữ máy tính. Có nhiều chi tiết nhất có thể trong bất kỳ câu trả lời nào (hoặc liên kết đến hướng dẫn!) Sẽ được đánh giá rất cao vì hầu hết các hướng dẫn hoặc lời khuyên dường như giả định số lượng kiến ​​thức lớn mà tôi hiện không có!

Trả lời

4

Bạn không cần kiến ​​trúc tổng thể để làm việc này. Nếu tôi hiểu câu hỏi của bạn một cách chính xác, bạn muốn có thể mở rộng dựa trên kích thước hàng đợi. Tôi có thể nói nó sẽ dễ dàng hơn nếu bạn có các bước sau

  1. Cài đặt elasticache/sqs cho người môi giới (kể từ khi bạn đang ở trong AWS)
  2. Đối với tỉ lệ tùy chỉnh - Một periodic task mà kiểm tra kích thước hàng đợi sử dụng một cái gì đó như this HOẶC thêm amazon autoscaling để chỉ thêm/gỡ bỏ máy khi sử dụng CPU cao (giả sử rằng đó là một dấu hiệu đủ tốt của tải). Ngoài ra, bắt đầu công nhân với --autoscale để việc sử dụng CPU được phản ánh chính xác.