รู้จัก OpenStack แบบง่ายๆ ก่อนเริ่มใช้ Cloud

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

What’s OpenStack?

OpenStack เริ่มต้นมาจากการองค์การบริหารการบินและอวกาศแห่งชาติ (NASA) ร่วมกับ Rackspace บริจาคโค้ด (Code) ของระบบ Cloud ที่ตนเองมีอยู่ให้เป็น Open Source ปัจจุบันได้รับการยอมรับอย่างกว้างขวางจากกว่า 250 องค์กรใน 130 ประเทศทั่วโลก

เว็บไซต์ OpenStack.org ได้ให้ความหมายของคำว่า “OpenStack” ไว้ว่า “OpenStack software controls large pools of compute, storage, and networking resources throughout a datacenter, managed through a dashboard or via the OpenStack API. OpenStack works with popular enterprise and open source technologies making it ideal for heterogeneous infrastructure” (เป็นโปรแกรมควบคุมชุดคำสั่งคอมพิวเตอร์, Computer Networking และพื้นที่เก็บไฟล์ขนาดใหญ่ที่อยู่ภายใน Data Center โดยควบคุมผ่านทาง Dashboard หรือ OpenStack API ได้รับความนิยมในหมู่ผู้ประกอบการและระบบ Open source ด้วยกัน ซึ่งนั่นส่งผลให้ OpenStack เป็นโปรแกรมที่เหมาะกับ Infrastructure ขนาดใหญ่ที่สุดในขณะนี้)

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

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

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

รู้จัก 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 (Identity storage) : เป็นตัวคำสั่งที่เปิดให้ User และ Process สามารถเข้าถึง Tools ต่างๆ ของ OpenStack ได้โดยสร้าง Authentication 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 แบบคลิกก็ได้เหมือนกัน