รู้จัก OpenStack แบบง่ายๆ

อะไรคือสิ่งที่ทำให้ OpenStack โดดเด่นกว่าคู่แข่งรายอื่น เท่าที่รู้ๆกันอยู่ว่า OpenStack กำลังได้รับการตอบรับมากขึ้น ในฐานะ Open Source สำหรับ Private Cloud ซึ่งเราจะพาไปทำความรู้จักกับ Ecosystem ของ OpenStack

OpenStack กับ Amazon EC2 อาจดูคล้ายกัน เพราะผู้ใช้สามารถ Provision VM จาก Dashboard หรือ API ได้เหมือนกัน แต่ข้อแตกต่างหลักๆ นอกจาก OpenStack เป็นของฟรี ก็คือ Amazon EC2 เป็นบริการ Public Cloud เท่านั้น ส่วน OpenStack ผู้ใช้สามารถเลือกได้ว่าจะใช้เป็น Private Cloud ของ OpenStack หรือจะสมัคร Public Cloud จากตัวแทนผู้ให้บริการของ OpenStack ก็ได้

ต้องเข้าใจก่อนว่า OpenStack ไม่ใช่ Hypervisor แต่ถูกสร้างเพื่อทำงานร่วมกับ Hypervisor ที่แตกต่างกัน โดย User สามารถเลือกได้ว่าจะ Deploy Hypervisor บนตัวเครื่อง (machine) หรือบน OS ที่ Built-in มากับ Hypervisor เช่น Linux KVM เป็นต้น นอกจากนี้ OpenStack ยังทำให้ User สามารถนำ VM ไปติดตั้งบน Bare-Metal Server (เซิร์ฟเวอร์สำหรับผู้ใช้คนเดียว) ได้อีกด้วย

Component หลักของ OpenStack 

  • Horizon (Dashboard) : เป็น User Interface (UI) แบบ Web-based
  • Nova (Compute) : ประกอบด้วย Controller และ Compute Nodes ที่ดึง VM image มาจาก OpenStack image service และสร้าง VM บนเซิร์ฟเวอร์ที่เราต้องการ โดยมี APIs ที่แตกต่างกันตาม Platforms เช่น XenAPI, VMwareAPI, libvirt for Linux KVM (QEMU), Amazon EC2, และ Microsoft Hyper-V เป็นต้น
  • Neutron (Networking) : สำหรับสร้าง Virtual Network, Network Interface และทำหน้าที่เชื่อมต่อกับ Networking Products จากตัวแทนผู้ให้บริการอื่นๆ
  • Swift (Object storage) : หลักการทำงานเหมือน Amazon S3 โดยจะบันทึกข้อมูลแบบเดี่ยวอย่าง image เก็บไว้โดยใช้ระบบ REST Web service
  • Cinder (Block storage) : คล้ายกับ Swift โดยจะเก็บ disk file ต่างๆ เช่น Log และเปิดให้เพิ่มเติมข้อมูลเข้าไปได้ ในขณะที่ Swift จะให้เก็บแทนที่ของเดิมเท่านั้น
  • Keystone (indentity storage) : เป็นคำสั่งที่เปิดให้ User และ Process สามารถเข้าถึง Tools ต่างๆ ของ OpenStack ได้โดยสร้าง Autentication Token ขึ้นมา
  • Glance (Image service) : เป็นตัวหลักของ OpenStack ในฐานะ Cloud Operating System คือ การสร้าง VM image ขึ้นมา โดย Glance คือแคตตาล็อครวม VM ที่อัพโหลดเอาไว้และเปิดให้ใช้ภายในองค์กร
  • Trove (database server) : เป็นตัวสนับสนุนการทำงานของ Database ที่ต่างกัน

นอกจากนี้ Component ของ OpenStack ยังใช้ MySQL Database ที่หลากหลาย สามารถทำงานร่วมกับ Python รวมทั้งใช้ Command line interface ของ Python ได้อีกด้วย ตัวอย่างเช่น

– คำสั่งดาวน์โหลด Keystone จากเซิร์ฟเวอร์ Linux ที่เก็บข้อมูลแบบ Public :

apt-get install keystone python-keystoneclient

– คำสั่งสร้าง User บน Keystone

keystone user-create –name Sam –description “Sam” :

– คำสั่งลิสต์ชื่อ VM images ด้วย Nova

nova image-list :

– คำสั่งเปิด Python Shell ก็ทำได้ง่ายๆ แค่พิมพ์ Python แล้วตามด้วย :

from keystoneclient.v2_0 import client

ถ้าไม่ถนัด Python CLI (Command Line Interface) จะสลับไปใช้ Dashboard แบบคลิกก็ได้เหมือนกัน

OpenStack ในฐานะแพลตฟอร์มแบบ Open source

Nasa และ Rackspace เป็นผู้เริ่มต้นพัฒนา OpenStack ก่อนจะเปิดเป็น Open Source ให้โปรแกรมเมอร์สามารถนำไปพัฒนาต่อได้ตามต้องการ โดยตรวจสอบ Source code ได้ทาง Github ทั้งนี้พวกโปรแกรมเมอร์ผู้พัฒนาระบบ OpenStack เองก็ทำงานให้กับองค์กรใหญ่ที่นำ OpenStack ไปใช้ด้วยเหมือนกัน เช่น Rackspace และ Paypal เป็นต้น

นอกจากนี้ยังมีโปรเจคเกี่ยวกับ OpenStack อีกหลายโครงการ ส่วนมากจะเป็นโปรเจคเฉพาะด้าน เช่น การติดตั้งแบบ bare-metal ผู้ที่สนใจหรืออยากจะทดลองใช้งาน ทาง OpenStack ก็มี Development Version ให้ลองเล่นกันได้โดยนำไปติดตั้งบน Ubuntu Linux หรือจะใช้ OpenStack Autopilot wizard ในการสั่ง Deploy ก็ได้ ส่วน Source code ไม่จำเป็น เพราะ OpenStack สามารถหาได้จาก Python package โดยใช้ Tools ชื่อ apt-get ในการติดตั้ง