โดยทั่วไปการประมวลผลแบบคลาวด์ที่เรากล่าวถึงมีสามประเภท: ซอฟต์แวร์เป็นบริการ (SaaS), แพลตฟอร์มเป็นบริการ (PaaS) และโครงสร้างพื้นฐานเป็นบริการ (IaaS) เมื่อแนวคิดเรื่องคลาวด์เกิดขึ้นครั้งแรก ผู้คนต่างบอกว่ามันน่าสับสนและไม่ชัดเจน ปัจจุบัน เทคโนโลยีคลาวด์หยั่งรากลึกอยู่ในใจของผู้คน บางทีคุณอาจใช้คลาวด์โดยที่ไม่รู้ตัว ตัวอย่างเช่น Gmail ที่คุณใช้ทุกวันอยู่บน Google Cloud . เพื่อให้เข้าใจถึงคลาวด์ที่แตกต่างกันทั้งสามนี้ได้ดีขึ้น เรายกตัวอย่างจาก Google ได้ว่ามีบริการคลาวด์สามรูปแบบ อันดับแรก ให้ดูที่แอป SaaS เช่น Google Gmail/Docs/Gtalk/Maps Cloud ดังนั้นพวกเขาจึงจัดให้มี "ซอฟต์แวร์เป็นบริการ" สำหรับผู้ใช้ทั่วไป Google ยังให้บริการ AppEngine สำหรับนักพัฒนาซึ่งช่วยให้นักพัฒนาสามารถใช้ Python, java และภาษาอื่น ๆ และ API ที่พวกเขามอบให้เพื่อพัฒนาซอฟต์แวร์และบริการได้ พวกเขาให้ "แพลตฟอร์มเป็นบริการ" แก่นักพัฒนา โดย Google ได้สร้างโครงสร้างพื้นฐานระบบคลาวด์ขั้นพื้นฐานขนาดใหญ่โดยใช้ GFS, BigTable และ MaPReduce เพื่อมอบ "โครงสร้างพื้นฐานเป็นบริการ" ให้แก่พนักงานภายในของตนเอง เหล่านี้คือระบบคลาวด์สามประเภทที่แตกต่างกัน .
OpenNebula คือชุดเครื่องมือการจัดการพื้นฐานการประมวลผลบนคลาวด์แบบโอเพ่นซอร์สที่อำนวยความสะดวกให้กับผู้ดูแลระบบในการปรับใช้ สร้าง จัดสรร และจัดการเครื่องเสมือนจำนวนมากในศูนย์ข้อมูลอย่างเท่าเทียมกัน ศูนย์ข้อมูลระดับองค์กรสามารถใช้ชุดเครื่องมือนี้เพื่อสร้างคลาวด์ส่วนตัวของตนเองได้ และให้บริการภายใน ให้บริการ IaaS ผลิตภัณฑ์โอเพ่นซอร์สที่คล้ายกัน ได้แก่ Eucalyptus, openQRM เป็นต้น กระบวนการติดตั้งต่อไปนี้เสร็จสมบูรณ์บนเซิร์ฟเวอร์สองเครื่องของ VPSee ที่ติดตั้งระบบ CentOS 5.5 เซิร์ฟเวอร์หนึ่งตัวถูกใช้เป็นส่วนหน้าของ OpenNubula (node00) และเซิร์ฟเวอร์อีกตัวถูกใช้เป็นโหนด (node01) เพื่อสร้าง "คลาวด์" แบบขั้นต่ำ หากคุณต้องการขยายคลาวด์นี้ คุณเพียงแค่ต้องค่อยๆ เพิ่มโหนด (node02, node03, ...)
ติดตั้งและกำหนดค่าส่วนหน้า (Front-End)
เพิ่มแหล่งที่มา CentOS Karan:
# ซีดี /etc/yum.repos.d
# รับ http://centos.karan.org/kbsingh-CentOS-Extras.repo
#ยำอัปเดต
ติดตั้งแพ็คเกจซอฟต์แวร์ที่จำเป็นสำหรับ OpenNebula และเครื่องมือที่จำเป็นในการรวบรวมซอร์สโค้ด OpenNebula:
# yum ติดตั้ง gcc gcc-c++ สร้าง openssl-devel flex bison
# yum ติดตั้ง ruby ruby-devel ruby-docs ruby-ri ruby-irb ruby-rdoc
# ยำติดตั้ง Rubygems
# gem ติดตั้ง nokogiri rake xmlparser
# ยำติดตั้งสคอน
# ยำติดตั้ง xmlrpc-c xmlrpc-c-devel
เวอร์ชัน sqlite ที่มาพร้อมกับ CentOS ใช้งานไม่ได้ คุณต้องดาวน์โหลดและคอมไพล์เวอร์ชัน sqlite 3.6.17:
# wget http://www.sqlite.org/sqlite-amalgamation-3.6.17.tar.gz
# tar xvzf sqlite-amalgamation-3.6.17.tar.gz
# ซีดี sqlite-3.6.17/
# ./configure; ทำการติดตั้ง
หลังจากดาวน์โหลดและคอมไพล์แพ็คเกจซอร์ส opennebula 2.0.1 แล้ว ให้แตกไฟล์ คอมไพล์ และติดตั้ง:
# tar zxvf opennebula-2.0.1.tar.gz
# ซีดี opennebula-2.0.1
#สคอน
# ./install.sh -d /srv/cloud/one
# ls /srv/คลาวด์/หนึ่ง/
bin ฯลฯ รวมถึง lib share var
ก่อนที่จะเริ่ม OpenNebula คุณต้องกำหนดค่าตัวแปรสภาพแวดล้อม ONE_AUTH ตัวแปรสภาพแวดล้อมนี้อ่านได้จากไฟล์ $HOME/.one/one_auth ดังนั้นคุณต้องสร้างไฟล์ one_auth ก่อน จากนั้นจึงเริ่มต้นหนึ่งไฟล์ (เซอร์วิสโปรแกรม OpenNebula):
#ซีดี/รูท/
# mkdir .หนึ่ง
#ซีดี.หนึ่ง/
# cat "oneadmin:passWord"> one_auth
#หนึ่งการเริ่มต้น
OpenNebula รองรับเทคโนโลยีการจำลองเสมือนสามแบบ ได้แก่ KVM, Xen และ VMware นอกจากนี้ เรายังจำเป็นต้องบอก OpenNebula ว่าเราต้องการใช้เทคโนโลยีใด และรีสตาร์ทเทคโนโลยีหนึ่งเพื่อให้การกำหนดค่ามีผล:
# vi /etc/one/oned.conf
-
IM_MAD = [
ชื่อ = "im_xen",
ปฏิบัติการได้ = "one_im_ssh",
อาร์กิวเมนต์ = "xen" ]
VM_MAD = [
ชื่อ = "vmm_xen",
ปฏิบัติการได้ = "one_vmm_ssh",
อาร์กิวเมนต์ = "xen",
ค่าเริ่มต้น = "vmm_ssh/vmm_ssh_xen.conf",
ประเภท = "xen" ]
-
#หนึ่งหยุด
#หนึ่งการเริ่มต้น
ติดตั้งและกำหนดค่าโหนด (Compute Node)
จำเป็นต้องติดตั้งสภาพแวดล้อมเสมือน Xen หรือ KVM บนแต่ละโหนด สำหรับรายละเอียด โปรดค้นหาข้อมูลอ้างอิง: การติดตั้งและการกำหนดค่า Xen บน CentOS และการติดตั้งและการกำหนดค่า KVM บน CentOS
#ยำติดตั้งทับทิม
แลกเปลี่ยนคีย์ SSH
เนื่องจากการสื่อสารระหว่าง OpenNebula Front และ Nodes ดำเนินการผ่าน SSH จึงต้องตั้งค่าการเข้าสู่ระบบแบบไม่ใช้รหัสผ่าน SSH ระหว่างส่วนหน้าและโหนดเพื่อหลีกเลี่ยงการป้อนรหัสผ่านเมื่อส่วนหน้ารันสคริปต์บนโหนดหรืออิมเมจโคลน ขั้นแรกให้กำหนดค่า sshd ที่ด้านหน้าและโหนด : :
# vi /etc/ssh/sshd_config
การรับรองความถูกต้อง RSA ใช่
PubkeyAuthentication ใช่
# /etc/init.d/ssh รีสตาร์ท
สร้างคีย์ที่ด้านหน้า (node00) และคัดลอกไปยังโหนด (node01):
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub node01
สร้างคีย์บนโหนดเดียว (node01) และคัดลอกไปที่ด้านหน้า (node00):
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub node01
หนึ่งโฮสต์
หลังจากที่ส่วนหน้าสามารถสื่อสารกับแต่ละโหนดผ่าน ssh โดยไม่ต้องใช้รหัสผ่าน คุณสามารถใช้คำสั่ง onehost create ที่ด้านหน้าเพื่อเข้าร่วมโหนดทีละโหนด และใช้รายการ onehost เพื่อตรวจสอบว่าการสร้างสำเร็จหรือไม่:
# onehost สร้าง node01 im_xen vmm_xen tm_ssh
#รายการหนึ่งโฮสต์
ID ชื่อคลัสเตอร์ RVM TCPU FCPU ACPU TMEM FMEM สถิติ
1 node01 เริ่มต้น 0 400 400 400 3.8G 383M เปิด
หากมีการรายงานข้อผิดพลาดเมื่อดำเนินการสร้าง onehost ให้ตรวจสอบบันทึก onehost และค้นหาคำว่า sudo: ขออภัย คุณต้องมี tty เพื่อเรียกใช้ sudo เหตุผลก็คือ OpenNebula ต้องใช้ ssh/sudo ระยะไกลเพื่อดำเนินการคำสั่ง และ sudo ของ CentOS ตัวเลือก needtty เปิดอยู่ตามค่าเริ่มต้น ssh จำเป็นต้องมี tty ในการดำเนินการ ดังนั้น sudo ระยะไกลจะทำให้เกิดข้อผิดพลาด:
# onehost สร้าง node01 im_xen vmm_xen tm_ssh
# หาง /var/log/one/oned.log
อังคาร 22 ก.พ. 11:08:58 2554 [InM][I]: การดำเนินการคำสั่งล้มเหลว: 'if [ -x "/var/tmp/one/im/run_probes" ]; จากนั้น /var/tmp/one/im/run_probes xen 172.16.39.111; อย่างอื่นออก 42;
อังคาร 22 ก.พ. 11:08:58 2554 [InM][I]: STDERR ติดตาม
อังคาร 22 ก.พ. 11:08:58 2554 [InM][I]: sudo: ขออภัยคุณต้องมี tty เพื่อเรียกใช้ sudo
อังคาร 22 ก.พ. 11:08:58 2554 [InM] [I]: เกิดข้อผิดพลาดในการรัน xen.rb
วิธีแก้ไขคือการปิด (แสดงความคิดเห็น) บรรทัดที่จำเป็น:
# chmod 600 /etc/sudoers
# vi /etc/sudoers
#ความต้องการเริ่มต้น
เนื่องจากเซิร์ฟเวอร์ทั้งสองของ VPSee ใช้พร็อกซี HTTP เพื่อเข้าถึงอินเทอร์เน็ต OpenNebula อ่านตัวแปรสภาพแวดล้อม http_proxy ของระบบ และพบข้อผิดพลาดในการตอบสนอง HTTP ในบันทึก sched.log ในขณะนี้ http_proxy จำเป็นต้องปิด:
# cat /var/log/one/sched.log
อังคาร 22 ก.พ. 14:27:39 น. 2554 [HOST] [E]: มีข้อยกเว้นเกิดขึ้น: ไม่สามารถส่ง XML ไปยังเซิร์ฟเวอร์และรับการตอบสนอง XML กลับได้
อังคาร 22 ก.พ. 14:27:39 น. 2554 [POOL][E]: ไม่สามารถดึงข้อมูลพูลจาก ONE
# ยกเลิกการตั้งค่า http_proxy
สร้างและแก้ไขไฟล์การกำหนดค่าเครือข่ายเสมือน จากนั้นสร้างเครือข่ายเสมือน OpenNebula:
# vi small_network.net
NAME = "เครือข่ายขนาดเล็ก"
ประเภท=แก้ไขแล้ว
สะพาน = br0
สัญญาเช่า = [ip="192.168.0.5"]
สัญญาเช่า = [IP="192.168.0.6"]
สัญญาเช่า = [IP="192.168.0.7"]
# onevnet สร้าง small_network.net
#รายการonevnet
ID ชื่อผู้ใช้ ประเภทสะพาน P #เช่า
0 oneadmin เครือข่ายขนาดเล็ก แก้ไข br0 N 0
หนึ่งวีเอ็ม
สร้างและแก้ไขไฟล์การกำหนดค่าการเริ่มต้นของเครื่องเสมือน สามารถดาวน์โหลด centos.5.5.x86.img ได้ที่นี่จาก http://stacklet.com/ (มีค่าธรรมเนียม) หรือคุณสามารถสร้างไฟล์ด้วยตัวเองโดยใช้เครื่องมือ Xen:
# wget http://stacklet.com/sites/default/files/centos/
centos.5.5.x86.img.tar.bz2
# tar jxvf centos.5.5.x86.img.tar.bz2
# mv centos.5.5.x86.img /srv/cloud/one/var/images/
# vi centos.one
NAME = เซ็นโตส
ซีพียู = 1
หน่วยความจำ = 256
ดิสก์ = [
แหล่งที่มา = "/srv/cloud/one/var/images/centos.5.5.x86.img
เป้าหมาย = "sda1",
โคลน = "ใช่",
อ่านอย่างเดียว = "ไม่" ]
NIC = [ MAC = "00:16:3E:00:02:64", บริดจ์ = xenbr0 ]
ระบบปฏิบัติการ = [ bootloader = "/usr/bin/pygrub" ]
ใช้คำสั่ง onevm create เพื่อเริ่มไฟล์การกำหนดค่า VM ข้างต้น และเครื่องเสมือนจะถูกสร้างขึ้นบน node01 ใช้รายการ onevm เพื่อตรวจสอบและคุณจะเห็นสถานะ prol ซึ่งบ่งชี้ว่ากระบวนการสร้างอยู่ในระหว่างดำเนินการ หลังจากการสร้างเสร็จสมบูรณ์ สถานะจะเปลี่ยนเป็นทำงาน:
# onevm สร้าง centos.one
#รายการหนึ่งวีเอ็ม
ID ชื่อผู้ใช้ สถิติ CPU MEM ชื่อโฮสต์ เวลา
1 หนึ่งผู้ดูแลระบบ centos prol 0 0K node01 00 00:09:09
#รายการหนึ่งวีเอ็ม
ID ชื่อผู้ใช้ สถิติ CPU MEM ชื่อโฮสต์ เวลา
1 centos ผู้ดูแลระบบหนึ่งรัน 0 0K node01 00 00:22:17
ด้วยวิธีนี้ เราได้ปรับใช้ระบบคลาวด์ขั้นต่ำบนเซิร์ฟเวอร์สองเครื่อง ได้แก่ node00 (ด้านหน้า) และ node01 (โหนด) และรันอินสแตนซ์เครื่องเสมือนที่ใช้ Xen บน node01
ที่มาบทความ: http://www.vpsee.com/2011/02/install-opennebula-on-centos/