การปรับขนาดอัตโนมัติและโดเมนแบบกำหนดเอง
กำหนดค่ากฎการขยายขนาดตามเมตริก CPU และคิว HTTP เชื่อมโยงโดเมนแบบกำหนดเองกับเว็บแอป และผูกใบรับรองที่มีการจัดการโดย App Service ซึ่งไม่มีค่าใช้จ่าย
การปรับขนาดอัตโนมัติและโดเมนแบบกำหนดเอง เป็นบทเรียน Azure Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Azure Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Azure Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
เหตุผลที่การปรับขนาดอัตโนมัติมีความสำคัญ
การปรับขนาดอัตโนมัติจะปรับจำนวนอินสแตนซ์ App Service ที่เรียกใช้แอปพลิเคชันของคุณโดยอัตโนมัติตามความต้องการแบบเรียลไทม์ หากไม่มีการปรับขนาดอัตโนมัติ คุณต้องจัดเตรียมทรัพยากรให้รองรับปริมาณงานสูงสุดและจ่ายเงินสำหรับความจุที่ไม่ได้ใช้งานในช่วงนอกเวลาเร่งด่วน เมื่อมีการปรับขนาดอัตโนมัติ Azure จะเพิ่มอินสแตนซ์เมื่อปริมาณงานสูงขึ้น และนำอินสแตนซ์ออกเมื่อปริมาณงานลดลง ซึ่งช่วยเพิ่มประสิทธิภาพทั้ง ประสิทธิภาพและค่าใช้จ่าย การปรับขนาดอัตโนมัติต้องใช้ระดับ Standard ขึ้นไป
การขยายออกเทียบกับการขยายขึ้น
Azure มีมิติการปรับขนาดสองแบบ การขยายออก (การปรับขนาดแนวนอน) คือการเพิ่มอินสแตนซ์ของแอปที่เหมือนกันเพื่อช่วยกันรองรับปริมาณงาน ซึ่งเป็นสิ่งที่การปรับขนาดอัตโนมัติทำเป็นหลัก การขยายขึ้น (การปรับขนาดแนวตั้ง) คือการย้ายไปใช้ขนาด VM ที่ใหญ่ขึ้นซึ่งมี CPU และ RAM มากขึ้น โดยเปลี่ยน SKU ของแผน App Service การขยายออกเหมาะกว่าสำหรับความยืดหยุ่น เนื่องจากหลายอินสแตนซ์ยังสามารถทำงานต่อได้เมื่ออินสแตนซ์ใดอินสแตนซ์หนึ่งขัดข้อง ส่วนการขยายขึ้นมีข้อจำกัดด้านฮาร์ดแวร์
# Scale out to 5 instances manually
az appservice plan update \
--name MyAppServicePlan \
--resource-group MyRG \
--number-of-workers 5
# Scale up: change the SKU tier
az appservice plan update \
--name MyAppServicePlan \
--resource-group MyRG \
--sku P2V3กฎและโพรไฟล์การปรับขนาดอัตโนมัติ
การปรับขนาดอัตโนมัติใน Azure กำหนดค่าผ่าน การตั้งค่าการปรับขนาดอัตโนมัติที่แนบกับแผน App Service การตั้งค่าการปรับขนาดอัตโนมัติประกอบด้วย โพรไฟล์ อย่างน้อยหนึ่งรายการ (แบบปกติ แบบวันที่กำหนด และแบบเกิดซ้ำ) โดยแต่ละโพรไฟล์ประกอบด้วย กฎ เมื่อเมตริกเกินเกณฑ์ กฎขยายออกจะทำงาน (เช่น CPU > 70%) และเมื่อเมตริกลดลงต่ำกว่าเกณฑ์ที่ต่ำกว่า กฎขยายเข้าจะทำงาน (เช่น CPU < 30%) ควรกำหนดทั้งกฎขยายออกและกฎขยายเข้าเสมอ เพื่อหลีกเลี่ยงการเพิ่มทรัพยากรอย่างควบคุมไม่ได้หรือค่าใช้จ่ายที่สูงเกินไป
# Create an autoscale setting with CPU-based rules
az monitor autoscale create \
--name MyAutoscale \
--resource-group MyRG \
--resource MyAppServicePlan \
--resource-type Microsoft.Web/serverfarms \
--min-count 2 \
--max-count 10 \
--count 2
# Add scale-out rule: CPU > 70% for 5 minutes
az monitor autoscale rule create \
--autoscale-name MyAutoscale \
--resource-group MyRG \
--scale out 2 \
--condition 'CpuPercentage > 70 avg 5m'การปรับขนาดอัตโนมัติตามกำหนดเวลา
การปรับขนาดอัตโนมัติตามกำหนดเวลา (โพรไฟล์แบบเกิดซ้ำ) ช่วยให้คุณปรับขนาดล่วงหน้าสำหรับรูปแบบการรับส่งข้อมูลที่คาดการณ์ได้ ตัวอย่างเช่น ขยายออกเป็น 10 อินสแตนซ์ทุกวันธรรมดาเวลา 08:00 น. และลดกลับเหลือ 2 อินสแตนซ์เวลา 18:00 น. การผสานรวมโพรไฟล์ตามกำหนดเวลาและโพรไฟล์ตามเมตริกเข้าด้วยกันจะให้ประโยชน์ทั้งสองด้าน ได้แก่ ความจุที่ปรับไว้ล่วงหน้าสำหรับช่วงสูงสุดที่ทราบ และการตอบสนองแบบยืดหยุ่นต่อการเพิ่มขึ้นอย่างฉับพลันที่ไม่คาดคิด
# Add a recurrence profile for weekday peak hours
az monitor autoscale profile create \
--autoscale-name MyAutoscale \
--resource-group MyRG \
--name 'WeekdayPeak' \
--min-count 5 \
--max-count 15 \
--count 5 \
--recurrence week mon tue wed thu fri \
--start 08:00 \
--end 18:00 \
--timezone 'UTC'ช่วงรอหลังการปรับขนาด
ช่วงรอหลังการปรับขนาด คือระยะหน่วงหลังการดำเนินการปรับขนาด ซึ่งจะไม่มีการปรับขนาดเพิ่มเติมในช่วงดังกล่าว ช่วงนี้ช่วยป้องกันการสลับไปมาอย่างรวดเร็ว ซึ่งเกิดจากการขยายออกหรือขยายเข้าซ้ำ ๆ เนื่องจากเมตริกเพิ่มขึ้นชั่วคราว ค่าเริ่มต้นของช่วงรอคือ 5 นาทีสำหรับการขยายออก และ 5 นาทีสำหรับการขยายเข้า ควรกำหนดช่วงรอสำหรับการขยายเข้าให้นานขึ้น (เช่น 10–15 นาที) เพื่อให้อินสแตนซ์มีเวลาปิดการเชื่อมต่อที่กำลังใช้งานอยู่ก่อนถูกนำออก
# Scale-in rule with 10-minute cooldown
az monitor autoscale rule create \
--autoscale-name MyAutoscale \
--resource-group MyRG \
--scale in 1 \
--condition 'CpuPercentage < 30 avg 10m' \
--cooldown 10การกำหนดค่าโดเมนแบบกำหนดเอง
แอป App Service จะได้รับชื่อโฮสต์เริ่มต้นเป็น azurewebsites.net หากต้องการใช้โดเมนของคุณเอง (เช่น www.contoso.com) ให้เพิ่ม โดเมนแบบกำหนดเอง ในการตั้งค่า App Service และสร้างระเบียน DNS ที่สอดคล้องกันกับผู้รับจดทะเบียนโดเมนของคุณ คุณต้องพิสูจน์ความเป็นเจ้าของโดยสร้าง ระเบียน CNAME หรือ ระเบียน TXT (เรียกว่าระเบียนตรวจสอบ) ในโซน DNS จากนั้นจึงสร้างระเบียน CNAME หรือ A สำหรับการกำหนดเส้นทางจริง
# DNS records at your registrar:
# CNAME www MyUniqueWebApp.azurewebsites.net
# TXT asuid.www <verification_id from Azure portal>
# After DNS propagation, add the custom domain in Azure
az webapp config hostname add \
--webapp-name MyUniqueWebApp \
--resource-group MyRG \
--hostname www.contoso.comใบรับรอง TLS สำหรับโดเมนแบบกำหนดเอง
เมื่อแมปโดเมนแบบกำหนดเองแล้ว คุณต้องมี ใบรับรอง TLS เพื่อเปิดใช้ HTTPS App Service มีสามตัวเลือก ได้แก่ ใบรับรองที่ App Service จัดการ (ฟรี ต่ออายุอัตโนมัติ และจำกัดเฉพาะโดเมนมาตรฐาน) ใบรับรอง App Service (ซื้อผ่าน Azure และจัดเก็บใน Key Vault) หรือ การอัปโหลดใบรับรองจากผู้ให้บริการภายนอก (ใบรับรองของคุณเองจาก Let's Encrypt หรือ CA) โหมด HTTPS เท่านั้นจะเปลี่ยนเส้นทางการรับส่งข้อมูล HTTP ทั้งหมดไปยัง HTTPS โดยอัตโนมัติ
# Create a free App Service Managed Certificate
az webapp config ssl create \
--name MyUniqueWebApp \
--resource-group MyRG \
--hostname www.contoso.com
# Bind the certificate to enforce HTTPS
az webapp config ssl bind \
--name MyUniqueWebApp \
--resource-group MyRG \
--certificate-thumbprint <THUMBPRINT> \
--ssl-type SNI
# Enforce HTTPS only
az webapp update \
--name MyUniqueWebApp \
--resource-group MyRG \
--https-only trueเมตริกคิว HTTP สำหรับการปรับขนาดอัตโนมัติ
แม้ CPU จะเป็นเมตริกที่ใช้กันทั่วไปสำหรับการปรับขนาดอัตโนมัติ แต่ ความยาวคิว HTTP มักเป็นสัญญาณที่ดีกว่าสำหรับเว็บแอปพลิเคชัน เมื่อคิวมีความยาวมาก คำขอใหม่จะต้องรอเนื่องจากอินสแตนซ์ใช้งานเต็มความจุแล้ว การปรับขนาดตาม HttpQueueLength ตรวจพบภาวะโหลดเกินได้เร็วกว่า CPU เนื่องจาก CPU อาจผันผวนโดยไม่จำเป็นต้องบ่งชี้ถึงเวลาแฝงที่ผู้ใช้พบ ใช้ทั้งสองเมตริกร่วมกันเพื่อให้การทำงานของการปรับขนาดอัตโนมัติมีความแข็งแกร่ง
# Scale out when HTTP queue length exceeds 100
az monitor autoscale rule create \
--autoscale-name MyAutoscale \
--resource-group MyRG \
--scale out 2 \
--condition 'HttpQueueLength > 100 avg 1m' \
--cooldown 5
# Scale in when queue drops below 10
az monitor autoscale rule create \
--autoscale-name MyAutoscale \
--resource-group MyRG \
--scale in 1 \
--condition 'HttpQueueLength < 10 avg 10m' \
--cooldown 10การแจ้งเตือนการปรับขนาดอัตโนมัติ
กำหนดค่า การแจ้งเตือนการปรับขนาดอัตโนมัติ เพื่อรับการแจ้งเตือนทางอีเมลหรือเว็บฮุกเมื่อเกิดเหตุการณ์การปรับขนาด วิธีนี้ช่วยให้ทีมเข้าใจรูปแบบการรับส่งข้อมูลและตรวจสอบว่าการปรับขนาดอัตโนมัติทำงานตามที่คาดไว้ การแจ้งเตือนกำหนดค่าได้ในส่วนการแจ้งเตือนของการตั้งค่าการปรับขนาดอัตโนมัติ และสามารถส่งไปยังที่อยู่อีเมลและปลายทางเว็บฮุกหลายแห่งได้ (เพื่อผสานรวมกับ Slack, PagerDuty หรือเครื่องมือแบบกำหนดเอง)
# Add email notification to autoscale setting
az monitor autoscale update \
--name MyAutoscale \
--resource-group MyRG \
--add-condition '{"email": {"sendToSubscriptionAdministrator": true, "customEmails": ["ops@contoso.com"]}, "webhooks": []}'โดเมน Apex และ Traffic Manager
การแมป โดเมน Apex (เช่น contoso.com ที่ไม่มี www) ไปยัง App Service ต้องใช้ ระเบียน A ที่ชี้ไปยังที่อยู่ IP ของ App Service รวมถึงระเบียน TXT สำหรับการยืนยัน เนื่องจากที่อยู่ IP ของ App Service อาจเปลี่ยนแปลงได้ Microsoft จึงแนะนำให้ใช้ Azure การจัดการการรับส่งข้อมูล หรือ Azure Front Door เป็นตัวกลาง โดยโดเมน Apex ที่เทียบเท่ากับ CNAME (ระเบียน ALIAS/ANAME) จะชี้ไปยังโปรไฟล์ Traffic Manager ซึ่งจะกำหนดเส้นทางไปยัง App Service
# Get the App Service inbound IP (for A record)
az webapp show \
--name MyUniqueWebApp \
--resource-group MyRG \
--query 'inboundIpAddress' -o tsv
# DNS at registrar (apex domain with A record approach)
# A contoso.com <inboundIpAddress>
# TXT asuid <verification_id>การทดสอบลักษณะการทำงานของการปรับขนาดอัตโนมัติ
หลังจากกำหนดค่าการปรับขนาดอัตโนมัติแล้ว ให้ทดสอบว่าทำงานได้อย่างถูกต้องด้วยการสร้างโหลดเทียม ใช้เครื่องมือ เช่น Apache JMeter, k6 หรือ Azure Load Testing เพื่อจำลองผู้ใช้พร้อมกันหลายราย ตรวจสอบ เมตริกจำนวน Instance ของแผน App Service ใน Azure Monitor เพื่อยืนยันว่าจำนวน Instance เพิ่มขึ้นเมื่อโหลดสูงขึ้น และลดลงเมื่อโหลดลดลง บันทึกค่า RPS (คำขอต่อวินาที) ที่สังเกตได้ต่อ Instance เพื่อยืนยันค่าเกณฑ์การปรับขนาดของคุณ
# Run a quick load test with curl (basic)
for i in {1..100}; do curl -o /dev/null -s https://www.contoso.com/health & done
wait
# Monitor current instance count
az monitor metrics list \
--resource '/subscriptions/.../providers/Microsoft.Web/serverfarms/MyAppServicePlan' \
--metric 'InstanceCount' \
--interval PT1Mตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจแนวคิด Microsoft Azure Fundamentals (AZ-900) จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า กฎการปรับขนาดอัตโนมัติ ในแผน App Service จะเพิ่มหรือลบ Instance ตามทริกเกอร์จาก CPU คิว HTTP หรือตารางเวลา โดเมนแบบกำหนดเอง ต้องใช้ระเบียน DNS CNAME/A รวมถึงระเบียน TXT สำหรับการยืนยันในโซน DNS และ ใบรับรอง TLS (รวมถึงใบรับรองที่มีการจัดการให้ใช้ฟรี) ช่วยเปิดใช้งาน HTTPS บนโดเมนแบบกำหนดเอง ต่อไปเราจะสำรวจการตรวจสอบสิทธิ์และเครือข่ายของ App Service
คำถามที่พบบ่อย
บทเรียน “การปรับขนาดอัตโนมัติและโดเมนแบบกำหนดเอง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การปรับขนาดอัตโนมัติและโดเมนแบบกำหนดเอง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Azure Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Azure Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การปรับขนาดอัตโนมัติและโดเมนแบบกำหนดเอง”
กำหนดค่ากฎการขยายขนาดตามเมตริก CPU และคิว HTTP เชื่อมโยงโดเมนแบบกำหนดเองกับเว็บแอป และผูกใบรับรองที่มีการจัดการโดย App Service ซึ่งไม่มีค่าใช้จ่าย คุณปฏิบัติ Azure Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Azure Fundamentals หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Azure Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การปรับขนาดอัตโนมัติและโดเมนแบบกำหนดเอง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Azure Fundamentals นี้ได้ไหม
ได้ บทเรียน Azure Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างแผน App Service และเว็บแอป
- ช่องการปรับใช้และการสลับ
- การปรับขนาดอัตโนมัติและโดเมนแบบกำหนดเอง
- การตรวจสอบสิทธิ์และเครือข่ายของ App Service