tôi cần phải làm một số công việc chế biến async được đưa ra một yêu cầu web mà tôi sẽ thăm dò ý kiến định kỳ cho đến khi nó hoàn tất. Tôi có toàn bộ ngăn xếp và chạy cục bộ nhưng tôi không thể hiểu được cách di chuyển nó sang tầng công nhân EBS. Tôi đang sử dụng Django với Celery và RabbitMQ tại địa phương và đã thành công trong việc trao đổi RabbitMQ với SQS của Amazon. Tuy nhiên khi tôi đã cố gắng để tạo ra một tầng công nhân mà sẽ hoạt động ra khỏi cùng một cơ sở dữ liệu RDS như webapp nhưng đã không thành công. Tôi bị kẹt ở điểm mà tôi có thể xếp hàng các tin nhắn nhưng không thể đọc chúng từ hàng đợi. Tôi cần phải sử dụng những thông điệp đó để thực hiện một số hoạt động tốn kém trên cơ sở dữ liệu và chuẩn bị kết quả cho người tiêu dùng. Có một số mảnh kiến trúc tôi đang thiếu? Làm thế nào và nơi tôi có thể có được một daemon cần tây để xử lý các thông điệp SQS?Amazon Elastic Beanstalk Worker Tier
Trả lời
Từ Elastic Beanstalk documentation:
Khi bạn khởi động một môi trường đàn hồi AWS Beanstalk, bạn chọn một tầng môi trường, nền tảng, và loại môi trường. Các tầng môi trường mà bạn chọn sẽ xác định xem quy định AWS đàn hồi Beanstalk nguồn lực để hỗ trợ một ứng dụng web để xử lý HTTP (S) yêu cầu hoặc một ứng dụng web để xử lý các nhiệm vụ background-chế biến.
AWS đàn hồi Beanstalk cài đặt một daemon trên mỗi trường hợp Amazon EC2 trong nhóm Auto tỷ lệ để xử lý các thông điệp Amazon SQS trong tầng môi trường lao động. Daemon kéo dữ liệu ra khỏi hàng đợi Amazon SQS, chèn nó vào nội dung thư của một yêu cầu HTTP POST, và gửi nó đến một đường dẫn URL do người dùng cấu hình trên máy chủ địa phương. Loại nội dung cho nội dung thư trong yêu cầu HTTP POST là ứng dụng/json theo mặc định.
Từ góc độ phát triển, ứng dụng chạy trên các tầng công nhân chỉ là một dịch vụ web đơn giản. Nó sẽ nhận các cuộc gọi từ AWS Elastic Beanstalk daemon được cung cấp cho bạn trên cá thể.
Yêu cầu được gửi đến giá trị Đường dẫn HTTP mà bạn định cấu hình. Điều này được thực hiện theo cách như vậy để xuất hiện cho ứng dụng web trong tầng môi trường nhân viên mà daemon đã khởi tạo yêu cầu. Bằng cách này, daemon phục vụ một vai trò tương tự như một bộ cân bằng tải trong một tầng môi trường máy chủ web.
Cấp môi trường công nhân, sau khi xử lý thư trong hàng đợi, chuyển tiếp thư qua vòng lặp cục bộ tới ứng dụng web tại URL mà bạn chỉ định. URL hàng đợi chỉ có thể truy cập được từ máy chủ cục bộ. Vì bạn chỉ có thể truy cập URL hàng đợi từ cùng một cá thể EC2, không cần xác thực để xác thực các thư được gửi tới URL.
Ứng dụng web trong tầng môi trường công nhân chỉ nên nghe trên máy chủ cục bộ.Khi ứng dụng web trong tầng môi trường nhân viên trả về một phản hồi 200 OK để xác nhận rằng nó đã nhận và xử lý thành công yêu cầu, daemon gửi một cuộc gọi DeleteMessage tới hàng đợi SQS để thông báo sẽ bị xóa khỏi hàng đợi. Nếu SQS trả về bất kỳ phản hồi nào khác hơn 200 OK hoặc không có đáp ứng nào trong khoảng thời gian không hoạt động được cấu hình, SQS lại một lần nữa làm cho thông báo hiển thị trong hàng đợi và sẵn sàng cho một nỗ lực khác khi xử lý.
Tôi hiện đang sử dụng tầng web "chuẩn" (được cấu hình với số lượng quy trình và chuỗi cao hơn) với ứng dụng Django + Celery của tôi và tôi có phiên bản EC2 với AMI đang chạy tùy chỉnh. SQS không được hỗ trợ đầy đủ bởi Cần tây, từ http://docs.celeryproject.org/en/latest/getting-started/brokers/sqs.html:
Việc vận chuyển SQS là cần cải tiến trong nhiều lĩnh vực và có một số lỗi mở.
Thành thật mà nói, tôi không bao giờ hiểu tầng công nhân web là gì, nhưng cấu hình hiện tại của tôi dường như hoạt động khá tốt (tôi cũng sử dụng Celery để quản lý các tác vụ thời gian). tôi daemonized Cần tây sử dụng Supervisor (mà đã được sử dụng bởi Elastic Beanstalk để quản lý apache).
- 1. Docker Beanstalk Elastic với Amazon CloudWatch
- 2. Amazon Elastic Beanstalk vs EC2 instance with docker containers
- 3. Amazon Elastic Beanstalk: cách thiết lập đường dẫn wsgi?
- 4. của Django trên Amazon Elastic Beanstalk bị giết
- 5. AWS Elastic Beanstalk Worker - Quy mô dựa trên số lượng tin nhắn hàng đợi có sẵn
- 6. tùy chỉnh các phiên bản Beanstalk Elastic
- 7. Các bản vá bảo mật Beanstalk Elastic
- 8. Thay đổi php.ini trên Beanstalk Elastic
- 9. Làm thế nào để cài đặt Oracle Java 7 trong một ví dụ Amazon Elastic Beanstalk
- 10. AWS Elastic Beanstalk Hành vi xếp hàng công nhân
- 11. Thiết lập công việc đã lên lịch/cron với Django trên Cây đậu đàn hồi với một Worker Tier
- 12. Sử dụng Django + dễ thumbnails/sorl-thumbnail trên Elastic Beanstalk
- 13. triển khai trực tiếp từ Bitbucket đến AWS Elastic Beanstalk
- 14. AWS Elastic Beanstalk - Tăng dung lượng đĩa thể hiện
- 15. Không thể xác thực Docker trong Elastic Beanstalk qua S3
- 16. Cài đặt git thông qua .ebextensions on Elastic Beanstalk
- 17. Triển khai ứng dụng Laravel 4 trên AWS Elastic Beanstalk
- 18. Tải xuống ứng dụng từ AWS Elastic Beanstalk
- 19. Tạo thư mục .ebextensions trong aws elastic beanstalk
- 20. Numpy và Scipy với Amazon Elastic MapReduce
- 21. Tại sao Amazon Elastic Beanstalk mất một thời gian dài để cập nhật triển khai của tôi?
- 22. Chạy nhiều môi trường trên một phiên bản AWS EC2 (Elastic Beanstalk)
- 23. Nhiều tệp như đầu vào trên Amazon Elastic MapReduce
- 24. Triển khai hình ảnh tới AWS Elastic Beanstalk từ Docker riêng repo
- 25. AWS Elastic Beanstalk: Làm thế nào để sử dụng các biến môi trường trong ebextensions?
- 26. Rails + Elastic Beanstalk + Hành khách: thay đổi Cấu hình hành khách
- 27. Khởi động/dừng sqsd daemon trên Elastic Beanstalk để xem các tin nhắn xếp hàng SQS
- 28. Nơi đặt các lệnh cấu hình Beanstalk Elastic mà chỉ chạy một lần trên spin-up?
- 29. Làm thế nào để ép buộc phiên bản ứng dụng trên AWS Elastic Beanstalk
- 30. AWS Elastic BeansTalk Django cronjob yêu cầu bài trả lại lỗi 403
Thông tin hữu ích, nhưng lấy nguyên văn từ tài liệu của Amazon: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html – ahmacleod
Đúng! Khi câu trả lời đúng nằm trong tài liệu, tại sao chúng ta nên viết lại mọi thứ? –
Đồng ý, nhưng tốt nhất nên trích dẫn các tác phẩm không phải của riêng bạn. – ahmacleod