แหล่งความรู้ OpenStack ภาค Networking

หลังจาก blog เรื่องแหล่งความรู้ OpenStack ไป ก็นึกสนุกทำ OpenStack Cheat Sheet ไป 2 เวอร์ชั่น และมีปัญหาจุกจิกกับ Neutron (Quantum) ที่ Lab Cloud Specialist เนื่องจาก Network Architecture ของ Lab ผิดไปจากที่ OpenStack Guid แนะนำไว้ก็เลยทำให้เกิดอาการงงกับ Neutron และปัญหาหนึ่งที่พยายามจะ Debug ก็คือ OpenVSwitch ซึ่งมันก็ดีนะ แต่ Debug งงมาก ก็เลยไปค้นคำถามจาก RedHat OpenStack ได้ข้อมูลที่น่าสนใจดังนี้

  • PackStack All-in-One DIY Configuration อธิบายว่าเกิดอะไรขึ้นกับ OpenVSwitch ในแต่ละขั้นตอนและวิธีการ Debug
  • Networking in too much detail อันนี้อธิบายแต่ละจุดของ Network ในส่วน Instance, Compute Host และ Network Host
  • OpenStack Networking with Neutron on RDO อันนี้เป็น Video อธิบาย้กี่ยวกับ Neutron เครื่องมือในการตรวจสอบและ Debug OpenVSwitch

 

สิ่งที่อยากเล่นใน OpenStack Havana

ผมใช้ Havana ตั้งแต่ช่วงเดือนกันยายนที่ผ่านมา ดึงจาก Trunk ของ OpenStack ทดลองเอง ทำให้รู้สึกได้เลยว่าของเล่นใหม่ใน Havana อย่าง Heat, Trove, Ceilometer น่าสนใจ ก็เลยอยากตั้งเป้าไว้กับการทดลองในอนาคด ดังนี้

  • Heat พร้อม Auto Scaling Stack + Application
  • Live Migration จาก Ceilometer Alert
  • LBaaS ลองบน Havana Dev แล้วยังไม่สะใจ
  • Docker as Hypervisor อันนี้ขาดไม่ได้ อยากรู้ว่าทำ Orchestration ผ่าน Heat ไปยัง Docker ได้ยังไง
  • ใช้ Identity Service จากแหล่งอื่น เช่น Google, Facebook เป็นต้น มาแทน Login ของ Horizon เดิม
  • DNSaaS ใช้ชื่อ vm host มาสร้างเป็น DNS record ให้อัตโนมัติ
  • CPU Entitlement (ยังหาวิธีไม่ได้)

เรื่องอื่นๆ ที่ยังคาใจ

  • Foreman
  • Fuel
  • Juju กับ OpenStack
  • OCCI กับ OpenStack
  • Console on Mobile เหมือนกับ AWS Console on Mobile, Cloud Hub

เอาแค่นี้ก่อนครับ ถ้าว่างและมีเครื่องลองอาจจะได้ทดสอบกัน :)

 

มาคำนวณฮาร์ดแวร์สำหรับ OpenStack กัน

OpenStack เป็น Cloud Management ตัวนึงที่กำลังมาแรง ด้วยโครงสร้างการออกแบบที่ทำงานร่วมกันของแต่ละโมดูลทำให้ OpenStack แตกต่างจาก Cloud Management ตัวอื่นๆ อย่างชัดเจน โครงสร้างของ OpenStack จะต้องมีอย่างน้อย 2 ส่วนหลักๆ ได้แก่

  • Control Node
  • Compute Node

เครื่องมือช่วยคำนวณก็คือ BOM นั่นเอง สำหรับ BOM ตัวนี้พัฒนาจากบริษัทที่รับติดตั้งและพัฒนา OpenStack โดยตรงถือว่าเชื่อถือได้ครับ เครื่องมือใช้งานง่าย มีสิ่งที่ต้องกำหนด ได้แก่

  • อยากได้ Server ค่ายไหน DELL, HP, IBM, Super Micro
  • ระบบที่คุณจะทำสนับสนุน HA มั๊ย (3 Controllers)
  • อยากได้อุปกรณ์ Network ค่ายไหน DELL, Cisco, HP, Arista, Juniper, Brocade
  • ขนาดของ vCPU และ Memory โดยเฉลี่ยในระบบ
  • จำนวน VM ทั้งหมดที่คุณต้องการ
  • เลือกผลลัพท์ได้ว่าจะกรองตามจำนวนเซอร์ฟเวอร์หรือราคาที่ต้องจ่าย

มาดูผลลัพท์ของผมกันบ้าง สิ่งที่ผมต้องการคือ

  • ใช้อุปกรณ์ Server และ Network ของ DELL
  • ไม่มี HA
  • ขนาดของ VM โดยเฉลี่ยคือ 2 vCPU และ RAM ขนาด 1 GB
  • จำนวน VM ที่ต้องการ 4000 VMs

ดูราคากันก่อน (ผมเลือกตัวเลือกแรกเพราะราคาถูกที่สุด)

จากผลลัพธ์เราจะทราบข้อมูลเบื้องต้นในส่วนของฮาร์ดแวร์ทั้งจำนวนและราคา แต่น่าเสียดายที่ไม่มีการคำนวณในส่วน storage สำหรับ Glace, Cinder และ Swift และที่สำคัญไม่มีการคำนวณในส่วนของ Neutron ด้วย สำหรับท่านที่อยากทดลอง เข้าไปลองคำนวณกันได้ที่ Mirantis Hardware Bill of Materials Calculator for OpenStack

 

แหล่งความรู้ OpenStack

ผมได้กลับมายุ่งเรื่อง Cloud อีกครั้งแต่ก็ไม่ได้อยากยุ่งสักเท่าไร อุตส่าห์หนีออกไปได้เกือบ 2 ปีแล้ว แต่มันก็วนกลับมาหาผมทุกครั้ง เอาเป็นว่าอัพเดทกันสักหน่อยกับแหล่งความรู้ OpenStack

ถ้านึกออกจะมาเพิ่มให้อีกที T_T

ติดตั้ง OpenStack แบบง่ายๆ กัน

ผมได้มีโอกาสไปเรียน Cloud Computing Specialist ทำให้ผมพบว่า การติดตั้ง OpenStack มันยุ่งจัง ยิ่ง service ของ OpenStack ยิ่งมากขึ้น ก็ต้อง config มากขึ้น อืมมม จริงๆ ก็ไม่ใช่เรื่องแปลกอะไรอ่ะนะ แต่สำหรับคนที่ต้องการสนองความอยากรู้อย่างผม เจ้าหมี Grizzly ก็เล่นเอาถอดใจเหมือนกัน วันนี้็เลยอยากมาแนะนำวิธีการติดตั้งแบบง่ายๆ สำหรับคนที่อยากรู้ว่า OpenStack เป็นยังไงเพื่อจะได้ทดลองเล่นได้ ก่อนจะถึงขั้นตอนติดตั้ง ต้องแนะนำสักหน่อยว่า OpenStack เป็น Cloud Management Platform ประกอบไปด้วย service ที่ทำหน้าที่แตกต่างกัน ดังนี้

  1. Nova ทำหน้าที่จัดการส่วน Compute และ Orchestration อะไรที่ต้องยุ่งกับ VM ก็ดูตัวนี้
  2. Glance ทำหน้าที่เป็นตัวจัดการ Image Respository ของ VM ที่เราจะเอามาใช้งาน
  3. Cinder ทำหน้าที่เป็นตัวจัดการ Block Storage เอาไว้แปะกับ VM เพิ่ม Disk และเก็บข้อมูล
  4. Keystone ทำหน้าที่เป็น Identity Management และ Tenant ให้กับระบบ
  5. Swift ทำหน้าที่เป็น Object Storage เก็บไฟล์ หรือทำ Archive Block Storage ได้
  6. Neutron ทำหน้าที่เป็น Network Sevice จัดการเรื่อง Virtual Switch/Router/Network ได้
  7. Ceilometer ทำหน้าที่เป็น Meter วัดการใช้งาน resources ไม่ว่าจะเป็น CPU, Memory, Storage และ Network ได้
  8. Heat ทำหน้าที่เป็น Orchestration Tools โดยเตรียม Config ต่างๆ ไว้เป็น Template ใช้ในการ Deploy App ได้ง่ายๆ อันนี้ลอกมาจาก Cloud Formation ของ Amazon AWS
  9. Horizon เป็น Dashboard ทำงานผ่านเว็บ ช่วยให้เราไม่ต้องใช้ Command Line เยอะจนเกินไป

สำหรับผู้ที่อยากลองเล่น OpenStack มี 3 ช่องทางให้เลือก คือ

  1. ติดตั้งเอง
  2. ลองเล่นจาก TryStack
  3. ลองเล่นจาก Cloud Provider อย่าง Rackspace, HP Cloud เป็นต้น

สำหรับผู้ที่อยากติดตั้งเองมีอีก 3 ช่องทางให้เลือก

  1. ติดตั้งจาก Package ที่ Linux Distribution มีให้แล้ว Config ทีละ Service ไปเรื่อยๆ Config เหนื่อย ถ้าขยันก็อาจเลือกวิธีนี้ได้ :)
  2. ติดตั้งจากเครื่องมือ DevOps อย่าง เช่น Chef, Puppet, Juju, Crowbar, Foreman เป็นต้น
  3. ติดตั้งจากเครื่องมือสำหรับนักพัฒนาอย่าง DevStack วิธีนี้เหมาะสำหรับ คนที่อยากรู้เฉยๆ restart เครื่องแล้ว service หายนะจ๊ะ

เยอะไปหรือเปล่า T_T เอาเป็นว่าผมเลือกวิธีง่ายๆ และสามารถเอาไปลองเล่นได้นานๆ วิธีที่ว่าคือ การติดตั้งผ่านเครื่องมือ DevOps ซึ่ง RedHat ได้เลือกใช้ Puppet มาเป็นเครื่องมือสำหรับการติดตั้ง OpenStack บน RedHat Enterprise Linux, Fedora 19+ และ CentOS มาดูวิธีการติดตั้งกัน สิ่งที่ต้องมี ได้แก่

  1. RedHat Enterprise Linux 6 Mini หรือ CentOS 6.4 Mini ก็ได้
  2. เครื่องคอมพิวเตอร์ที่มี CPU 2 Cores, RAM 2GB, HDD 160GB เป็นอย่างต่ำ มีสัก 2 เครื่อง ต่อ LAN และออกเน็ตได้

โดย LAN เป็น Network 192.168.0/24 เครื่อง Controller มี IP เป็น 192.168.0.10 เครื่อง Node 1 มี IP เป็น 192.168.0.11

เริ่มจาก Cluster Controller (All in One)

ติดตั้ง CentOS 6.4 Mini ให้เรียบร้อย จากนั้นติดตั้ง RedHat OpenStack Repository ดังนี้

sudo yum install -y http://rdo.fedorapeople.org/openstack-grizzly/rdo-release-grizzly.rpm

จากนั้นติดตั้ง PackStack เครื่องมือที่ใช้ติดตั้ง OpenStack

sudo yum install -y openstack-packstack

เพื่อความแน่ใจ reboot เครื่อง 1 รอบ ให้ Kernel ใหม่ทำงาน จากนั้นก็ ติดตั้ง OpenStack ได้เลยโดยใช้คำสั่ง

packstack --allinone --os-quantum-install=n

รอจนกว่าการติดตั้งจะเสร็จ ตัวติดตั้งจะแจ้งว่าเข้าใช้งาน Dashboard ได้จาก URL อะไร และ Username, Password อะไร

สำหรับเครื่อง Node ทำแบบเครื่อง Controller ติดตั้ง packstack จากนั้น copy file packstack-answer-XXXXXX-XXXX.txt มาไว้ที่เครื่อง Node แก้ไขไฟล์นี้ในส่วน CONFIG_NOVA_COMPUTE_PRIVIFCONFIG_NOVA_NETWORK_PRIVIF จาก lo เป็น eth0 , CONFIG_NOVA_COMPUTE_HOSTS เป็น IP ของเครื่อง Node คือ 192.168.0.11 แก้ CONFIG_NOVA_NETWORK_FLOATRANGE จาก 10.3.4.0/22 เป็น 192.168.0.128/26 จากนั้นสั่งติดตั้งตาม answer file ดังนี้

packstack --answer-file=packstack-answer-XXXXXX-XXXX.txt

หลังจากการติดตั้งเสร็จ มาลอง Service กันหน่อย ใช้คำสั่ง

source keystone_admin

เพื่อเปิด console และตั้งค่า Environment ให้เครื่องมือบน Command Line จากนั้นใช้คำสั่ง

nova-manage service list

เพื่อดูว่า service ทั้งหมดทำงาน หรือใครอยากจะทดสอบ เป็นราย service โดยการ list ข้อมูลออกมาก็ได้ เช่น nova listglance indexcinder list เป็นต้น ถ้าลองแล้วไม่มี Error ก็ถือว่าใช้ได้ ลืมบอกไปว่าถ้าจะทำให้ VM ที่สร้างขึ้นมา ต่อกับโลกภายนอกได้ ต้องตั้ง Floating IP แต่ PackStack กำหนดค่าให้เราสำเร็จ ซึ่งเป็นค่าที่ผิด T_T ต้องมาแก้กันก่อน โดยลบของเก่าออกก่อน

nova floating-ip-bulk-delete 10.3.4.0/22

และเพิ่ม Floating IP ที่ถูกต้องลงไป

nova floating-ip-bulk-create 192.168.0.128/26

จากนั้นสร้าง SSH Key สำหรับใช้งานกัน :)

nova keypair-add mykey > mykey.pem

ดาวน์โหลด VM Image สมมติว่าเป็น Ubuntu ละกัน

wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img

และลงทะเบียนเข้าไปใน Glance ดังนี้

glance image-create --name 'precise' --disk-format qcow2 --container-format bare --is-public true < precise-server-cloudimg-amd64-disk1.img

กำหนด security group ให้ ssh และ ping ได้

nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

nova secgroup-add-rule default tcp 22 22 0.0.0.0/0

เมื่อมีของครบแล้วก็เริ่ม start vm กันได้ โดยใช้คำสั่ง

nova image-list

ดูว่า precise image id เป็นเท่าไร จากนั้นสั่ง boot ด้วยคำสั่ง

nova boot --image <image-id> --key-name mykey --flavor m1.small --security-groups default myprecise

ใช้คำสั่ง nova list ก็จะพบว่า vm ชื่อ myprecise กำลังเริ่ม start แล้ว เมื่อเข้าสู่สถานะ running ก็สามารถ ssh เข้าไปได้ อ้อ ก่อนอื่นกำหนด Floating IP ให้ VM เสียก่อน โดยใช้คำสั่ง

nova add-floating-ip myprecise 192.168.0.129

ใช้คำสั่ง nova list ดูว่า floating ip ไปเกาะกับ vm ของเราหรือยัง ถ้าเกาะเรียบร้อยแล้วก็สามารถ ssh เข้าไปได้โดยใช้คำสั่ง

ssh -i mykey.pem ubuntu@192.168.0.129

เอาแค่นี้ก่อน คุณสามารถใช้งาน OpenStack จาก Dashboard ได้นะครับ

สำหรับใครที่อยากใช้ OpenStack แบบจริงๆ จังๆ หรือต้องการทำ Private Cloud ใช้ในองค์กร แนะนำให้ไปเรียนกับ ClusterKit หรือ อ.อาณัติ หรือ ซื้อบริการ RedHat OpenStack, Ubuntu OpenStack ได้จากตัวแทนจำหน่ายใกล้บ้านท่านครับ :)

 

OpenStack Cheat Sheet

ผมได้กลับมาใช้ OpenStack อีกรอบ หลังจากที่เคยใช้รุ่น Essex เป็นรุ่นที่ Horizon เพิ่งเสร็จใหม่ๆ ก่อนหน้านี้ก็ใช้ command line มาตลอดจำได้เพราะใช้บ่อย ผ่านไปเกือบ 2 ปีกลับมาใช้รุ่น Grizzly ที่เคยใช้คำสั่งใน command line ได้ก็ลืมหมด ก็เลยคิดว่าทำ Cheat Sheet ไว้สักหน่อยน่าจะดี ผมก็เลยถือโอกาส แชร์เอาไว้ให้ได้ดาวน์โหลดไปแปะข้างฝาละกันนะครับ สำหรับท่านที่สนใจร่วมทำ Cheat Sheet ก็ขอ Share เอกสารผ่าน Google Drive ได้ครับ

Auto Scaling บน OpenStack โดยใช้ Heat

อันนี้เป็นวิดีโอแนะนำ  ​Heat ซึ่งน่าสนใจมาก เรียกได้ว่าถ้า Heat stable รับรองว่าการใช้งาน OpenStack จะสนุกมากขึ้น เพราะสามารถทำ Auto Scaling ได้แล้ว

รอ Havana release อย่างใจจดใจจ่อ :)

สร้าง OpenSUSE service image สำหรับ OpenStack

บังเอิญได้มีโอกาสเล่น OpenStack ผ่าน Community Cloud เลยได้ลองทำ Services Image สำหรับ OpenStack ดูบ้าง ซึ่งวิธีการไม่แตกต่างจากการทำ Image สำหรับ Eucalyptus สักเท่าไร หลักการทำมีดังนี้

  • สร้าง Image แบบ qcow2 เพื่อใช้เป็น Disk Image
  • ใช้ kvm ติดตั้ง OpenSUSE ลงใน Disk Image
  • ปรับแต่ง Disk Image เพื่อติดตั้ง ssh key

มาลงมือกันเลยครับ เริ่มจากสร้าง Disk Image ให้พอสำหรับติดตั้ง OpenSUSE

kvm-img create -f qcow2 opensuse.img 5G

จากนั้นก็ติดตั้ง OpenSUSE ลงไปใน Disk Image

kvm -m 512 -cdrom openSUSE-11.4-DVD-x86_64.iso -drive file=opensuse.img,if=virtio,index=0 -boot d -net nic -net user -nographic -vnc :1

ใช้ VNC ต่อไปยัง VM ที่เรา run ดังนี้

vncviewer 10.10.10.1 :1

เลือกติดตั้ง SSH Server, CURL และ package ที่ต้องการ หลังจากติดตั้งเสร็จให้ shutdown VM และ boot เพื่อปรับแต่งดังนี้

kvm -m 512 -drive file=opensuse.img,if=virtio,index=0,boot=on -boot c -net nic -net user -nographic -vnc :1

ให้ VNC เชื่อมต่อเหมือนเดิม ใช้ zypper ติดตั้ง openssh, curl ดังนี้

zypper install openssh curl

เพิ่ม ssh key อัตโนมัติเมื่อ start instance ให้สร้างไฟล์ /etc/init.d/sshkey แล้วใส่ config ลงไปดังนี้

echo >> /root/.ssh/authorized_keys
curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
echo "AUTHORIZED_KEYS:"
echo "************************"
cat /root/.ssh/authorized_keys
echo "************************"

เปลี่ยน permission ให้ execute ได้ดังนี้

chmod 755 /etc/init.d/sshkey

จากนั้น config ให้เริ่มทำงานทุกครั้งเมื่อ boot เครื่องดังนี้

chkconfig sshkey on

ตั้งค่า firewall ให้ ssh เข้ามาได้ ใช้ yast2 ไม่ใช่ iptable นะจ๊ะ

yast2

จากนั้นลบ network persistance rules ออก เพื่อให้ instance จัดการ network insterface ได้ถูกต้อง

rm -rf /etc/udev/rules.d/70-persistent-net.rules

เท่านี้ก็เรียบร้อยแล้ว :) shutdown VM แล้ว?หากต้องการใช้งานก็ Upload Image ไปยัง OpenStack ได้เลย โดยใช้คำสั่ง

cloud-publish-image amd64 opensuse.img opensusebucket

หลังจาก Upload Image เสร็จเรียบร้อยแล้ว เราจะได้หมายเลข ami กับไฟล์ image manifest ดังนี้

ami-00000001 opensusebucket/opensuse.img.manifest.xml

หากต้องการ start instance ก็สามารถสั่ง run ได้เลย โดยใช้คำสั่ง

euca-run-instances ami-00000001 -k mykey -t m1.tiny

สำหรับการทำ Service Image จาก Linux Distribution อื่นๆ ก็ใช้วิธีการคล้ายๆ กันนี้ครับ