Container Orchestration

ทั้ง Container และ OpenStack ต่างก็เป็นเทคโนโลยีสุดฮอตในระบบ Cloud แต่รู้หรือไม่ว่า Container Orchestration Tool ตัวไหนบ้างที่สามารถนำมาใช้งานร่วมกับ Open Source Cloud Platform อย่าง OpenStack ได้? มาหาคำตอบกันที่บทความนี้ได้เลย

องค์กรทั้งหลายมักใช้ Container Orchestration Tool (หรือบางครั้งก็เรียกว่า Container Orchestration Engine) ในการ Deploy, Scale, และ เชื่อมต่อส่วนประกอบต่างๆ ของ Container Technology เข้าด้วยกัน ซึ่ง Orchestration Tool นี้ช่วยให้องค์กรสามารถ Monitor พวก Container Instance เพื่อลดจำนวน Container ที่กระจายตัวอยู่ในระบบได้อีกด้วย

OpenStack Magnum Module ที่เป็นบริการ OpenStack API สำหรับ Container นั้นรองรับ 3 Container Orchestration Engine หลักๆ คือ Docker, Google Kubernetes, และ Apache Mesos

Docker เป็นหนึ่งใน Orchestration Engine ที่ได้รับความนิยมและเป็นที่รู้จักมากที่สุด Docker ทำให้ Developer สามารถ  Package และ Deploy ทั้ง Application ตลอดจนสิ่งที่ Application ต้องใช้ได้ภายในหนึ่ง Image ที่รันบนระบบของ Linux ทั้งนี้ Docker ก็มี Tool ของตัวเอง เช่น Docker Machine สำหรับสร้าง Docker Host, Docker Compose สำหรับรวบรวม Application ซับซ้อนทั้งหลายที่กระจายตัวอยู่, และ Docker Swarm สำหรับรองรับ Container Cluster ให้มีระบบ Computing ที่ยืดหยุ่นและ Scale การใช้งานได้

Google Kubernetes เป็น Container Orchestration Engine แบบ Open Source ที่รองรับการงานร่วมกับ Docker Container โดย Kubernetes นี้จะ Deploy และจัดการ Container อยู่ภายใน Compute Cluster ทั้งยังทำ Workload Balancing เพื่อคงไว้ซึ่งศักยภาพการทำงาน

Apache Mesos ก็เป็นอีกหนึ่ง Orchestration Engine แบบ Open Source ที่เน้นด้านความคงทนต่อความเสียหาย (Fault-Tolerant), Compute Cluster ขนาดใหญ่, และการรองรับ Node จำนวนนับหมื่นที่รัน Docker Container นอกจากนี้ Mesos ยังรองรับคอนเซ็ปต์ของ Jobs And Tasks รวมทั้งสภาพแวดล้อม Container ที่เปลี่ยนแปลงอยู่ตลอดและมีความสามารถการ Scale สูง ซึ่งองค์กรมักจะใช้งาน Mesos กับ Job System อย่าง Marathon สำหรับรัน Jobs และ Tasks

ผู้ใช้งาน OpenStack สามารถเลือกใช้อย่างไหนก็ได้จาก 3 Orchestration Tool นี้ โดย Engine ที่เลือกใช้จะถูก Provision อัติโนมัติไปยัง Host System ที่มี Container Deploy อยู่ทันที

OpenStack Liberty

OpenStack Liberty เวอร์ชั่นปัจจุบัน เวอร์ชั่น 12 ของ Open Source Software เพื่อสร้าง Public, Private และ Hybrid Cloud ด้วยนวัตกรรมใหม่ และเพิ่มเติมการทำงานที่ครอบคลุมเทคโนโลยี Data Center ที่ทำให้ OpenStack กลายเป็น Integration Engine ยอดนิยมสำหรับผู้ให้บริการ Cloud และกลุ่มองค์กรที่กำลังใช้งาน Cloud อยู่ตอนนี้

 

จากการสนับสนุนของผู้พัฒนาอิสระกว่า 1,933 คน และจากอีก 164 องค์กรใหญ่ ทำให้ OpenStack Liberty มีระบบควบคุมการทำงานที่ละเอียดและเหนือชั้นยิ่งกว่าเดิม อีกทั้งเพิ่มประสิทธิภาพสำหรับการ Deployment ขนาดใหญ่ และมี Tools รองรับการจัดการ Container ใน Production Environment อีกด้วย

 

Feature ใหม่ของ Liberty

ระบบการจัดการประสิทธิภาพสูง

หลายคนต้องการให้มีระบบการตั้งค่าที่ดีขึ้น และระบบ Library ร่วม (Common library adoption) ตอนนี้ OpenStack 12 ถูกพัฒนาแล้ว นอกจากนี้ยังมีการเพิ่ม Role-Based Access Control (RBAC) เพื่อใช้งานร่วมกับ Heat orchestration และ Neutron networking รวมทั้งเปิดให้ปรับ Security Setting อย่างเต็มรูปแบบอีกด้วย

ระบบปรับแต่งเรียบง่าย

OpenStack ได้รับการตอบรับอย่างดี เป็นที่นิยมในการใช้ระบบสร้าง Cloud ทั้ง Public และ Private อย่างแพร่หลาย เหล่า User จึงการต้องการรองรับ Deployment ขนาดใหญ่ ซึ่งใน Liberty ได้มีการพัฒนาด้านประสิทธิภาพการแสดงผล และมีความเถียรมากขึ้น ติดตั้ง Application Nova Cells v2 ในตัว สามารถรองรับการ Deployment ขนาดใหญ่ และการ Deployment พร้อมกันในหลายพื้นที่ (Multi-location compute deployment) ยังเพิ่มศักยภาพการปรับแต่ง (Scalability) และการทำงานของ Horizon dashboard, Neutron networking, และ Cinder block storage

รองรับเทคโนโลยีใหม่ๆ

OpenStack เป็น Open Source Platform เดียวที่รองรับการจัดการ 3 เทคโนโลยีหลักๆ ของระบบ Cloud ทั้ง Virtual Machine, Container และ Bare Metal Instance ทั้งยังเป็นที่นิยมในการใช้งานร่วมกับระบบ NFV (network functions virtualization) ขององค์กร โดย OpenStack Liberty ได้เพิ่มศักยภาพการทำงานทั้งสองด้าน ด้วยฟีเจอร์ตัวใหม่ อย่าง Nova compute scheduler, QoS Framework และระบบ LBaaS (Load Balancing as a Service) ที่ดียิ่งกว่าเดิม

ระบบจัดการ Container ตัวใหม่

ในระหว่างการพัฒนา Liberty ระบบ Magnum Container ระบบจัดการ Container ตัวใหม่ที่รองรับการทำงานร่วมกับ Kubernetes, Mesos และ Docker Swarm ก็ได้เปิดตัวขึ้น และเมื่อนำ Magnum มาใช้ร่วมกับบริการที่มีอยู่เดิมของ OpenStack อย่าง Nova, Ironic, และ Neutron จะช่วยให้จัดการ Container ได้ง่ายกว่าเดิม นอกจากนี้ยังมีโปรเจกต์ Kuryr ซึ่งถูกวางแผนให้เข้ามาเสริมประสิทธิภาพ โดยทำงานกับส่วนของ Container networking อย่าง libnetwork ได้โดยตรง

Orchestration

Heat Orchestration ได้เพิ่มระบบจัดการทรัพยากรใหม่เข้าไปมากมาย รวมทั้งระบบอัตโนมัติ และการรองรับความสามารถใหม่ๆ ของ Liberty เพิ่มความสามารถการจัดการและการ Scale ซึ่งรวมด้านการเข้าถึง API เพื่อเช็คว่ามี Resource หรือ Action ไหนพร้อมใช้งานได้บ้าง โดยทั้งหมดนี้มาพร้อมกับ RBAC ติดตั้งในตัว

 

รู้จัก 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 แบบคลิกก็ได้เหมือนกัน

Cloud Computing เทคโนโลยีสมัยใหม่แห่งอนาคต

Cloud คือเทคโนโลยีที่เริ่มต้นมาจากการทำ Virtualization ซึ่งถูกพัฒนาขึ้นจนให้ผู้ใช้งานสามารถให้บริการตัวเองได้ บริการคลาวด์ไม่ใช่เพียงแค่พื้นที่ฝากไฟล์ไว้บนอินเทอร์เน็ต แต่ครอบคลุมถึงการให้ใช้กำลังในการประมวลผล หน่วยความจำ และพื้นที่การจัดเก็บข้อมูล คลาวด์ช่วยลดต้นทุน ประหยัดเวลา และยังเพิ่มพื้นที่ในการจัดเก็บข้อมูลได้มากขึ้น โดยมีบริการคลาวน์ 3 รูปแบบใหญ่ๆ ดังนี้

1.Software as a Service (SaaS) เป็นการให้บริการคลาวด์ด้านซอฟต์แวร์หรือแอพพลิเคชั่น ผ่านทางอินเทอร์เน็ต ช่วยทำให้ประหยัดค่าใช้จ่าย ไม่ต้องเสียเงินจ้างทำระบบคอมพิวเตอร์ สามารถใช้ได้ทุกพื้นที่ไม่จำกัด ยกตัวอย่างที่เห็นได้ชัดที่เราใช้เป็นประจำ เช่น Gmail Google Docs หรือ Google app โดยการใช้งานไม่จำเป็นต้องติดตั้งซอฟต์แวร์ลงบนเครื่อง สามารถใช้งานผ่าน Cloud ได้เลย สามารถทำที่ไหนหรือใช้คอมพิวเตอร์เครื่องไหนก็ได้ หรือสามารถแชร์งานกับเพื่อนๆ ได้

2.Platform as a Service (PaaS) การให้บริการด้าน Platform การบริการจะมีการเตรียมข้อมูลเพื่อพัฒนา Software และ Application เอาไว้ให้เรียบร้อย สามารถไปใช้ได้เลย ช่วยลดต้นทุนและประหยัดเวลาที่ใช้ในการพัฒนาซอฟท์แวร์ เช่น Google App Engine, Web Application, Snapchat เป็นต้น

3.Infrastructure as a Service (IaaS) การให้บริการโครงสร้างพื้นฐานด้านไอที ( Infrastructure) และระบบการจัดเก็บข้อมูลขององค์กร (Storage) เพื่อรองรับการใช้งาน Software และ Application เช่น บริการ Cloud storage อย่าง DropBox ซึ่งให้บริการพื้นที่เก็บข้อมูล

ดังนั้นในปัจจุบันผู้คนจึงนิยมเก็บข้อมูลไว้บนคลาวด์อย่างแพร่หลาย ระบบคลาวด์ถูกออกแบบมาให้รองรับการขยายตัวของระบบได้ง่าย เพื่อรองรับปริมาณและความต้องการของผู้รับบริการคลาวด์ ด้วยความสะดวกรวดเร็ว และสามารถเก็บข้อมูลได้เป็นจำนวนมาก เราสามารถเข้าถึงข้อมูลได้ทุกที่ทุกเวลาทุกอุปกรณ์ผ่านเครือข่ายอินเทอร์เน็ต หมดกังวลเรื่องข้อมูลจะหาย นอกจากนี้ยังประหยัดค่าใช้จ่ายไม่จำเป็นต้องซื้อแฟลชไดร์ฟหรือ Memory Card ที่สำคัญปลอดภัยจากไวรัสแน่นอน