เริ่มต้นสร้างแอปพลิเคชันโดยทำการเลือก Cartridge ดังนี้ PHP 5.4, MySQL 5.5, phpMyAdmin 4 และตั้งชื่อแอปพลิเคชันด้วยคำสั่ง

rhc app-create (app-name) php-5.4 mysql-5.5 phpmyadmin-4

โดยเปลี่ยนค่า (app-name) เป็นชื่อของแอปพลิเคชัน เช่น

rhc app-create basicphp php-5.4 mysql-5.5 phpmyadmin-4

ทำการดูและคัดลอกค่า ชื่อฐานข้อมูล(Database Name), ชื่อผู้ใช้ (Username), รหัสผ่าน (Password) ของฐานข้อมูลมาเก็บไว้ด้วยคำสั่ง

rhc app show –a (app-name)
Continue reading

หนังสือ Getting Satrted with OpenShift จากสำนักพิมพ์ O’Reilly ออกมาแล้ว หลังจากที่บ่มมานานอยู่เหมือนกัน นานจนลืมไปเลย หนังสือเล่มนี้เน้นการใช้งาน OpenShift เป็นหลัก การทำ Hot Deploy ใช้งาน Task Scheduler ทำ Continuous Integration การ Backup เป็นต้น เรียกได้ว่าแตกต่างจากหนังสือ OpenShift เล่มอื่นๆ ที่มีอยู่ในท้องตลาดพอสมควร สำหรับท่านที่เป็นมือใหม่ ผมแนะนำให้อ่านเล่มนี้ครับ :)

เกือบลืมหนังสือเล่มนี้สามารถดาวน์โหลดได้ ที่เว็บ OpenShift ครับ

OpenShift เป็น Platform as a Service พัฒนาโดย RedHat ซึ่งนำแนวคิดการพัฒนา PaaS โดยไม่พึ่งพาการทำ Multi Tenant โดยใช้ VM แต่ใช้ Kernel Control Group, Namespace และ SELinux เป็นตัวแบ่ง Tenant ให้แต่ละ Application ทำงานแทนการใช้ VM ทำให้โครงสร้างของ OpenShift แตกต่างจาก PaaS ตัวอื่นๆ อย่างชัดเจน OpenShift ใช้ Gear แทน Application ของผู้ใช้ ซึ่งใน 1 Gear จะมีส่วนประกอบไปด้วย Code ของ Application, Git Repository, Application Environment และ Cargtride ที่เป็น Application Runtime, ฐานข้อมูล, Jenkins Server สำหรับทำ CI และ HA Proxy สำหรับทำ Load balance ระหว่าง Gear และรองรับการทำ Elastic Scale ผ่าน HA Proxy นอกจากนี้ยังสร้าง domain name จาก namespace ที่กำหนดให้โดยผู้ใช้ให้อีกด้วย ใครสนใจเรื่อง Architecture เข้าไปอ่านในเว็บ OpenShift กันได้

OpenShift แบ่งรุ่นบริการออกเป็น 3 รุ่น คือ

  • OpenShift Origin เป็นโอเพนซอร์สสามารถเข้าร่วมพัฒนาได้
  • OpenShift Enterprise เป็นรุ่น Enterprise ติดตั้งผ่าน RHEL Repository
  • OpenShift Online เป็นบริการออนไลน์บน openshift.com

OpenShift สามารถติดตั้งได้บน RedHat Enterprise Linux และ Fedora สำหรับ Linux Distribution อื่น เอา ไฟล์ spec+source ไป build package เอาเอง T_T

วิธีการติดตั้ง OpenShift ทำได้ 2 วิธี

ถ้าอยากลองเล่น OpenShift ก็สามารถลงทะเบียนเข้าใช้งานที่ OpenShift Online ได้ฟรี สำหรับการติดตั้งแบบง่ายๆ ก็คงหนีไม่พ้น Puppet ครั้งนี้ใช้ Fodora 19 ติดตั้งแบบ Command Line และ Developer Tools อ้อ ลืมบอกไปว่าเราจะติดตั้งแบบง่ายที่สุดคือมี broker+node+console ในเครื่องเดียวกัน ใครสนใจติดตั้งแบบอื่น ตามลิงค์ได้ที่ท้ายบทความ หลังจากติดตั้ง Fedora 19 แล้วก็ติดตั้ง Puppet ดังนี้

yum install -y --nogpgcheck http://yum.puppetlabs.com/puppetlabs-release-fedora-19.noarch.rpm

เนื่องจากเราจะใช้ mcollective และ activemq ของ OpenShift Origin ดังนั้นต้องไปตั้งค่า exclude ไว้ใน repo ของ puppet โดยแก้ไขไฟล์ /etc/yum.repo.d/puppetlabs.repo ใส่ค่า exclude=*mcollective* activemq ต่อท้ายทุกๆ repo ในไฟล์ puppetlabs.repo จากนั้นตั้งติดตั้ง puppet และเครื่องมือที่ต้องใช้

yum install -y puppet facter tar httpd-tools

จากนั้นติดตั้ง puppet module ดังนี้

puppet module install puppetlabs/ntp

puppet module install puppetlabs/stdlib

puppet module install openshift/openshift_origin

ติดตั้ง Bind และสร้าง TSIG Key

yum install -y bind

สร้าง TSIG Key ให้ domain ของคุณ ในกรณีนี้ใช้เป็น example.com ถ้าไม่ชอบก็สามารถเปลี่ยนเป็น domain ที่คุณต้องการได้

/usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n USER -r /dev/urandom -K /var/named example.com

cat /var/named/Kexample.com.*.key | awk '{print $8}'

คุณจะได้ค่า Key หน้าตาแปลกๆ แบบนี้ Mczfz277B5ykcPB4mAurZtZMhmXV6g== ให้จดเอาไว้ แล้วสร้าง config ชื่อ openshift_origin.pp ดาวน์โหลดจาก link ได้ครับ แก้ไข config ตามที่คุณต้องการ เช่น domain, bind key เป็นต้น ใน config ผมกำหนดให้ puppet ติดตั้ง Cartridge แค่ PHP, PHPMyAdmin, MariaDB และ HAProxy เพื่อความรวดเร็ว เมื่อได้ไฟล์ config กันแล้ว ก็สั่งให้ puppet ทำงานดังนี้

puppet apply --verbose openshift_origin.pp

ระหว่างนี้ก็นั่งรอครับ ประมาณครึ่งชั่วโมง T_T ถ้าไม่มี Error ตัวแดงๆ ก็เป็นอันใช้ได้ เมื่อติดตั้งเสร็จให้ reboot เครื่องแล้ว เปิด browser ไปที่ http://broker.example.com/console

OpenShift จะถาม username และ password ใส่ openshift, password จากนั้นก็ใช้งานตามปกติ

ลิงค์ที่น่าสนใจ

หลายคนอาจเจอปัญหาอาการ 503 Service Unavailable บน OpenShift หลังจาก Deploy PHP App ทุกครั้งที่มีการ Deploy app ผ่าน git push OpenShift จะเอาไฟล์ที่ push ไปวางแทนที่ revision เดิมและเริ่มกระบวนการ Deploy และจะทะยอย Stop และ Start Service ต่างๆ ใน Cartridge ที่เรามี เช่น Web Server, MySQL เป็นต้น เนื่องจาก OpenShift จะต้องรอ Service ในแต่ Cartridge เริ่มทำงานก่อน ทำให้เราเจอหน้า 503 Service Unavailable ในการ Deploy PHP App ไม่จำเป็นต้อง Stop และ Start Service ใน Cartridge ต่างๆ ก็ได้เพราะภาษา PHP เป็นภาษา Script เราสามารถแก้ปัญหานี้ได้ง่ายๆ โดยใช้วิธีที่เรียกว่า Hot Deploy

การทำ Hot Deploy จะเป็นการสั่งให้ OpenShift ไม่ต้องสนใจเรื่อง Start/Stop Cartridge มีวิธีการง่ายๆ คือ สร้างไฟล์ hot_deploy ใน markers

$ touch YourAppName/.openshift/markers/hot_deploy

$ git commit -am "Adding hot deploy marker"

$ git push

พลาดไม่ได้กับงานสัมนาพร้อมอัพเดทเทคโนโลยี Cloud Computing และ OpenShift Enterprise โซลูชั่น Platform as a Service สำหรับ Private Cloud จาก RedHat ในวันที่ 18 กันยายน 2556 เวลา 9.00-12.00 น. สำนักงานใหญ่ บริษัทเดอะแวลลูซิสเตมส์ จำกัด สำรองที่นั่งด่วน! มีจำนวนจำกัด งานนี้ฟรี!

กำหนดการ

  • แนะนำ RedHat และบริการ Cloud Computing
  • แนะนำ OpenShift
  • Demo การใช้งาน OpenShift

สถานที่จัดงาน

สำนักงานใหญ่ บริษัทเดอะแวลลูซิสเตมส์ จำกัด เลขที่ 159/35 อาคารเสริมมิตรทาวเวอร์ ชั้น 21 ถนนสุขุมวิท 21 (อโศก) แขวงคลองเตยเหนือ เขตวัฒนา กรุงเทพฯ 10110 (แผนที่)

OpenShift เปิดตัวอย่างเป็นทางการแล้ว แต่ก็ยังไม่ได้เขียนบทความอะไรที่เป็นจริงจังมากนัก เอาเป็นว่าครั้งนี้มามัดรวมและสรุปการใช้งาน OpenShift Online กัน หลายท่านอาจสงสัยว่าทำไมถึงมีคำว่า Online ต่อท้าย ที่มีคำว่า Online ต่อท้ายก็เพราะว่า RedHat เปลี่ยนแนวทางของ OpenShift ครั้งใหม่ โดยแบ่งออกเป็น

  1. OpenShift Origin เป็นโครงการโอเพนซอร์สสามารถเอาซอร์สโค้ดไปพัฒนาต่อได้ หรือนำเอาไปใช้งานได้
  2. OpenShift Online เป็น OpenShift ที่ให้บริการที่อยู่ในรูปแบบ Public Cloud
  3. OpenShift Enterprise เป็นบริการเพิ่มจาก RedHat Enterprise สำหรับองค์กรที่ต้องการติดตั้งและใช้งาน OpenShift ในองค์กร

ครั้งนี้เราจะมาพูดถึง OpenShift Online กันครับ เนื่องจากจับต้องได้ง่ายกว่า สำหรับ OpenShift Online ท่านที่สนใจสามารถสมัครใช้บริการได้ฟรีไม่เสียค่าใช้จ่าย เริ่มแรก OpenShift จะให้ใช้งานฟรีอยู่ที่ 3 Gears ถ้าต้องการใช้งานเพิ่มหรือต้องการ Scale มากกว่า 3 Gears ต้องสมัคร Silver Plan คือจ่ายค่าส่วนกลางรายเดือน $20 และจ่ายค่าเช่าใช้แบบ Pay-per-Use ต่อ Gear อีกต่างหาก รายละเอียดในเรื่องของค่าใช้จ่ายดูได้ที่หน้า Pricing

มาเริ่มกันเลยได้ว่า สำหรับท่านที่สมัครสมาชิกไว้แล้วสามารถเลือกการใช้งาน OpenShift Online ได้ 3 ทาง คือ

  1. ผ่านหน้าเว็บ
  2. ผ่าน Command line
  3. ผ่าน IDE ที่รองรับ เช่น JBOSS IDE เป็นต้น

ขอแนะนำการใช้งานผ่าน Command line ก่อนก็แล้วกัน เพราะการใช้งานผ่านหน้าเว็บจะง่ายกว่า :P สำหรับการใช้งานผ่าน Command line สามารถใช้ได้กับทุกระบบปฏิบัติการ ขอให้มี
1. Ruby 1.8.7 ขึ้นไป
2. Git

หลังจากนั้นให้ติดตั้ง RedHat Cloud Client โดยใช้คำสั่ง

gem install rhc

เมื่อติดตั้ง RedHat Cloud Client เรียบร้อยแล้ว ตัวโปรแกรมจะให้เรา Login เข้าสู่ระบบของ OpenShift จากนั้นก็จะลงทะเบียน ssh public key เท่านี้ก็เป็นอันเสร็จเรียบร้อย จากนั้นก็มาสร้าง Application บน Cloud ได้เลย OpenShift ใช้คำว่า Programming Cartridge แทนภาษาที่คุณใช้ เช่น ถ้าคุณเขียนภาษา PHP คุณสามารถเลือก Cartridge ได้หลายแบบ เช่น PHP, ZendServer, CakePHP, cakeStrap, CodeIgniter เป็นต้น แต่ OpenShift จะมี Cartridge ที่เป็น Instante App ให้ด้วย เช่น Drupal, WordPress, Dukuwiki เป็นต้น สำหรับการเลือก Cartridge ขึ้นอยู่กับว่าเราต้องการ Cartridge แบบใด บาง Cartridge ไม่สามารถ Scale ได้อัตโนมัติ บาง Cartridge สามารถ Scale ได้ต้องอ่านรายละเอียดของ Cartridge นั้นๆ ให้ดี
มาสร้าง Application กันเลย ใช้คำสั่ง

rhc app create myfirstapp php-5.3

คำสั่งข้างต้นจะสร้าง App ที่ชื่อว่า myfirstapp ที่ใช้ภาษา PHP รุ่น 5.3 เป็นภาษาที่ใช้ในการพัฒนา หากต้องการให้ App สามารถ Scale ได้ ให้ใช้คำสั่ง

rhc app create -s myfirstapp php-5.3

หากต้องการฐานข้อมูลก็ให้เพิ่ม Cartridge เข้าไปเพิ่ม เช่น MySQL เป็นต้น

rhc cartridge add -a myfirstapp -c mysql-5.1

สำหรับการ Scale เราสามารถตั้งค่าจำนวน instance ต่ำสุดและสูงสุดที่จะเพิ่มได้ ยกตัวอย่างเช่น มีโควต้าทั้งหมด 16 Gears ใช้ไปแล้ว 3 Gears (PHP, MySQL, HA Proxy) ต้องการ Scale มากที่สุด 6 น้อยที่สุด 3 ใช้คำสั่งดังนี้

rhc cartridge scale php-5.3 -a myfirstapp --min 3 --max 6

เขียนมายาว ทั้งหมดนี้สามารถตั้งค่าได้จาก Web Console ได้เช่นเดียวกัน สำหรับเอา Application ขึ้น/ลง จะใช้ Git ทุกๆ App จะมี Git repository เป็นของตัวเอง และการใช้ Git คุณก็สามารถ merge code จาก repository อื่นๆ ได้ ไม่ว่าจะเป็น repository ของคุณเอง หรือจาก GitHub ก็ได้

นึกสนุกไปเปิดคอร์สออนไลน์สอน Android Mobile App Development ที่ ClassStart.org ซึ่งเอาเอกสารการสอนและวิดีโอขึ้นไปหมดแล้ว แต่คิดว่าน่าจะมีข้อมูลเพิ่มเติมอีกหน่อยแต่คงทะยอยทำขึ้นไปเรื่อยๆ ช่วงก่อนสงกรานต์มีผู้ใหญ่ท่านนึงมาจุดประกายเรื่อง OpenShift ไว้ก็เลยทำ Slide + Video การใช้งาน OpenShift เพิ่มเติมเป็นเนื้อหาพิเศษที่ ClassStart.org แต่ไม่ได้เป็นคอร์สแยก คิดว่าจะทำเป็นคอร์สแยกในอีก 1-2 เดือนข้างหน้า (นานไปมั๊ย) สำหรับผู้ที่สนใจก็สามารถเข้าไปเรียนได้ครับ อ้อ สำหรับท่านที่ไม่สะดวกก็สามารถดู Slide ข้างล่างได้ครับ

ส่วนวิดีโอ Tutorial จะเป็น Video ใบ้ ใช้ประกอบกับ Slide ในแต่ละส่วนมีดังนี้

ผมกลับมาใช้ OpenShift อีกรอบเนื่องจากมีโครงการเฉพาะกิจ พัฒนาเกมส์บวกเลขเก็บสถิติบน Cloud ซึ่งตอนแรกคิดว่าจะใช้ GREE แต่เนื่องจากติดปัญหาเรื่อง Build Package บน GREE เลยล้มเลิกไปและกลับมาใช้ OpenShift อีกรอบพัฒนา RESTFul Web Services เก็บข้อมูล High Score เอาเอง ปัญหาของคนที่ใช้ OpenShift มักจะถามบ่อยครั้งมาที่ผมและทีม OpenShift ที่ RedHat คือ จะวัดได้อย่างไรว่า App ที่พัฒนาใช้ Resource มากน้อยแค่ไหน สมควรที่จะเพิ่ม Gear เพื่อทำ horizontal Scaling หรือไม่ จากที่ได้ใช้บริการ Cloud ของหลายที่ จะมีเครื่องมือ Monitoring และ Auto Scaling ให้เสมอแต่ OpenShift ยังไม่มี เพิ่งจะมีออกมาเป็น Experimental (รุ่นทดลอง) ชื่อ OpenShift Metrics ครับ เป็น Cartridge เพิ่มเข้าไปใน Gear ได้โดยตรง วิธีการเพิ่มก็เข้าไปที่หน้า Add Catridge ดังนี้

จากนั้นเลือก OpenShift Metrics Cartridge เมื่อติดตั้งเรียบร้อยแล้ว เราจะสามารถเข้าไปดูส่วน Monitoring ได้โดยใช้ URL ดังนี้

https://appname-namespace.rhcloud.com/metrics

อยากดูของจริงก็เข้าไปดูของผมได้ครับที่ https://rest-redlinemobi.rhcloud.com/metrics/ ยังไม่มีรายงานสรุป แต่มี Graph แบบ real time ซึ่งดูแล้วงงนิดหน่อย เพราะดูไม่ค่อยทัน แต่ก็ยังดีกว่าไม่มีครับ :P

ใครที่ใช้ OpenShift อยู่ก็ไปลองกดเล่นๆ ดูได้ครับ