แนบ EBS-volume อัตโนมัติกับ Instance Spot ใหม่หรือไม่?


14

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

คำถามของฉันคือฉันจะติดตั้ง EBS ปริมาณเท่ากันบนอินสแตนซ์ Spot ใหม่โดยอัตโนมัติได้อย่างไรเมื่อราคาลดลงเนื่องจากไม่มีสคริปต์เริ่มต้นของฉันที่ฉันจะโหลดลงในปริมาณรูทในครั้งแรก

ฉันต้องสร้าง AMI ที่กำหนดเองหรือมีวิธีอื่นในการบรรลุเป้าหมายนี้หรือไม่?

คำตอบ:


11

หากคุณต้องการให้อินสแตนซ์เริ่มต้นด้วยจุดเริ่มต้นที่แน่นอนทุกครั้งที่เรียกใช้คุณจะสามารถ:

  1. สร้าง AMI ของคุณเองและเรียกใช้เป็นอินสแตนซ์ในแต่ละครั้งหรือ

  2. ระบุสคริปต์ข้อมูลผู้ใช้ที่ติดตั้งและกำหนดค่าซอฟต์แวร์ตามข้อกำหนดของคุณในแต่ละครั้งที่อินสแตนซ์ใหม่เริ่มจากฐาน AMI มาตรฐาน

หากคุณต้องการรักษาสถานะระหว่างการใช้งานอินสแตนซ์คุณจะต้องบันทึกข้อมูลที่อื่นนอกอินสแตนซ์ / AMI ตัวอย่างเช่น:

  1. ข้อมูลสามารถเก็บได้ถึงวันที่ S3, SimpleDB, DynamoDB, RDS เป็นต้น

  2. คุณสามารถกำหนดไดรฟ์ข้อมูล EBS ถาวรที่อินสแตนซ์แนบและเมานต์แบบไดนามิกเมื่อเริ่มต้น สิ่งนี้สามารถทำได้ด้วยสคริปต์ข้อมูลผู้ใช้


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

1
เมื่อคุณสร้างคำร้องขอสปอตคุณจะต้องระบุข้อมูลผู้ใช้ที่ควรส่งต่อไปยังอินสแตนซ์จุดใหม่แต่ละรายการ
Eric Hammond

ฉันไม่เข้าใจด้วยการวาง cloud-init #! อันดับแรกในข้อมูลผู้ใช้ที่เรียกใช้งานสคริปต์ ขอบคุณ
Jeff

3
@ เจฟฟ์: ใช่ฉันคิดค้นและ AMIs ที่เป็นที่นิยมได้นำมาใช้ :-) alestic.com/2009/06/ec2-user-data-scripts
Eric Hammond

ในบรรทัดนี้เป็นไปได้หรือไม่ที่จะมีจุดอินสแตนซ์แบบเมาท์สำหรับปริมาณ EBS ที่เฉพาะเจาะจงเป็นดิสก์รูตเมื่อเริ่มทำงาน
Derek Morrison

5

ตรวจสอบโครงการ ec2-spotterบน GitHub มันถูกสร้างขึ้นเพื่อแก้ปัญหาที่คุณอธิบาย

ปัญหา (# 1 ถึง # 4) ที่อธิบายไว้ในคำตอบของ @ mcenzm เป็นเรื่องจริงและได้รับการจัดการอย่างถูกต้องใน ec2-spotter


Dunno ผู้ที่ลงคะแนนในที่นี้ แต่หมายความว่าฉันสามารถหยุดการสูญเสียเวลาในการพยายามเขียนโค้ดได้! รักมัน
Jeremy

3

ฉันได้ลองสิ่งนี้มาระยะหนึ่งแล้วและยังคงมีปัญหาจำนวนหนึ่งสำหรับอินสแตนซ์จุด EC2 และที่เก็บข้อมูลที่แนบ

  1. ระดับเสียงที่คุณต้องการแนบอาจไม่อยู่ในโซนเดียวกันกับอินสแตนซ์? ไม่สามารถระบุโซนเมื่อเริ่มต้น
  2. การแนบกับสคริปต์เริ่มต้นภายในจะทำงานได้ แต่จะไม่ค่อยตรงกันดังนั้นคุณจะต้องทดสอบหรือsleep 10บอกว่า
  3. ฉันไม่เข้าใจว่าเพราะเหตุใดคอนโซล AWS จึงแสดง "พาร์ติชัน" เป็นอุปกรณ์บล็อกหลัก อาจจะปฏิเสธพวกเราเถอะที่รูปโจรสลัดในพาร์ติชั่นอื่น? (sda1 แทน sda) ขอให้โชคดีในการหาตารางพาร์ทิชัน

    ป้อนคำอธิบายรูปภาพที่นี่

  4. ปัจจุบันยากที่จะแนบโดยใช้ CLI จากจุดควบคุมภายนอกซึ่งทำให้ยากต่อการใช้สแน็ปช็อตสำหรับการกำหนดเวอร์ชัน

  5. ดังนั้นโดยทั่วไปฉันสำรอง ... tar.bz2 ไปยังกล่องอื่นและจากนั้นสามารถเติม "พื้นที่ทำงาน" เมื่อเริ่มต้น สิ่งนี้มีประโยชน์สำหรับข้อมูลจำนวนน้อยเท่านั้นดังนั้นการสร้าง ami ใหม่ที่มีทั้งสองเล่มเป็นความคิดที่ดี จุดอินสแตนซ์นั้นดีสำหรับการทำงาน "หน่วยงาน" หรือ "รีสตาร์ทได้" ดังนั้นแนวคิดของการดึงงานจากเซิร์ฟเวอร์จึงได้รับการยอมรับ เนื่องจากคุณกำลังรอการเปิดตัวถึง 9 นาทีคุณอาจไม่ต้องสนใจฟอร์แมตดิสก์ของคุณ (เล็กที่สุดเท่าที่เป็นไปได้)

    1. EBS ยังค่อนข้างเป็นขุยและคุณต้องจ่ายเพิ่มสำหรับ "ปรับให้เหมาะสม" มันยังเร็วกว่าการพยายามอัปโหลดงานที่เสร็จสมบูรณ์ใน 90s หรือมากกว่านั้นเมื่ออินสแตนซ์นั้นเป็น "ราคา"

    2. ฉันสงสัยว่าสิ่งนี้จะเปลี่ยนแปลงด้วยการเสนอ "ไฟล์ยืดหยุ่น" ใด ๆ


1
1. คุณระบุซับเน็ตซึ่งเชื่อมโยงกับโซน AZ 2. รอจนกระทั่ง / dev / xvdx ปรากฏขึ้นเป็นเรื่องง่าย 3. สิ่งนี้เกี่ยวข้องกันอย่างไร
Morgan Christiansson

0

วิธีแก้ปัญหาที่เป็นไปได้ในการเปิด EC2 Spot Instance ด้วย EBS จากนั้นหยุด EC2 Instance เมื่อคุณไม่ต้องการแล้วเริ่มใหม่อีกครั้งเนื่องจากฟีเจอร์ใหม่ EBS จะถูกแนบใหม่

https://aws.amazon.com/about-aws/whats-new/2020/01/amazon-ec2-spot-instances-stopped-started-similar-to-on-demand-instances/

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