0Pricing
AWS Solutions Architect · บทเรียน

เทมเพลตการเปิดใช้งานและการกำหนดค่า ASG

สร้างเทมเพลตการเปิดใช้งานด้วย AMI ประเภทอินสแตนซ์ และข้อมูลผู้ใช้ที่ถูกต้อง จากนั้นแนบเทมเพลตกับ Auto Scaling Group พร้อมกำหนดความจุขั้นต่ำ สูงสุด และที่ต้องการ

เทมเพลตการเปิดใช้งานและการกำหนดค่า ASG เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

เทมเพลตการเปิดใช้งานคืออะไร

เทมเพลตการเปิดใช้งาน คือแบบแปลนที่มีการจัดการเวอร์ชัน ซึ่งบอก Auto Scaling Groups (และ EC2 โดยตรง) ว่าต้องเปิดใช้งานอินสแตนซ์อย่างไร โดยรวบรวม AMI ID ประเภทอินสแตนซ์ คู่คีย์ กลุ่มความปลอดภัย และ ข้อมูลผู้ใช้ที่เป็นตัวเลือกไว้ในเอกสารเดียวที่นำกลับมาใช้ได้ แตกต่างจาก Launch Configuration รุ่นเก่า เทมเพลตการเปิดใช้งานรองรับหลายเวอร์ชันและสามารถอัปเดตได้โดยไม่ต้องแทนที่ ASG

การสร้างเทมเพลตการเปิดใช้งานผ่าน CLI

คุณสามารถสร้างเทมเพลตการเปิดใช้งานด้วย AWS CLI โดยใช้ create-launch-template พารามิเตอร์ --launch-template-data รับออบเจ็กต์ JSON ที่กำหนดการตั้งค่าของอินสแตนซ์ทั้งหมด การจัดการเวอร์ชันช่วยให้คุณปรับปรุงเทมเพลตได้โดยไม่กระทบต่ออินสแตนซ์ที่กำลังทำงานอยู่ จนกว่าคุณจะพร้อมนำไปใช้งาน

aws ec2 create-launch-template \
  --launch-template-name 'MyAppTemplate' \
  --version-description 'v1 initial' \
  --launch-template-data '{
    "ImageId": "ami-0abcdef1234567890",
    "InstanceType": "t3.medium",
    "KeyName": "my-key-pair",
    "SecurityGroupIds": ["sg-0123456789abcdef0"],
    "UserData": "IyEvYmluL2Jhc2gKZWNobyAnSGVsbG8n"
  }'

เวอร์ชันและค่าเริ่มต้นของเทมเพลตการเปิดใช้งาน

เทมเพลตการเปิดใช้งานทุกตัวจะเริ่มต้นที่ เวอร์ชัน 1 เมื่อสร้างเวอร์ชันใหม่ คุณสามารถแทนที่เฉพาะฟิลด์ที่มีการเปลี่ยนแปลง ส่วนการตั้งค่าอื่นทั้งหมดจะสืบทอดจากเวอร์ชันต้นทาง คุณสามารถกำหนดให้ ASG ใช้เวอร์ชัน $Latest (ใหม่ที่สุดเสมอ) หรือเวอร์ชัน $Default (เวอร์ชันที่กำหนดไว้อย่างชัดเจน) การใช้ $Default ช่วยให้ควบคุมการทยอยนำไปใช้งานได้ ส่วน $Latest สะดวกสำหรับสภาพแวดล้อมการพัฒนา

# Create a new version based on version 1, changing only instance type
aws ec2 create-launch-template-version \
  --launch-template-name 'MyAppTemplate' \
  --source-version 1 \
  --launch-template-data '{"InstanceType": "t3.large"}'

แนวคิดหลักของ Auto Scaling Group

Auto Scaling Group (ASG) จะดูแลกลุ่มอินสแตนซ์ EC2 ให้อยู่ภายในขอบเขตที่กำหนด ได้แก่ ขั้นต่ำ (ขีดจำกัดล่าง) ขั้นสูงสุด (ขีดจำกัดบน) และ ความจุที่ต้องการ (จำนวนเป้าหมายในขณะนั้น) เมื่ออินสแตนซ์ไม่ผ่านการตรวจสอบสถานะหรือมีการทำงานของนโยบายการปรับขนาด ASG จะเปิดใช้งานหรือลบอินสแตนซ์โดยอัตโนมัติ เพื่อรักษาจำนวนอินสแตนซ์ให้อยู่ตามจำนวนที่ต้องการระหว่างค่าขั้นต่ำและขั้นสูงสุด

การสร้าง ASG ที่เชื่อมต่อกับแม่แบบการเปิดใช้งาน

เมื่อสร้าง ASG คุณต้องอ้างอิงแม่แบบการเปิดใช้งาน (ไม่ใช่ AMI เฉพาะรายการโดยตรง) และต้องระบุซับเน็ตของ VPC ที่จะใช้เปิดใช้งานอินสแตนซ์ การกระจายอินสแตนซ์ไปยังหลายซับเน็ต (ซับเน็ตละหนึ่ง AZ) ช่วยให้มีความซ้ำซ้อนระหว่างหลาย AZ ในตัว หาก AZ ใดล้มเหลว ASG จะเปิดใช้งานอินสแตนซ์ทดแทนใน AZ ที่เหลือโดยอัตโนมัติ

aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name 'MyAppASG' \
  --launch-template 'LaunchTemplateName=MyAppTemplate,Version=$Default' \
  --min-size 2 \
  --max-size 10 \
  --desired-capacity 4 \
  --vpc-zone-identifier 'subnet-aaa111,subnet-bbb222,subnet-ccc333'

การตรวจสอบสถานะของ ASG: EC2 เทียบกับ ELB

โดยค่าเริ่มต้น ASG จะใช้ การตรวจสอบสถานะของ EC2 ซึ่งจะระบุว่าอินสแตนซ์ไม่สมบูรณ์ก็ต่อเมื่ออินสแตนซ์หยุดทำงาน ถูกยุติ หรือไฮเปอร์ไวเซอร์รายงานว่าอินสแตนซ์ล้มเหลว เมื่อเชื่อมต่อตัวจัดสรรภาระงาน คุณควรเปลี่ยนไปใช้ การตรวจสอบสถานะของ ELB เพื่อให้ ASG เปลี่ยนอินสแตนซ์ที่ยังทำงานอยู่แต่ส่งคืนข้อผิดพลาด HTTP 5xx การข้อนี้เป็นคำถามที่พบบ่อยในการสอบ: หากสถาปัตยกรรมมีตัวจัดสรรภาระงาน ให้เลือกการตรวจสอบสถานะของ ELB เสมอ

# Enable ELB health checks on an existing ASG
aws autoscaling update-auto-scaling-group \
  --auto-scaling-group-name 'MyAppASG' \
  --health-check-type ELB \
  --health-check-grace-period 300

การตั้งค่าความจุ: ขั้นต่ำ ขั้นสูงสุด และที่ต้องการ

การตั้งขอบเขตความจุให้ถูกต้องมีความสำคัญอย่างยิ่ง ขั้นต่ำช่วยให้แอปพลิเคชันรองรับการรับส่งข้อมูลได้เสมอ (ไม่ลดต่ำกว่าค่านี้) ขั้นสูงสุดป้องกันการปรับขนาดอย่างไม่มีขอบเขต ซึ่งอาจใช้โควตาบริการหรืองบประมาณจนหมด ความจุที่ต้องการคือเป้าหมายเริ่มต้น และนโยบายการปรับขนาดจะปรับค่านี้แบบไดนามิก หากตั้งค่า min=max=desired ASG จะทำงานเป็นกลุ่มที่มีขนาดคงที่ ซึ่งมีประโยชน์สำหรับการติดตั้งแม่แบบการเปิดใช้งานหรือการตรึงความจุ

การเชื่อมต่อกลุ่มเป้าหมายของ ALB กับ ASG

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

aws autoscaling attach-load-balancer-target-groups \
  --auto-scaling-group-name 'MyAppASG' \
  --target-group-arns 'arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/MyTG/abc123'

ข้อมูลผู้ใช้ในแม่แบบการเปิดใช้งาน

ข้อมูลผู้ใช้คือสคริปต์เชลล์ (เข้ารหัสด้วย Base64) ที่ทำงานหนึ่งครั้งเมื่ออินสแตนซ์เริ่มระบบเป็นครั้งแรก ในแม่แบบการเปิดใช้งาน จุดนี้เหมาะสำหรับติดตั้งแพ็กเกจ ตั้งค่าตัวแทน (CloudWatch, SSM) และดึงโค้ดแอปพลิเคชันมาใช้ ควรทำให้ข้อมูลผู้ใช้ทำงานซ้ำได้อย่างปลอดภัย—สคริปต์ที่ทำงานได้อย่างปลอดภัยมากกว่าหนึ่งครั้งจะช่วยป้องกันปัญหาระหว่างการปรับปรุงอินสแตนซ์ สำหรับการตั้งค่าที่ซับซ้อน ให้เรียกใช้ AWS Systems Manager หรือเครื่องมือจัดการการกำหนดค่า แทนการฝังสคริปต์ขนาดใหญ่ไว้โดยตรง

#!/bin/bash
yum update -y
yum install -y amazon-cloudwatch-agent
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config -m ec2 -c ssm:/MyApp/CWConfig -s
# Start application
cd /opt/myapp && ./start.sh

พูลอุ่นเพื่อการเพิ่มขนาดที่รวดเร็วขึ้น

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

นโยบายการยุติอินสแตนซ์และการปรับสมดุล AZ

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

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า แม่แบบการเปิดใช้งานมีพิมพ์เขียวอินสแตนซ์ที่นำกลับมาใช้ใหม่ได้และมีการกำหนดเวอร์ชัน ซึ่งรองรับหลายเวอร์ชันและตัวชี้เวอร์ชัน $Latest/$Default ขอบเขตความจุของ ASG (min/max/desired) ควบคุมขนาดกลุ่มอินสแตนซ์พร้อมการกระจายข้ามหลาย AZ ไปยังซับเน็ตโดยอัตโนมัติ และต้องเปิดใช้ การตรวจสอบสถานะของ ELB เมื่อ ASG อยู่ด้านหลังตัวจัดสรรภาระงาน เพื่อให้ความล้มเหลวระดับแอปพลิเคชันทำให้เกิดการเปลี่ยนอินสแตนซ์ทดแทน ต่อไปเราจะสำรวจนโยบายการปรับขนาด ซึ่งรวมถึงการติดตามเป้าหมายและการปรับขนาดตามขั้น

คำถามที่พบบ่อย

บทเรียน “เทมเพลตการเปิดใช้งานและการกำหนดค่า ASG” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เทมเพลตการเปิดใช้งานและการกำหนดค่า ASG” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เทมเพลตการเปิดใช้งานและการกำหนดค่า ASG”

สร้างเทมเพลตการเปิดใช้งานด้วย AMI ประเภทอินสแตนซ์ และข้อมูลผู้ใช้ที่ถูกต้อง จากนั้นแนบเทมเพลตกับ Auto Scaling Group พร้อมกำหนดความจุขั้นต่ำ สูงสุด และที่ต้องการ คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “เทมเพลตการเปิดใช้งานและการกำหนดค่า ASG” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม

ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เทมเพลตการเปิดใช้งานและการกำหนดค่า ASG
  2. นโยบายการปรับขนาด: การติดตามเป้าหมายและการปรับขนาดเป็นขั้น
  3. การปรับขนาดตามกำหนดเวลาและการปรับขนาดเชิงคาดการณ์
  4. การรีเฟรชอินสแตนซ์และฮุกวงจรชีวิต
← กลับไปที่ AWS Solutions Architect