Làm cách nào tôi có thể tự động quay vòng một hình ảnh mới trong Nhóm tự động mở rộng AWS?


21

Tôi có một thiết lập ứng dụng web với bộ cân bằng tải và nhóm tự động mở rộng để quản lý tỷ lệ. Mã nguồn nằm trong kho git vì vậy tôi không phải cập nhật hình ảnh khi mã thay đổi, nhưng đôi khi môi trường thay đổi để chúng tôi tạo ra một hình ảnh mới. Sau đó, hình ảnh đó cần phải được chuyển sang nhóm tự động nhân rộng.

Có cách nào để chu kỳ các hình ảnh tự động? Ngay bây giờ tôi lên lịch cho một hành động tăng quy mô và giảm quy mô để loại bỏ các trường hợp cũ.


2
Có lẽ sẽ hiệu quả hơn nếu, sau khi bạn tạo cấu hình khởi chạy mới và cập nhật nhóm tự động hóa, bạn đánh dấu mỗi trường hợp là không lành mạnh (ví dụ như sử dụng as-set-instance-health), để tự động thay thế đơn giản bằng một phiên bản mới.
cyberx86

Câu trả lời:


10

Tôi muốn đề xuất "AWS-HA-Release" để thực hiện điều này - cách thức AWS-HA-Release hoạt động:

  1. Nếu nhóm tự động hóa hiện tại và ELB báo cáo 5 trường hợp khỏe mạnh,
  2. AWS-HA-Release đưa một phiên bản mới vào sản xuất và chờ ELB xác định nó là lành mạnh (đưa tổng số trường hợp khỏe mạnh lên 6)
  3. Xóa một thể hiện cũ (tổng cộng xuống còn 5)
  4. Đưa một thể hiện khác vào dịch vụ (tổng cộng là 6)
  5. Xóa một thể hiện cũ (tổng cộng xuống còn 5)
  6. và cứ như vậy cho đến khi tất cả các trường hợp đã được thay thế

Trong trường hợp này, bạn có thể gửi mã mới hoặc các phiên bản AMI mới mà không có thời gian chết và có lợi ích của các trường hợp hoàn toàn mới. Công cụ AWS-HA-Release có sẵn tại https://github.com/colinbjohnson/aws-missing-tools .


9

Cách dễ dàng hơn là tăng số lượng phiên bản tối thiểu trong Nhóm tự động nhân rộng (ASG) lên gấp đôi số lượng hiện tại của bạn, đợi khi tất cả chúng được bắt đầu và sau đó thay đổi số lượng phiên bản tối thiểu đó thành số lượng. ELB sẽ giết các phiên bản cũ hơn và sẽ để lại các phiên bản mới hơn bằng mã. Để đạt được chính sách Chấm dứt đó, nên được đặt thành ' Cũ nhất ' để hoạt động như dự định. Chính sách chấm dứt mặc định có thể có tác dụng phụ không mong muốn.

Bạn có thể xem các thông số và ví dụ về AWS CLI tại đây: http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html


Chúc mừng, đây là một phương pháp siêu tiện lợi, không rắc rối.
Elad Nava

1
Điều này sẽ không luôn luôn hoạt động, theo các tài liệu AWS, ngay cả khi chọn chính sách chấm dứt tùy chỉnh, ASG sẽ giữ cân bằng của AZ trước khi áp dụng chính sách chấm dứt. Vì vậy, chỉ cần tăng gấp đôi và giảm một nửa kích thước có thể khiến bạn có một vài trường hợp cũ. Điều này đặc biệt có thể xảy ra khi sử dụng ASG với nhiều loại đối tượng và tùy chọn mua, vì ASG sẽ giữ cân bằng và tùy chọn thị trường của AZ (giao dịch theo yêu cầu) cân bằng trước khi áp dụng chính sách 'Cũ nhất': docs.aws.amazon.com / autoscaling / ec2 / userguide /
Lỗi

6

cách tôi quản lý kịch bản này là sử dụng tính năng UpdatePolicy của đối tượng AWS :: AutoScaling :: AutoScalinggroup trong quá trình hình thành đám mây. khi ngăn xếp hình thành đám mây được cập nhật, nó sẽ quản lý chu kỳ của các thể hiện.

một số tài liệu tham khảo. http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properies-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribution-updatepolicy .html


Cảm ơn một tấn @graeme. Tôi không có ý tưởng Cloudform cung cấp chức năng này.
AJB

Chính xác những gì tôi đang tìm kiếm. Chúng tôi triển khai các ngăn xếp của mình thông qua Jenkins khi các thay đổi thông qua bảng điều khiển AWS bị khóa.
Greg Biles

3

Cũng có một cái nhìn về công cụ Netflix Asgard hiện là nguồn mở. Nó không chỉ có thể thiết lập các nhóm tự động mở rộng, nó còn có thể thực hiện các bản phát hành hình ảnh AMI mới cho một nhóm các trường hợp.


Bạn có nghĩa là "Netflix Asgard"

4
Netflix Asgard hiện không được dùng nữa, nó được thay thế bằng Netflix Spinnaker
dlaidlaw

0

Thật ra không có cách nào thực sự tốt để làm điều đó thành thật cả. Cách tốt nhất tôi tìm thấy để làm điều đó là đặt một phiên bản trong tên ASG. Bất cứ khi nào tôi cập nhật AMI, tôi tạo ASG + Launch Config mới với phiên bản mới để nó không xung đột với nhóm khác. Sau đó, tôi chấm dứt tất cả các trường hợp trong nhóm cũ.

Nếu cần triển khai nhiều khả năng chịu lỗi hơn, tôi khuyên bạn nên thêm một bước nữa bằng cách liên quan đến việc tạo ra một bộ cân bằng tải mới. Điều này cho phép bạn tách cả ASG với nhau. Nó cũng cho phép bạn có một khu vực "Dàn dựng" để kiểm tra các thay đổi của bạn lần cuối trước khi cập nhật. Sau đó, khi bạn sẵn sàng chuyển đổi, bạn cập nhật các bản ghi DNS và chấm dứt tất cả các phiên bản trong nhóm cũ.


0

Như tôi đã đăng ở đây (câu hỏi tương tự, chỉ với Terraform), nó không được tích hợp vào ASG theo bất kỳ cách nào, ngoại trừ nếu bạn sử dụng thông tin trên nền tảng đám mây. Tôi cũng vật lộn với nó, vì vậy cuối cùng tôi đã viết một "con lăn" xem nhiều ASG, kiểm tra trạng thái và cập nhật của họ. Luôn luôn vui vẻ nhận phản hồi. http://github.com/deitch/aws-asg- điều khiển

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.