การซื้อบัญชี Microsoft Cloud: สอนวิธีใช้ Azure VMSS เพื่อขยายแอปพลิเคชันโดยอัตโนมัติและยืดหยุ่น
ในบทช่วยสอนล่าสุดเราประสบความสำเร็จในการปรับใช้เครื่องเสมือนเครื่องแรกใน Azure แต่ในความเป็นจริงหากเว็บไซต์ของคุณพบการเข้าชมแบบ "Double Eleven" อย่างกะทันหันเครื่องเสมือนเครื่องเดียวอาจเป็นอัมพาตทันทีและในช่วงดึกเมื่อปริมาณการใช้งานต่ำการปล่อยให้เซิร์ฟเวอร์ประสิทธิภาพสูงจำนวนมากไม่ทำงานเป็นการเสียเงินจำนวนมาก.
ในยุคคลาวด์เนทีฟเราไม่ควรซื้อเซิร์ฟเวอร์และสภาพแวดล้อมการจัดจำหน่ายด้วยตนเอง
ชุดเครื่องเสมือนของ Azure (Virtual Machine Scale Sets เรียกว่า VMSS)
มันเกิดมาเพื่อแก้ปัญหาจุดเจ็บปวดนี้มันสามารถขึ้นอยู่กับการเปลี่ยนแปลงของการจราจรทางธุรกิจ
โดยอัตโนมัติช่วยให้คุณเพิ่ม (ซื้อ) หรือลดจำนวนอินสแตนซ์เครื่องเสมือน
。
บทช่วยสอนเชิงลึกของวันนี้จะพาคุณไปตั้งแต่เริ่มต้นและสร้างสถาปัตยกรรมเว็บแอปพลิเคชันที่ใช้งานได้สูงเป็นพิเศษด้วยความสามารถในการ "ขยายและหดตัวโดยอัตโนมัติ"
1.แนวคิดหลัก: VMSS และการขยายตัวที่ยืดหยุ่นคืออะไร?
ก่อนที่จะเริ่มเราใช้ภาษาพื้นถิ่นเพื่อชี้แจงแนวคิดฮาร์ดคอร์สองแนวคิด:
Virtual Machine Scale Set (VMSS): พูดง่ายๆก็คือ "เทมเพลตเครื่องพิมพ์ดีด" คุณต้องกำหนดค่าระบบปฏิบัติการและสภาพแวดล้อมซอฟต์แวร์ของเครื่องเสมือนเท่านั้นและ VMSS สามารถช่วยคุณโคลนเครื่องเสมือน5, 50หรือ500เครื่องที่เหมือนกันได้ภายในไม่กี่นาที
การขยายตัวในแนวนอน (Scale Out) และการหดตัวในแนวนอน (Scale In): การขยายตัวในแนวตั้งคือการเปลี่ยน CPU แบบดูอัลคอร์เป็น quad-core (ต้องรีสตาร์ทมีขีดจำกัดบน) การขยายในแนวนอนคือ "คนจำนวนมากขึ้นและแรงขึ้น"-หนึ่งไม่สามารถถือได้อีกสองคนโดยอัตโนมัติหากการจราจรหายไปจะถูกส่งคืนโดยอัตโนมัตินี่คือความยืดหยุ่น
ประการที่สองการออกแบบสถาปัตยกรรมหลัก
สิ่งที่เราต้องการสร้างไม่ใช่ชุดสเกลเปล่าแต่เป็นโครงสร้างสภาพแวดล้อมการผลิตมาตรฐาน:
[การจราจรทางอินเทอร์เน็ต (HTTP/80)]
│
▼
[Azure โหลดควอไลเซอร์]
(Load Balancer)
│
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────
▼ ▼
[ตัวอย่าง VMSS 1] [ตัวอย่าง VMSS 2 ] ... (เพิ่มขึ้นหรือลดลงโดยอัตโนมัติตาม CPU)
การไหลจะมาถึงตัวโหลดบาลานซ์ก่อนและจะกระจายไปยังอินสแตนซ์ VMSS ที่แบ็กเอนด์อย่างเท่าเทียมกัน VMSS จะจ้องมองไปที่การสูญเสีย CPU ของอินสแตนซ์เหล่านี้และเมื่อเกินเกณฑ์แล้วจะแยกอินสแตนซ์ใหม่โดยอัตโนมัติเพื่อเข้าร่วมการต่อสู้
3.ขั้นตอนแรก: สร้างและกำหนดค่า VMSS (โครงสร้างพื้นฐาน)
เข้าสู่ Azure Portal (Azure Portal) และสูญเสียในแถบค้นหา
เข้า
"ชุดมาตราส่วนเครื่องเสมือน"
(Virtual Machine Scale Sets) คลิกที่ "สร้าง"
1. ข้อมูลพื้นฐาน
กลุ่มทรัพยากร: ขอแนะนำให้สร้างใหม่เช่น MyVMSS-RG
ชื่อชุดมาตราส่วนเครื่องเสมือน: เช่น my-web-scale-set
ภูมิภาค: เลือกภูมิภาคที่ใกล้คุณที่สุด (เช่น East Asia)
กระบวนการทางธุรกิจ: เลือก "Uniform" สิ่งนี้ช่วยให้มั่นใจได้ว่าเครื่องที่โคลนทั้งหมดมีความสอดคล้องกันอย่างสมบูรณ์และเหมาะสมที่สุดสำหรับเว็บแอปพลิเคชันไร้สัญชาติ
รูปภาพ: ที่นี่เราใช้ Ubuntu Server 24.04 LTS เป็นตัวอย่าง (ตรรกะการทำงานของ Windows เหมือนกันทุกประการ)
2.ขนาดและข้อกำหนด
ขนาด: ยังคงแนะนำ Standard_B1s หรือ Standard_B2s ที่คุ้มค่ามาก (ฝึกฝนให้เพียงพอประหยัดเงินก่อน)
ประเภทการตรวจสอบ: เลือก "รหัสผ่าน" หรือ "คีย์ SSH" เพื่อความสะดวกในการสอนและการนำเสนอเราเลือกรหัสผ่านที่นี่ตั้งชื่อผู้ใช้ (เช่น azureuser) และรหัสผ่านที่แข็งแกร่ง
3.การกำหนดค่าเครือข่าย (ขั้นตอนที่สำคัญ)
ดึงไปที่ส่วนเครือข่ายและคุณจะเห็นตัวเลือก
ติ๊ก "ใช้โหลดบาลานซ์"
ตัวเลือก Load Equalizer: เลือก "Azure Load Equalizer"
เลือกโหลดควอไลเซอร์/ใหม่: ชื่อ my-load-balancer 。
เลือกแบ็กเอนด์พูล/ใหม่: ชื่อ my-backend-pool 。
💡ทำไมคุณถึงเลือกสิ่งนี้? ด้วยวิธีนี้ไม่ว่า VMSS จะสร้างเครื่องเสมือนกี่เครื่องโดยอัตโนมัติในอนาคต Azure จะยัดลงใน "แบ็กเอนด์พูล" นี้โดยอัตโนมัติและตัวโหลดบาลานซ์จะกระจายปริมาณการเข้าถึงของผู้ใช้โดยอัตโนมัติโดยไม่จำเป็นต้องให้คุณกำหนดค่า IP ด้วยตนเอง.
4.ขั้นตอนที่สอง: ใช้สคริปต์ที่กำหนดเองเพื่อบรรลุ "นอกกรอบและใช้งาน"
การชุมนุมขนาดใหญ่จะช่วยเราสร้างเครื่องจักรโดยอัตโนมัติแต่เครื่องใหม่ว่างเปล่าเครื่องที่เพิ่งโคลนจะติดตั้งบริการเว็บโดยอัตโนมัติ (เช่น Nginx) และเรียกใช้แอปพลิเคชันของเราได้อย่างไร
เราจำเป็นต้องใช้
ขั้นสูง (ขั้นสูง)
ในตัวเลือก
"ขยายสคริปต์ที่กำหนดเอง (Custom Script Extension)"
。
ในการสร้างเพจ
“อาวุโส”
ในแท็บค้นหา "Custom Data" และวางสคริปต์การเริ่มต้น Linux ต่อไปนี้ในกล่องข้อความ:
Bash
#! /Bin/bash
# ปรับปรุงระบบและติดตั้ง Nginx
Apt-get update -y
Apt-get install nginx -y
# เริ่มบริการ Nginx
Systemctl start nginx
ระบบ
Temctl enable nginx
# เขียนหน้าเว็บเพื่อแสดงชื่อโฮสต์ปัจจุบันแบบไดนามิก (เพื่อให้เราทดสอบเพื่อดูเอฟเฟกต์)
Echo "<h1>Hello from Azure VMSS! My Hostname is: $(hostname)</h1>" > /var/ www/html/index.html
บทบาทของสคริปต์นี้คือ:
เมื่อใดก็ตามที่ VMSS พบว่ามีการรับส่งข้อมูลจำนวนมากและสร้างเครื่องเสมือนใหม่โดยอัตโนมัติเครื่องใหม่นี้จะเรียกใช้รหัสนี้โดยอัตโนมัติทันทีที่บูต-ติดตั้ง Nginx เริ่มบริการและเขียนหน้าเว็บตระหนักถึงระบบอัตโนมัติแบบไม่ต้องดูแลอย่างแท้จริง
5.ขั้นตอนที่สาม: การกำหนดค่ากลยุทธ์การขยายตัวและการหดตัวที่ยืดหยุ่นของแกนอัตโนมัติ
คลิกเพื่อเปลี่ยนไปใช้
"ซูม (Scaling)"
แท็บนี่คือจิตวิญญาณของการกวดวิชาทั้งหมด
ตัวเลือกเริ่มต้นคือ "ปรับขนาดด้วยตนเอง" เราจำเป็นต้องเปลี่ยนเป็น
"ปรับแต่งอัตโนมัติ (Custom autoscale)"
。
ต่อไปเราต้องกำหนดค่า "กฎการขยายตัว" ที่เข้มงวด:
1.ตั้งค่าช่วงอินสแตนซ์
จำนวนอินสแตนซ์ขั้นต่ำ (Minimum): 1 (เก็บ1เครื่องเพื่อประหยัดเงินเมื่อไม่มีใครเข้าชม)
จำนวนอินสแตนซ์สูงสุด (Maximum): 3 (เพื่อป้องกันไม่ให้โค้ดที่เขียนไม่ถูกต้องและตกอยู่ในการวนซ้ำที่ไม่สิ้นสุดหรือเมื่อพบการโจมตีที่เป็นอันตรายให้เปิดเครื่องไปเรื่อยๆเพื่อทำให้บัตรเครดิตหมดและกำหนดขีดจำกัดสูงสุดเพื่อป้องกันกระเป๋าเงิน)
จำนวนอินสแตนซ์เริ่มต้น (Default): 1.
2.เพิ่มกฎการขยาย (Scale Out Rule)
คลิก "เพิ่มกฎ" เราต้องการบอกระบบว่าควรเพิ่มเครื่องเมื่อใด:
แหล่งที่มาของการวัดค่า: ทรัพยากรปัจจุบัน (VMSS)
เวลารวม: ค่าเฉลี่ย
ชื่อของการวัด: Percentage CPU (การใช้งาน CPU)
ตัวดำเนินการ: มากกว่า
เกณฑ์ (Metric threshold): 70 (เมื่อการใช้งาน CPU เฉลี่ยเกิน70%)
ระยะเวลา (นาที): 5 (สถานการณ์นี้กินเวลานานกว่า5นาทีซึ่งหมายความว่าไม่ใช่ความผันผวนที่เกิดขึ้นเป็นครั้งคราวแต่ไม่สามารถทนได้จริงๆ)
การดำเนินการ: เพิ่มจำนวนการนับ
จำนวนตัวอย่าง: 1 (เพิ่มครั้งละ1เครื่อง)
เวลาในการระบายความร้อน (นาที): 5 (หลังจากเพิ่มเครื่องแล้วให้ปล่อยให้กระสุนบินไปสักพักสังเกตเป็นเวลา5นาทีอย่าเพิ่มเร็วเกินไป)
3.เพิ่มกฎการหดตัว (Scale In Rule)
หากมีการยืมและการชำระคืนให้เพิ่มกฎอื่นเพื่อบอกระบบว่าเมื่อใดควรคืนเครื่องเพื่อประหยัดเงิน:
ชื่อของเมตริก: CPU Percentage 。
ตัวดำเนินการ: น้อยกว่า
เกณฑ์: 30 (เมื่อ CPU เฉลี่ยไม่ได้ใช้งานต่ำกว่า30%)
การดำเนินการ: ลดจำนวนลง
จำนวนตัวอย่าง: 1 (1เครื่องต่อการตัด
จนกว่าจะลดลงเหลือค่าต่ำสุด1หน่วย)
หลังจากการกำหนดค่าเสร็จสิ้นให้คลิก
“ดูสร้าง”
รอให้การปรับใช้เสร็จสมบูรณ์
6.ตรวจสอบปาฏิหาริย์: จะทดสอบการขยายตัวอัตโนมัติได้อย่างไร?
หลังจากการปรับใช้เสร็จสิ้นให้ไปที่กลุ่มทรัพยากรของคุณและค้นหาไฟล์
โหลดควอไลเซอร์ (my-load-balancer)
คัดลอก "ที่อยู่ IP สาธารณะส่วนหน้า"
การเข้าถึงปกติ: ป้อน IP นี้ในเบราว์เซอร์ของคุณและคุณควรจะเห็น Hello from Azure VMSS! My Hostname is: my-web-scale-set_0รีเฟรชหลายครั้งหน้าเว็บมีความเสถียรเหมือนภูเขาไท่
การผลิตคริติคอลเทียม (การทดสอบความดัน): เราจำเป็นต้องเติม CPU ของเครื่องนี้ด้วยตนเองเชื่อมต่อกับอินสแตนซ์เครื่องเสมือนปัจจุบันผ่าน SSH เรียกใช้คำสั่งทดสอบความเครียดของ CPU แบบคลาสสิก (หรือติดตั้งเครื่องมือ stress) ในเทอร์มินัล: Bash # ติดตั้งเครื่องมือทดสอบความเครียด sudo apt-get install stress -y # ให้ CPU 4คอร์ทำงานได้เต็มที่ (แม้ว่าคุณจะมีเพียง1คอร์มันจะเต็มไปด้วย) stress -- cpu 4 -- timeout 600
3. ** พยานปาฏิหาริย์: **
กลับไปที่หน้า VMSS ของ Azure Portal แล้วคลิก ** "Run history" ** หรือ ** "Instances" ** ทางด้านซ้าย
หลังจากผ่านไปประมาณ5นาทีคุณจะพบเส้นโค้งของ CPU ที่สูงขึ้นในแผนภูมิทันทีหลังจากนั้นอินสแตนซ์ใหม่จะถูกรีเฟรชในรายการอินสแตนซ์: "my-web-scale-set_1" สถานะคือ "กำลังสร้าง"-> "กำลังทำงาน"
4. ** เยี่ยมชมอีกครั้ง: **
รีเฟรช IP โหลดบาลานซ์ในเบราว์เซอร์ของคุณอย่างบ้าคลั่งคุณจะพบว่าในขณะที่แสดง 'Hostname is: . .. _ 0 'ในขณะที่มันกลายเป็น 'Hostname is: . .. _ 1'
** นี่แสดงให้เห็นว่าตัวโหลดบาลานซ์ได้เปลี่ยนส่วนหนึ่งของการเข้าชมไปยังน้องชายแรกเกิดเรียบร้อยแล้ว! **
5. ** ออกอัตโนมัติ: **
หลังจากผ่านไป10นาทีคำสั่งทดสอบความดันจะสิ้นสุดลงและ CPU จะถอยกลับในอีก5-10นาทีระบบจะเรียกใช้กฎการลดขนาดและเครื่องเสมือนที่สร้างขึ้นใหม่จะถูกปิดและลบโดยอัตโนมัติและทุกอย่างจะกลับคืนสู่สภาพเดิม
---
# # เซเว่นสรุปและคู่มือการจัดเรียงหลุม
จากการเรียนรู้ขั้นสูงในปัจจุบันคุณได้ปลดล็อกความสามารถหลักของสถาปัตยกรรมคลาวด์เนทีฟ-** ความพร้อมใช้งานสูงและการรักษาตัวเองที่ยืดหยุ่น ** ในการใช้งานสภาพแวดล้อมการผลิตจริงมีเคล็ดลับอีกสองประการที่ต้องให้ความสนใจ:
* ** การออกแบบที่ไร้สัญชาติ (Stateless):** เครื่องที่มีการขยายตัวและหดตัวแบบยืดหยุ่นคือ "ชีวิตและความตาย" อย่าเด็ดขาด
เก็บไฟล์และฐานข้อมูลที่อัปโหลดของผู้ใช้ไว้ในฮาร์ดดิสก์ภายในของเครื่องเสมือน VMSS มิฉะนั้นเนื้อหาจะหายไปไฟล์ควรถูกบันทึกไว้ใน Azure Blob Storage และข้อมูลควรถูกบันทึกไว้ในฐานข้อมูลอิสระเช่น Azure SQL
* ** การอัปเดตมิเรอร์: ** วันนี้เราใช้สคริปต์ที่ติดตั้ง Nginx หากแอปพลิเคชันของคุณมีความซับซ้อนและพึ่งพามากวิธีที่ดีกว่าคือกำหนดค่าสภาพแวดล้อมทั้งหมดใน VM ธรรมดาจากนั้นบรรจุลงใน ** ภาพที่กำหนดเอง ** ให้ VMSS ไปโคลนโดยตรงบนพื้นฐานของภาพที่กำหนดเองของคุณ
ด้วยความเชี่ยวชาญ VMSS คุณไม่จำเป็นต้องจ้องที่ป้ายโฆษณาการรับส่งข้อมูลของเซิร์ฟเวอร์ในช่วงกลางดึกอีกต่อไปและคุณสามารถส่งมอบความพร้อมใช้งานสูงให้กับอัลกอริทึมอัตโนมัติของ Microsoft Cloud ได้อย่างสบายใจ!

