สืบเนื่องจากโครงการจัดเตรียมโครงสร้างพื้นฐานเพื่อการบริการ ERP บนกลุ่มเมฆของฝ่ายโอเพนซอร์ส SiPA จากที่ได้เปิดประมูลไปเมื่อหลานเดือนที่แล้ว ปรากฏว่าไม่มีใครกล้ามาประมูล ทั้งๆ ที่งบประมาณภายใต้โครงการนี้มีเกือบ 2 ล้านบาท โครงการแนวนี้ความเสี่ยงอยู่บ้างระดับหนึ่ง แต่เครื่อง Server และ Storage ใช้ของ ThaiGrid ผมคิดว่าก็น่าจะทุ่นแรงอยู่ในระดับหนึ่ง แต่ก็ยังไม่ค่อยเข้าใจว่าทำไมไม่มีใครมาประมูล เอาเป็นว่าโครงการมันก็นิ่งๆ งงๆ ผมมองว่า Cloud Computing เป็นเรื่องใหม่สำหรับผู้ประกอบการในประเทศ อีกอย่างการพัฒนาซอฟต์แวร์เพื่อใช้ในงาน Appliance หรือ Virtual Appliance ในบ้านเรามีน้อย ทำให้การมองภาพการพัฒนาซอฟต์แวร์เพื่อทำงานบน Cloud หรือทำผลิตภัณฑ์และบริการบน Cloud ได้ลำบากมากขึ้น ซึ่งคนที่จะเข้าใจเรื่อง Cloud ต้องผ่านยุค ผ่านเทคโนโลยีตามวิวัฒนาการของมันมาเรื่อยๆ จึงจะเข้าใจ

โดยทั่วไปผู้เชี่ยวชาญเขาก็จะบอกว่า Cloud Computing หากแบ่งตามการบริการ (Services) จะแบ่งได้คร่าวๆ เป็น Iaas, PaaS, SaaS ซึ่งแบ่งหยาบๆ หลายคนอาจเริ่มที่ SaaS เพราะทำเงินได้เร็วหากใครถนัดเรื่อง Virtual Appliance อยู่แล้วสามารถเริ่มต้นได้เลย โดยการพัฒนาสิ่งที่มีอยู่ใช้สามารถใช้ resource บน Cloud ให้ได้เต็มที่ อีกคนอาจเริ่มที่ PaaS เพราะทุกคนต้องการที่ Deploy Application และการจัดการเรื่อง Application Server ที่ดี อีกคนทุนหนาหน่อยอาจให้บริการ IaaS อย่าง AWS เป็นต้น ซึ่ง Technology บน Cloud Computing ฝั่ง IaaS คือเทคโนโลยี Virtualization เป็นหลัก แต่ Virtualization ไม่ใช่ Cloud Computing นะครับ อย่าเข้าใจผิด Cloud Computing ยังมีการกำหนดนิยามโดยใช้คุณลักษณะอีกหลายข้อซึ่งส่วนใหญ่เน้นที่ Elastic Computing, Automation, Self Services เป็นต้น ใครสนใจก็ไปตามอ่านที่ Cloud Computing Use Cases ได้

โครงการ ONE Console เป็นการพัฒนา Cloud Management Console เข้าไปครอบ Cloud Infra อีกต่อหนึ่งเพื่อสร้างส่วนติดต่อกับผู้ใช้ให้ใช้งานได้ง่ายขึ้น ไม่ต้องจิ้ม command line ฯลฯ ดังนั้นผู้ใช้มีหน้าที่เลือกบริการที่ต้องการแล้วสั่งสร้าง instance (deploy vm) ซึ่ง VM จะถูกสร้างที่ไหนก็ขึ้นอยู่กับว่า Cloud Infra เลือก Node ไหนเป็นตัวประมวลผล และ Storage ตัวไหนเป็นตัวเก็บข้อมูล ซึ่งผู้ใช้ไม่จำเป็นต้องรู้ ผู้ใช้จะรู้แค่เพียงว่าจะเปิด ปิด VM อย่างไร และจะสร้าง instance ใหม่ได้อย่างไรเท่านั้น ส่วนที่เหลือ Cloud Infa จะเป็นตัวจัดการให้ ซึ่ง Cloud Management Console ที่เคยได้ลองใช้มามักจะมีลูกเล่นแตกต่างกันไป ขึ้นอยู่กับการบริการของ Cloud Provider นั้นๆ คงจะอ้างอิงเป็นมาตรฐานอะไรไม่ได้ แต่บริการที่เปิดให้ผู้ใช้งาน/สมาชิกได้ใช้งานได้คือ Automation และ Self Services เป็นหลัก คือเมื่อคุณจ่ายตังค์คุณมีสิทธิจัดการทุกอย่างตามจำนวนที่ตังค์ของคุณจ่ายมา :) ดังนั้น ONE Console จะอิงการพัฒนาเพื่อตอบสนองการใช้งานในลักษณะนี้ สำหรับส่วนผู้ดูแลระบบ ก็คงทำงานผ่าน Command Line เป็นหลัก :P? สำหรับโครงการ ONE Console น่าจะเสร็จในอีก 2-3 เดือนข้างหน้า ตอนนี้ผมไม่มีเครื่องที่จะใช้ทดสอบในรูปแบบ Cluster ซึ่งต้องใช้เครื่องประมาณ 4 เครื่องสำหรับการพัฒนาและทดสอบซึ่งก็คงต้องทดสอบแบบแห้งๆ แก้เซ็งไปก่อน :) โครงการนี้ก็คงทำเรื่อยๆ ไม่เร่งรีบอะไร หาก Provider รายไหนสนใจจะสมทบทุนเป็นเครื่อง Server, Share Storage เพื่อใช้ในการพัฒนาผมก็ยินดีครับ อ้อ หาคนมาช่วยผมเขียนด้วยก็จะดีมากๆ เขียน App คนเดียวไม่สนุกครับ :)

มะระเขียน blog เรื่องตกงาน ผมเองก็มีความตั้งใจที่อยากจะเขียนว่าทำงานที่ SiPA แล้วได้อะไร ก่อนที่จะตกงาน :P? แต่ไม่ได้เขียนสักที เพราะมัวแต่ยุ่งเรื่องการพัฒนา ONE Console อยู่ ผมทำงานกับ SiPA เกือบๆ 3 ปี โดยความตั้งใจต้องการเข้ามาทำในส่วนโครงการพัฒนาศักยภาพของผู้ประกอบการในโครงการ National Software Repository ซึ่งโครงการนี้จะให้บริการเครื่องมือในการพัฒนาซอฟต์แวร์ครบวงจร ตั้งแต่เว็บโครงการ, Version Control, Wiki, File Release System ซึ่งตอนนั้นผมมองว่าโครงการนี้เจ๋งมาก เป็นโอกาสที่เราจะถ่ายทอดการพัฒนาซอฟต์แวร์โดยใช้ Open Source Development Model ผู้ประกอบการจะได้เข้าใจและสามารถสร้างธุรกิจและบริการบนซอฟต์แวร์ต้นน้ำ แต่โครงการนี้โดนยุบกลางอากาศ ซึ่งโชคยังดีที่ใช้งบโครงการอื่นในการจ้างเข้ามาทำงาน ก็เลยได้ทำงานอยู่ที่ SiPA ต่อ แทนที่จะเข้ามาทำงานได้แค่ 2 เดือนแล้วไปเพราะโครงการโดนยุบ อ้อลืมบอกไปว่าผมเข้ามาทำหน้าที่ Senior Software Engineer ในฝ่ายโอเพนซอร์ส หลังจากที่งงๆ ว่าจะต้องอยู่ต่อหรือไม่ ก็มีโครงการ Chantra เข้ามาให้ดู (Chantra 3.1) และงานเขียนบน ThaiOpenSource.org ซึ่งงานเขียนของผมออกจะ Hard Core สักหน่อย ในตอนแรกๆ ก็ไม่ค่อยเข้าใจว่า Hard Core ยังไง พอย้ายงานเขียนเก่าๆ มาที่ Blog นี้ ก็เข้าใจว่า Hard Core จริงๆ ด้วย :P นอกจากงานพัฒนาชุดซอฟต์แวร์ Chantra และงานเขียนบน ThaiOpenSource.org แล้วยังมี งานออกบูธ งานวิทยากร และ งานอื่นๆ ช่วงที่เข้ามาทำงานที่ SiPA ผมพยายามเอาประสบการณ์ที่มีอยู่ถ่ายทอดให้คนอื่นๆ เท่าที่สามารถจะทำได้ผ่านช่องทางที่มี Continue reading

ปัญหามีอยู่ว่า ผมมีเครื่องโหนด สำหรับสร้าง Virtual Machine จำนวน 400 เครื่อง และ DNS Record ใหม่จะต้องถูกสร้างเมื่อมีการสร้าง VM และ Start VMs เรียบร้อยแล้ว Sub Domain (Public DNS) ที่ได้ ลูกค้าสามารถนำ Public DNS นี้ไปใช้งานโดยการชี้ Record CNAME มายังเครื่อง VMs การสร้าง DNS Record ในลักษณะนี้ทำได้หลายวิธี ตั้งแต่การจัดการด้วยมือ, Script, Monitoring Script, myDNS ซึ่งแล้วแต่ละเลือกใช้ ซึ่งในแต่ละวิธีก็ใช้พลังภายในเยอะพอสมควร ผมมีวิธีง่ายๆ ในการสร้าง DNS Record โดยใช้ Generate Directive กันครับ จากตัวอย่าง VMs ทั้งหมดจะได้ IP Address จากการกำหนดจาก Virtual Network ซึ่งส่วนใหญ่เป็น Range IP ทั้ง Public IP และ Private IP (มีการ์ด 2 ใบ ที่เครื่องโหนด) ดังนั้น เราสามารถสร้าง DNS Zone ที่กำหนด Private และ Public IP ได้ แต่ Record ต้องไล่ใส่ลงไปตาม Range IP ที่กำหนด ได้ใน Virtual Network ซึ่งถ้าจะใส่ให้ครบทุก IP ก็คงมือหงิกกันเลยทีเดียว

Bind9 มี Generate Directive ที่เราสามารถใช้งานได้ โดยกำหนด Rage ของ IP Address และรูปแบบที่ต้องการได้ มาดูตัวอย่างกัน VM จะถูก Config ด้วย Private IP จาก Virtual Network (Private Network) และ Public IP จาก Virtual Network (Public Network) นั่นหมายความว่า VMs ทุกตัวจะมี 2 ขา DNS Zone ก็จะมี 2 ชุดคือ Private DNS และ Public DNS ดังนี้

ในส่วน Private DNS จะมี Domain ดังนี้

private-192-168-2-1.example.com. A 192.168.2.1
private-192-168-2-2.example.com. A 192.168.2.2
private-192-168-2-3.example.com. A 192.168.2.3
...

ส่วน Public DNS จะมี Domain ดังนี้

cloud-61-7-253-1.example.com. A 61.7.253.1
cloud-61-7-253-2.example.com. A 61.7.253.2
cloud-61-7-253-3.example.com. A 61.7.253.3
...

ทีนี้เรามา config Bind กัน ในส่วน Private DNS กำหนด Generate Directive ดังนี้

$GENERATE 1-255 private-192-168-2-$.example.com A 192.168.2.$

ส่วน Public DNS กำหนด Generate Directive ดังนี้

$GENERATE 1-255 cloud-61-7-253-$.example.com A 61.7.253.$

หากคุณทราบ IP Address ในส่วน Private IP และ Public IP คุณก็สามารถอ้างอิงจาก Sub Domain ได้แล้ว ยกตัวอย่างเช่น VM ชื่อ ubuntu-mail-server มี Private IP และ Public IP เป็น 192.168.2.23, 61.7.253.35 คุณสามารถใช้ Domain ชื่อ private-192-168-2-23.example.com และ cloud-61-7-253-35.example.com ใช้อ้างอิงได้ :)

อ่านเพิ่มเติมได้ที่ – Bind Manual

บังเอิญได้ไปดู Video ของ Nixie Does Linux ของ Nixie Review โปรแกรมจับหน้าจอตัวใหม่ ชื่อ Kazam โปรแกรมนี้เป็นโปรแกรมเล็กๆ จิ๋วแต่แจ๋ว ซึ่งสามารถจับหน้าจอได้รวดเร็วมาก ไฟล์วิดีโอที่ได้เป็น .mkv ซึ่งให้ผลลัพท์ออกมาได้ดีมากครับ อ้อที่สำคัญโปรแกรมสามารถอัพโหลด Video ที่อัดจากหน้าจอ ขึ้นไป YouTube ได้เลย :) ดู review จาก Nixie ข้างล่าง ละกันครับ

สำหรับการติดตั้ง สามารถติดตั้งได้จาก PPA ดังนี้

sudo apt-add-repository ppa:and471/kazam-daily-builds

จากนั้นสั่ง update ดังนี้

sudo apt-get update

และติดตั้งดังนี้

sudo apt-get install kazam

ผมคิดว่าหลายองค์กรที่ใช้ SAMBA เป็น File Server ซึ่งใช้งานง่าย สะดวก และ สบาย แต่ทว่าความรู้สึกของคนในแต่ละแผนกอาจรู้สึกว่าทำไมไฟล์จะต้องไปอยู่ที่เครื่องเซิร์ฟเวอร์เดียวกันด้วย รู้สึกไม่ปลอดภัยและเป็นกังวล ซึ่งวิธีง่ายๆ ในการแก้ปัญหานี้ก็คือ “ตามใจ” ครับ โดยแยก File Server ออกเป็นแต่ละฝ่ายหรือแผนก แต่หากคุณไม่มีเครื่องเซิร์ฟเวอร์และสื่อเก็บข้อมูลที่เพียงพอ การแยก File Server ออกเป็นเครื่องย่อยๆ อาจสร้างปัญหาให้กับคุณมากขึ้น ผมมีวิธีง่ายๆ ที่ใช้ในการแก้ปัญหานี้ครับ เราเรียกว่าวิธีนี้ว่า Virtual SAMBA Server :)

Virtual SAMBA Server เป็นวิธีการจำลอง (และหลอกลวง) ว่ามีเครื่อง File Server หลายเครื่อง แต่จริงๆ แล้วมีเพียงเครื่องเดียวเท่านั้น :P ซึ่งสามารถหลอกคนในองค์กรได้ว่ามีการแยกเครื่อง File Server ออกเป็นแต่ละแผนกหรือฝ่ายจริงๆ ไม่ได้เก็บข้อมูลที่เครื่องเดียวกัน โดยแต่ละฝ่ายจะเชื่อมต่อไปยัง File Server ของแต่ละฝ่ายเอง ซึ่งให้ความรู้สึกดีมากกว่าที่จะเห็นไฟล์หรือใช้เครื่องเซิร์ฟเวอร์เดียวกัน มาดูวิธีกันครับ

ให้คุณกำหนดค่า netbios aliases ส่วน [global] ในไฟล์ /etc/samba/smb.conf โดยแยกเป็นแผนกหรือฝ่าย ของผมเป็นกลุ่มงาน research และ testing ดังนี้

smb ports = 139
netbios aliases = research testing
include = /etc/samba/smb.conf.%L

ในบรรทัดที่ 2 จะเป็นการกำหนดไฟล์ config เพิ่มเติมโดยให้โหลดจากไฟล์ ที่ชื่อ smb.conf.<ชื่อ netbios> ของเครื่องนั่นคือ smb.conf.research และ smb.conf.testing จากนั้นเพิ่ม config ทั้งสองไฟล์ดังนี้

ไฟล์ /etc/samba/smb.conf.research

[global]

workgroup = RESEARCH

[research-share]

comment = share for research
path = /home/share/research
browseable = yes

ไฟล์ /etc/samba/smb.conf.testing

[global]

workgroup = TESTING

[testing-share]

comment = share for testing team
path = /home/share/testing
browseable = yes

จากนั้น restart service ชื่อ smbd และ nmbd ดังนี้

/etc/init.d/nmbd restart
/etc/init.d/smbd restart

ทีนี้ลองใช้คำสั่ง smbclient ดูครับ เราจะพบว่าเรามีเครื่อง Samba Server เพิ่มขึ้นมาแล้ว

ดูใน Nautilus จะเห็นเป็นเครื่องเซิร์ฟเวอร์ดังนี้

เพียงเท่านี้คุณสามารถแยกเครื่อง File Sever แบบหลอกตาได้แล้ว :P

OpenNebula เป็นโครงการ Cloud Open Source ที่ได้รับความนิยมมากตัวหนึ่งเพราะความยืดหยุ่นและการใช้งานร่วมกับระบบ อื่นๆ ได้ (ecosystem) นั่นหมายความว่าคุณสามารถติดตั้งให้ OpenNebula เป็น Cloud แบบใดก็ได้ ไม่ว่าจะเป็น Private Cloud, Public Cloud หรือ แม้กระทั่ง Hybridge Cloud การเชื่อมต่อ OpenNebula Cloud เราสามารถขยายขนาดออกไปได้เรื่อยๆ ไม่ได้ยึดติดว่าจะต้องเป็น Cloud Infra ที่ใช้ OpenNebula เหมือนกัน ในตอนนี้จะเป็นตอนสุดท้ายของเราครับ ในตอนสุดท้ายนี้คงไม่มีอะไรเป็นพิเศษ เพียงแต่อยากฝาก link ที่คุณสามารถใช้อ้างอิง เพื่อประยุกต์ใช้ OpenNebula ในการสร้างและจัดการ Cloud Infra ในรูปแบบ ที่คุณต้องการได้ โดยเข้าไปที่ OpenNebula Documentation ได้เลยครับ หน้าเดียวจบ ครบทุกอย่าง สำหรับ Web management console สำหรับ OpenNebula 2.0.x ยังไม่เรียบร้อยท่านที่สนใจช่วยทางทีม SARA พัฒนาเพิ่มเติมก็ร่วม contribute ได้ที่ Ecosystem ส่วน Management Console และ ท่านที่ใช้ Delta Cloud ห้ามพลาด OpenNebula Add-on ครับ

สร้าง Cloud Infrastructure ด้วย OpenNebula มาถึงตอนที่ 3 แล้วหลังจากเราสร้าง Cluster ของ Private Cloud กันไปในตอนที่แล้ว ตอนนี้จะกล่าวถึงการสร้าง Services Image ให้กับ OpenNebula กันครับ OpenNebula ใช้เทคโนโลยีที่มีอยู่เข้ามาปรับใช้ได้อย่างลงตัว ไม่ว่าจะเป็นการใช้งาน Virtualization อย่าง Xen, KVM หรือ แม้กระทั่ง VMWare ผ่าน OpenNebula Driver การจัดการ Disk Image หรือ Service Image เราสามารถใช้ Image ได้หลากหลาย ไม่ว่าจะเป็น raw, qcow, qcow2, VirtualBox, หรือแม้กระทั่ง VMWare ได้เช่นกัน

ในตอนนี้เรามาสร้าง Service Images ด้วยวิธีง่ายๆ ที่คุณหรือใครๆ ก็ทำได้ผ่านทางโปรแกรม GUI โดยไม่ต้องจิ้มคำสั่งกันแล้ว ผมพยายามหาวิธีง่ายๆ ให้น่ะครับ :) วิธีนี้คือการใช้ Virt-Manager ครับ ท่านที่ใช้ Ubuntu Desktop ก็สั่งติดตั้ง Virt-Manager ผ่านทาง Software Center กันได้เลย

Continue reading

จากตอนที่แล้วเราได้ทำความรู้จักกับ OpenNebula ไปแล้ว สำหรับในตอนที่ 2 นี้เราจะมาติดตั้ง OpenNebula กัน OpenNebula ออกแบบมาโดยใช้โครงสร้าง Cluster เดิมที่มีอยู่แล้วได้ ดังนั้นจาก Minimum Configuration เดิมซึ่งสามารถใช้งานได้เลย จากภาพเราจะมีเครื่อง Front End (Head Node) เพื่อทำหน้าที่จัดการ Image Repository, VMs, Scheduling ใน Cluster Node ที่เชื่อมต่ออยู่ จาก Minimun Configuration เครื่อง Front End จะมีการ์ดแลนอย่างน้อย 2 ใบ ใบหนึ่งเชื่อมต่อไปยังเครือข่ายภายนอก หรือ Internet ส่วนอีกใบหนึ่งจะเชื่อมต่อกับ Cluster Node ดังภาพ สำหรับเครื่อง Node มีการ์ดแลนอย่างน้อย 1 ใบ

เครื่อง Front End จะทำหน้าที่ควบคุม VM และ Image Repository ดังนั้นเครื่อง Front End จะเปิด Services NFS เพื่อให้เครื่อง Node ทั้งหมดเข้ามาเรียกใช้ VM Image จากเครื่อง Front End ได้ ดังนั้นในการขยายขนาด Stroage คุณสามารถเลือกใช้ Distributed Storage เพื่อเพิ่มจำนวน Node และ Storage ได้ในตัว (วิธีการนี้ไม่ขอพูดถึงในเนื้อหาครับ) สำหรับเครื่อง Cluster Node แนะนำให้เป็นเลขคู่ 2,4,6,8 เป็นต้น สำหรับ Cluster Node ที่เราจะติดตั้งมี 2 เครื่อง

การติดตั้ง OpenNebula ทำได้หลายวิธีตั้งแต่ติดตั้งจาก Source Code ไปจนถึงติดตั้ง Binary Package ของแต่ละ Linux Distribution ได้ สำหรับ Linux Distribution ที่เราจะมาติดตั้งกันวันนี้คือ Ubuntu Server 10.04 LTS ส่วนการติดตั้ง OpenNebula เราจะใช้ OpenNebula Express 2.0 เพื่อย่อยระยะเวลาและความยุ่งยากในการติดตั้ง มาลงมือกันเลย Continue reading

OpenNebula เป็นโครงการโอเพนซอร์สมีจุดประสงค์เพื่อสร้างเครื่องมือบริหารจัดการ Cloud Computing ที่มีความยืดหยุ่นในการขยายขนาด Data Center infrastructure ได้ง่าย ซึ่งมีการพัฒนามาจนถึงรุ่นที่ 2.0.1 แล้ว หลังจากโครงการนี้เดินมาในรูปแบบโอเพนซอร์สได้ระยะหนึ่งซึ่งผลงานของชุมชน OpenNebula.org และ C12G Lab ที่ช่วยกันพัฒนา เครื่องมือในการบริหารจัดการ Cloud Infra แบบ Open Source ก็ได้รับการตอบรับอย่างดี ไม่ว่าจะเป็น CERN, Chaina Mobile, ESAC, Nikhef, SARA และยังมีผู้พัฒนาต่อยอดจากโครงการนี้อีกมากเช่น StratusLab, Bon Fire, Reservoir, OCCI, D-Grid, 4 CaaSt เป็นต้น

OpenNebula ออกแบบมาเพื่อรองรับการใช้งานบน Infrastructure เดิมให้มากที่สุดซึ่งการออกแบบเน้นการเพิ่มหรือขยาย Infra ได้ยืดหยุ่น ซึ่งคล้ายคลึงกับการวางโครงสร้างในระบบคลัสเตอร์ทั่วไป จากความยืดหยุ่นคุณสมารถประยุกต์ OpenNebula เพื่อใช้จัดการ Cloud Infrastructure ในรูปแบบต่างๆ ได้ ไม่ว่าจะเป็น Private Cloud, Hybridge Cloud และ Public Cloud ในบทความนี้จะครอบคลุมเพียง Private Cloud เท่านั้น คุณสามารถอ่านเพิ่มเติมได้จากเว็บไซต์โครงการครับ Continue reading