Azure Virtual Machine

Azure Virtual Machine (VM) นั้นเป็นบริการยอดนิยมบริการหนึ่งของ Microsoft Azure ซึ่งเป็นการให้บริการเครื่องคอมพิวเตอร์สำหรับการประมวลผลในรูปแบบ Virtual Machine ซึ่งคล้ายกับ Virtual Machine ที่ใช้ในศูนย์ข้อมูลขององค์กร (On-premise) โดยทั่วไป ทำให้เกิดความสะดวกในการย้ายข้อมูลจาก On-premise ขึ้นไปสู่ Microsoft Azure (จาก https://azure.microsoft.com/en-us/services/virtual-machines/)


ข้อดีของการใช้งาน Azure Virtual Machine

  1. สนับสนุนซอฟต์แวร์หลากหลายประเภท ไม่ว่าจะเป็น Windows Server หรือ Linux จากผู้พัฒนาต่างๆ เช่น Ubuntu, Debian, RedHat เป็นต้น รวมถึงยังได้รับการพัฒนาให้รองรับซอฟต์แวร์ชั้นนำอย่าง SAP, Oracle อีกด้วย
  2. ความสะดวกในการใช้งาน เนื่องจากผู้ใช้งานส่วนใหญ่มีความคุ้นชินกับการใช้งาน Virtual Machine กันอยู่แล้วทำให้เข้าใจในการทำงาน และสามารถบริหารจัดการได้ทันที
  3. มี Virtual Machine ซึ่งมีรูปแบบการจัดสรร CPU, Memory, Disk แตกต่างกันให้เลือกใช้ตามความเหมาะสมของแอพลิเคชั่น
  4. รองรับปริมาณงานจำนวนมาก และสามารถที่จะเพิ่มจำนวน Virtual Machine ได้อีกด้วย เรียกว่า VM Scale Set
  5. สามารถย้าย Virtual Machine ที่ทำงานอยู่ภายใน On-premise ไปไว้บน Microsoft Azure ได้ โดยใช้ Azure Migrate

การเลือกขนาดของ Azure Virtual Machine

Azure Virtual Machine มีการจัดกลุ่มของ Virtual Machine (เรียกว่า VM Series) โดยแต่ละ VM Series จะมีรูปแบบของ CPU, Memory, แตกต่างกัน ให้เลือกใช้ตามความเหมาะสมเช่น (ดูรายละเอียดของแต่ละ Series)


หมายเหตุ : รายละเอียดของ VM ในแต่ละ Series อาจจะแตกต่างกันไปขึ้นอยู่กับเวอร์ชันของ VM Series นั้นๆ

การเลือกใช้ Disk ของ Azure Virtual Machine

Disk นับว่าเป็นปัจจัยหนึ่งที่เกี่ยวข้องกับการทำงานของ Azure Virtual Machine ดังนั้นจึงหากเราเลือกใช้ Disk ได้เหมาะสมกับก็จะทำให้เราสามารถดึงเอาประสิทธิภาพของ Virtual Machine มาใช้ได้อย่างมีประสิทธิภาพ (https://docs.microsoft.com/en-us/azure/virtual-machines/managed-disks-overview)



Figure 1 – Disk Roles

Disk Roles เป็นการแบ่งหน้าที่ในการเก็บข้อมูลต่างๆ ของ Disk ใน Azure Virtual Machine แบ่งเป็น 3 หน้าที่ คือ
  • OS Disk เป็น Disk ที่มีหน้าทีในการเก็บระบบปฏิบัติการเช่น Windows, Linux จะได้รับการสร้างมาให้พร้อมกับ Azure VM
  • Temporary Disk ทำหน้าที่ในการเก็บข้อมูลชั่วคราวในการทำงานของแอพลิเคชั่น เช่น Page file, swap file และข้อมูลใน Temp Disk นี้จะถูกลบทิ้งทุกครั้งที่มีการปิด VM
  • Data Disk มีหน้าที่เก็บข้อมูลของแอพลิเคชั่นไว้ ข้อมูลที่เก็บไว้ใน Data Disk จะไม่หายไป ประสิทธิภาพของ Data Disk จะส่งผลกับประสิทธิภาพของ Azure VM มากที่สุด จึงควรเลือกให้เหมาะสมกับการทำงาน

Managed Disk VS Un-managed Disk


Figure 2 – Managed Disk & Un-Managed Disk

ใน Microsoft Azure นั้นได้มีบริการอีกบริการหนึ่งชื่อว่า Storage Account เอาไว้ใช้สำหรับจัดเก็บข้อมูลโดยเฉพาะซึ่งในรูปทางซ้ายมือ (Unmanaged Disk) นั้นจะเห็นได้ Virtual Machine จะต้องมีการใช้งาน Disk ผ่านทาง Storage Account ไปอีกชั้นหนึ่ง ทำให้เมื่อ Storage Account ซึ่งมี Disk หลายๆ Disk และแต่ละ Disk มีการใช้งานสูงมากขึ้น ทำให้เกิดคอขวดที่ Storage Account ขึ้น

ในขณะที่ภาพทางขวามือซึ่งเป็นรูปแบบ Managed Disk จะเห็นว่า Disk ที่ใช้งานนั้นใน 1 Storage Account จะมีเพียง 1 Disk ทำให้ Disk เหล่านี้ไม่ต้องใช้ทรัพยากรร่วมกับ Disk อื่น ๆ ทำให้ Virtual Machine สามารถใช้งานได้เต็มประสิทธิภาพของ Disk ดังนั้นในปัจจุบันจึงนิยมใช้ Disk ที่เป็น Managed Disk มากกว่า Un-managed Disk


ชนิดและประสิทธิภาพของ Disk

ปัจจัยอีกประการหนึ่งเกี่ยวกับประสิทธิภาพของ Disk ใน Azure Virtual Machine ก็คือชนิด และประสิทธิภาพของ Disk ที่เราเลือกใช้ใน Azure Virtual Machine นั่นเอง ซึ่งชนิดของ Disk มีดังต่อไปนี้ (https://docs.microsoft.com/en-us/azure/virtual-machines/disks-types)



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

นอกจาก VM Series ต่างๆ ก็จะมีข้อจำกัดในการใช้ชนิดของ Disk ที่แตกต่างกันออกไปเช่นกัน


Azure Virtual Machine กับการออกแบบ Azure Virtual Network



Figure 3 – Azure Virtual Network and Azure Virtual Machine

Azure Virtual Network หรือ VNET เป็นอีกสิ่งหนึ่งที่ช่วยให้ Azure Virtual Machine สามารถที่จะเชื่อมต่อกับเครือข่ายอินเทอร์เน็ต และให้บริการกับผู้ใช้งานได้

ดังนั้นจึงควรจะมีการออกแบบ VNET ให้สอดคล้องกับนโยบายการรักษาความปลอดภัยขององค์กร เช่น การแบ่งเครือข่ายย่อย (Subnet) หรือการใช้ Network Security Group (NSG) ในการกรองข้อมูลที่จะผ่านเข้า/ออก Subnet หรือ Network Interface ของ Azure Virtual Machine ดังตัวอย่างในรูป