ฉันจะวนรอบรูปภาพใหม่โดยอัตโนมัติใน AWS Auto Scaling Group ได้อย่างไร


21

ฉันมีการตั้งค่าเว็บแอปพลิเคชันพร้อมตัวโหลดบาลานซ์และกลุ่มการปรับสเกลอัตโนมัติเพื่อจัดการการปรับสเกล ซอร์สโค้ดอยู่ในที่เก็บคอมไพล์ดังนั้นฉันไม่ต้องอัปเดตอิมเมจเมื่อโค้ดเปลี่ยน แต่บางครั้งสภาพแวดล้อมก็เปลี่ยนดังนั้นเราจึงสร้างอิมเมจใหม่ จากนั้นภาพนั้นจะต้องถูกขี่เข้าไปในกลุ่มปรับขนาดอัตโนมัติ

มีวิธีการหมุนเวียนภาพโดยอัตโนมัติหรือไม่? ตอนนี้ฉันกำหนดเวลาการเพิ่มและลดขนาดแอ็คชั่นซึ่งกำจัดอินสแตนซ์เก่า


2
อาจมีประสิทธิภาพมากกว่าหากหลังจากคุณสร้างการกำหนดค่าการเปิดตัวใหม่และอัปเดตกลุ่มการปรับค่าอัตโนมัติของคุณคุณทำเครื่องหมายแต่ละอินสแตนซ์ว่าไม่แข็งแรง (เช่นการใช้as-set-instance-health) เพื่อให้การเปลี่ยนค่าอัตโนมัติแทนที่อินสแตนซ์ใหม่
cyberx86

คำตอบ:


10

ฉันอยากจะแนะนำ "AWS-HA-Release" ให้ทำ - วิธีการทำงานของ AWS-HA-Release:

  1. หากกลุ่มการตรวจสอบอัตโนมัติปัจจุบันและ ELB รายงาน 5 อินสแตนซ์ที่แข็งแรง
  2. AWS-HA-Release นำอินสแตนซ์ใหม่เข้าสู่การผลิตและรอให้ ELB ระบุว่ามีสุขภาพดี (นำจำนวนอินสแตนซ์ที่ดีต่อสุขภาพทั้งหมดรวม 6)
  3. ลบอินสแตนซ์เก่า (รวมลงไป 5)
  4. นำอินสแตนซ์อื่นไปใช้บริการ (รวมทั้งหมด 6)
  5. ลบอินสแตนซ์เก่า (รวมลงไป 5)
  6. เป็นต้นจนกว่าจะมีการเปลี่ยนอินสแตนซ์ทั้งหมด

ในกรณีนี้คุณสามารถจัดส่งรหัสใหม่หรือรุ่น AMI ใหม่โดยไม่ต้องหยุดทำงานและได้รับประโยชน์จากอินสแตนซ์ใหม่ทั้งหมด เครื่องมือ AWS-HA-Release สามารถใช้ได้ที่https://github.com/colinbjohnson/aws-missing-tools


9

วิธีที่ง่ายกว่าคือการเพิ่มจำนวนอินสแตนซ์ขั้นต่ำใน Auto-Scaling Group (ASG) ให้เพิ่มขึ้นเป็นสองเท่าของจำนวนปัจจุบันของคุณรอเมื่อพวกเขาทั้งหมดเริ่มต้นแล้วเปลี่ยนจำนวนอินสแตนซ์ขั้นต่ำให้เป็นเท่าเดิม ELB จะฆ่าอินสแตนซ์ที่เก่ากว่าและจะปล่อยให้อินสแตนซ์ที่ใหม่กว่าด้วยรหัส เพื่อให้บรรลุนโยบายการสิ้นสุดควรตั้งค่าเป็น ' OldestInstance ' เพื่อให้ทำงานได้ตามที่ต้องการ นโยบายการเลิกจ้างเริ่มต้นอาจมีผลข้างเคียงที่ไม่พึงประสงค์

คุณสามารถดูพารามิเตอร์และตัวอย่าง AWS CLI ได้ที่นี่: http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html


ไชโยนี่เป็นวิธีที่สะดวกและไม่ยุ่งยาก
Elad Nava

1
สิ่งนี้จะไม่ทำงานตามเอกสาร AWS เสมอไปแม้ว่าจะเลือกนโยบายการเลิกจ้างที่กำหนดเอง ASG จะรักษาสมดุลของ AZ ก่อนที่จะใช้นโยบายการเลิกจ้าง ดังนั้นการเพิ่มและลดขนาดลงเพียงสองเท่าสามารถทำให้คุณมีอินสแตนซ์เก่าได้สองสามรายการ โดยเฉพาะอย่างยิ่งเมื่อใช้ ASG ที่มีอินสแตนซ์หลายประเภทและตัวเลือกการซื้อเนื่องจาก ASG จะรักษาสมดุลของ AZ และตัวเลือกการตลาด (จุดเทียบกับความต้องการ) ให้สมดุลก่อนที่จะใช้นโยบาย 'OldestInstance': docs.aws.amazon.com / autoscaling / ec2 / userguide / …
Shahad

6

วิธีที่ฉันจัดการสถานการณ์นี้คือการใช้คุณสมบัติ UpdatePolicy ของวัตถุ AWS :: AutoScaling :: AutoScalingGroup ในการสร้างคลาวด์ เมื่อสแต็คการก่อตัวของเมฆได้รับการปรับปรุงมันจะจัดการการหมุนเวียนของอินสแตนซ์

อ้างอิงบางส่วน http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy .html


ขอบคุณ tonne @graeme ฉันไม่รู้เลยว่า Cloudformation เสนอฟังก์ชั่นนี้
AJB

สิ่งที่ฉันกำลังมองหา เราปรับใช้สแต็คของเราผ่านเจนกินส์เมื่อการเปลี่ยนแปลงผ่านคอนโซล AWS ถูกล็อค
Greg Biles

3

ดูที่เครื่องมือAsflix ของ Netflixที่ตอนนี้เป็นโอเพ่นซอร์ส ไม่เพียง แต่สามารถตั้งค่ากลุ่มปรับขนาดอัตโนมัติได้เท่านั้น แต่ยังสามารถเปิดใช้งานการเปิดตัวอิมเมจ AMI ใหม่สำหรับกลุ่มอินสแตนซ์ได้อีกด้วย


คุณหมายถึง "Netflix Asgard"

4
Netflix Asgard เลิกใช้แล้วจะถูกแทนที่ด้วยNetflix Spinnaker
dlaidlaw

0

จริงๆแล้วมันไม่มีวิธีที่ดีในการทำอย่างซื่อสัตย์ วิธีที่ดีที่สุดที่ฉันพบว่าทำคือใส่รุ่นในชื่อ ASG ทุกครั้งที่ฉันอัปเดต AMI ฉันสร้าง ASG + Launch Config ใหม่ด้วยเวอร์ชันใหม่ดังนั้นจึงไม่ขัดแย้งกับกลุ่มอื่น จากนั้นฉันจะยุติอินสแตนซ์ทั้งหมดในกลุ่มเก่า

หากจำเป็นต้องมีการปรับใช้โปรแกรมป้องกันข้อผิดพลาดเพิ่มเติมฉันขอแนะนำให้เพิ่มขั้นตอนอื่นโดยเกี่ยวข้องกับการสร้าง loadbalancer ใหม่เช่นกัน สิ่งนี้จะช่วยให้คุณแยก ASG ทั้งสองออกจากกัน นอกจากนี้ยังช่วยให้คุณมีพื้นที่ "Staging" เพื่อทดสอบการเปลี่ยนแปลงของคุณเป็นครั้งสุดท้ายก่อนที่จะอัปเดต จากนั้นเมื่อคุณพร้อมที่จะเปลี่ยนคุณอัพเดทระเบียน DNS และยุติอินสแตนซ์ทั้งหมดในกลุ่มเก่า


0

ในขณะที่ฉันโพสต์ที่นี่ (คำถามที่คล้ายกันเพียงแค่กับ Terraform) มันไม่ได้สร้างไว้ใน ASG ในทางใดทางหนึ่งยกเว้นถ้าคุณใช้ cloudformation ฉันต่อสู้ด้วยเช่นกันดังนั้นจึงจบลงด้วยการเขียน "ลูกกลิ้ง" ที่ดู ASG หลายตัวตรวจสอบสถานะและการอัปเดตของพวกเขา ยินดีที่จะรับฟังความคิดเห็น http://github.com/deitch/aws-asg-roller

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.