Vizible’s Blog

OpenNEbula I

Posted in Logs by wearetherock on April 28, 2008

ติดตั้ง OpenNEbula I

เรื่องของเรื่องก็คือ ตอนนี้พยายามติดตั้ง OpenNEbula (มีพี่ให้ช่วยทำ) คนที่ทำเค้าโฆษณาว่า ONE คือ Solution for on-Demand Provision of VMs เจอประโยคแรกก็แปลไม่ออกแล้วครับ มันคืออะไรก็ไม่รู้ ! รู้แต่ว่ามันจำลองอะไรสักอย่าง ?

ได้งานมานานแล้ว แต่เพิ่งเริ่มทำได้ไม่นาน เนื่องจากต้องฝึกงาน จันทร์-ศุกร์ เลยมีเวลาเหลือเฉพาะเสาร์-อาทิตย์

ที่ต้องพยายามติดตั้ง ไม่ได้เพื่อต้องการใช้ แต่ต้องการรู้กลไกการทำงานบางอย่าง ซึ่งอาจใช้ได้กับโปรเจคที่กำลังจะทำ คือ ก่อนจะได้ OpenNEbula ที่ใช้งานได้ ต้องทำหลายอย่างเอง ต้องเซ็ต NIS, NFS, SSH (ยังมี XEN ด้วย แต่คิดว่าไม่ค่อยเกี่ยวเท่าไหร่ !กับโปรเจค)

สิ่งที่เสร็จไปแล้วมี 3 อย่าง คือ
1. NIS : ติดตั้งและคอนฟิกให้ Client ทุกเครื่องล๊อกอินได้ โดยใช้ข้อมูล (username, password) จาก NIS Server
2. NFS : เมื่อ Login เสร็จ User ต้องอยู่ใน Home Directory ที่เมาท์ไปยัง NFS Server
3. SSH : ทำให้ User รีโมท(Secure Shell) ไปยังเครื่องใดก็ได้โดยไม่ต้องใช้ Password
(เหลือตัวสุดท้าย คือ xen ยังไม่รู้ว่าต้องทำอะไรบ้าง)

กว่าจะสำเร็จในแต่ละเรื่อง ก็ทุลักทุเลเหมือนกัน เพราะต้องปรับอะไรหลายอย่าง เช่น ต้องเปลี่ยน IP เครื่อง บางครั้งต้องเป็น Static (เข้ากับ switch เพื่อทดสอบการทำงานไม่ให้มั่วกับคนอื่น) บางครั้งต้องเป็น Dynamic (ต่อไปโหลด software มาลง) เปลี่ยนไปเปลี่ยนมาลืมเสียบสายแลนเข้าก็มี !

มีวิธีแก้ไขการติดตั้ง software ให้ง่ายขึ้น คือ จะทำเครื่องที่เป็น NIS+NFS Server เป็น Apt Proxy ด้วย เนื่องจากเครื่องนี้เป็นเครื่องเดียวที่มีแลน 2 ใบ ใบแรกต่อเน็ตได้ และอีกใบต่อเข้า Switch หลักการคือ จะให้เครื่องที่เป็น Proxy ทำหน้าที่โหลด Software มาเก็บไว้ใน Cache และให้เครื่อง Client ดึงไปใช้ (ถ้าจะให้โหลดมาลง Client ที่ละเครื่องก็ไม่ไหวเหมือนกัน Dependency พันกันไปหมด และ Client ก็มีหลายเครื่องด้วย !ตั้ง 2 เครื่อง)

ติดตั้งและคอนฟิก NIS

NIS ย่อมาจาก Network Information Service : เป็นเทคโนโลยีที่คิดโดย Sun มักจะรู้จักกันในชื่อ Sun Yellow Pages (YP) !ชื่อ Yellow Pages จดทะเบียนไม่ได้เพราะซ้ำกับของคนอื่น (แต่เวลาคอนฟิก มี YP เต็มไปหมด)

หน้าที่ของมัน คือ ทำให้เราสามารถ Login จาก Client เครื่องไหนก็ได้โดยใช้ Username/Password ที่เก็บอยู่ใน NIS Server (?)

เครื่อง NIS Server จะเป็นตัวเก็บระเบียนข้อมูลทั้งหมด เกี่ยวกับ Username/Password/Group ส่วนเครื่อง Client ที่อยู่ในเครือข่าย (ติดตั้ง NIS เหมือนกันแต่คอนฟิกต่าง) จะ sync กับเครื่อง Server ตลอดเวลาเพื่อ Update ฐานข้อมูล เราสามารถเดินเข้าไปล๊อกอินจากเครื่อง Client เครื่องไหนก็ได้โดยเครื่องนั้นไม่จะเป็นต้องมี Accout ของเราอยู่ (จะดึง Account ที่อยู่ใน Server แทน) แล้วมันมีประโยชน์อย่างไร?

เขียนเท่าที่รู้นะครับ อ่านๆ จากเอกสารที่พอมีอยู่ในเครื่อง (เน็ตหอใช้ไม่ได้หลายวันแล้ว Google เลยช่วยอะไรไม่ได้)

ตัวอย่างนี้ใช้ได้กับ Ubuntu Server 7.10 อันอื่นไม่แน่ใจว่าจะทำแบบนี้หรือเปล่า

คอนฟิก NIS Server

1. เพิ่มชื่อแล้ว IP ของเครื่อง Client เข้าไปในไฟล์ /etc/hosts เพื่อให้ NIS ยังทำงานได้ ในกรณีที่ DNS มีปัญหา

ตัวอย่าง
192.168.1.101 worker1
192.168.1.102 worker2

2. เพิ่มบรรทัดนี้เข้าไปในไฟล์ /etc/hosts.allow

portmap ypserv ypbind : list of IP Address

ตัวอย่าง
portmap ypserv ypbind : 192.168.1.

192.168.1. คือ ทุก IP ตั้งแต่ 192.168.1.0 – 192.168.1.255 (เครื่องผมใส่แบบนี้)

3. ติดตั้ง portmap, NIS

sudo apt-get install portmap nis

4. เปิดไฟล์ /etc/default/portmap และคอมเมนต์บรรทัดที่มี ARGS=”-i 127.0.0.1″
5. เปิดไฟล์ /etc/default/nis และเซ็ต NISSERVER=master (กำหนดให้เป็น Master Server)
6. เปิดไฟล์ /etc/yp.conf แล้วเพิ่มบรรทัด

domain <domainname> server <servername>

ตัวอย่าง
domain nisubu server ubuntuserver

domainname คือ ชื่อที่เราตั้งตอนติดต้อง nis (จะมีช่องให้กรอก)
servername คือ ชื่อที่อยู่ในไฟล์ /etc/defaultdomain

7. แก้ไฟล์ /var/yp/Makefile โดยให้เปลี่ยน MINGID จาก 1000 เป็น 1
8. เปิดไฟล์ /etc/ypserv.securenets เพื่ม IP ของ Host ในเครือข่ายเข้าไป

ตัวอย่าง
host 192.168.1.102
host 192.168.1.103

9. Build ฐานข้อมูล

sudo /usr/lib/yp/ypinit -m

อาจมี Error ขึ้นแต่ไม่เป็นไรเค้าบอกว่า okay

10. Restart Service

sudo /etc/init.d/portmap restart
sudo /etc/init.d/nis restart

11. ถ้ามีการเปลี่ยนหรือเพิ่ม User ต้อง Map ฐานข้อมูลใหม่ด้วย

sudo make -C /var/yp

ยังมีต่อ ในเรื่องของความปลอดภัยที่ต้องแก้อีกหลายไฟล์ แต่ไม่ขอพูดถึงเพราะมันจะยาวเกินไป (ผมก็ไม่ได้ทำตามเหมือนกัน)

คอนฟิก NIS Client
1. เพิ่มชื่อเครื่องและ IP ของ NIS Server ในไฟล์ /etc/hosts

ตัวอย่าง
192.168.1.101 ubuntuserver

2. ติดตั้งโปรแกรม

apt-get install portmap nis

3. เพิ่มบรรทัด

+:::::: ใน /etc/passwd
+::: ใน /etc/group
+:::::::: ใน /etc/shadow
เพื่ออะไร? ก็ไม่รู้เหมือนกัน

4. เปิดไฟล์ /etc/yp.conf ใส่ IP ของเครื่อง Server

ตัวอย่าง
ypserver 192.168.1.101

5. Restart NIS

sudo /etc/init.d/nis restart

เสร็จแล้วครับ : ทดลอง Logout แล้ว Login เข้าไปใหม่โดยใช้ Account ที่อยู่ในเครื่อง Server (Login ได้ แต่จะไม่มี Home Directory)
สงสัยว่า NIS กับ LDAP เกี่ยวข้องกันหรือเปล่า คุ้นๆ ว่าเคยอ่านเจอที่ไหน?

ติดตั้งและคอนฟิก NFS
NFS ย่อมาจาก Network File System เป็นเครื่องมือที่ช่วยให้สามารถใช้ไฟล์ร่วมกันได้ โดยการ share ผ่านเครือข่าย

NFS Server
1. เปิดไฟล์ /etc/hosts.deny เพิ่ม

portmap mountd nfsd statd lockd rquotad : ALL
เพื่อปฏิเสธทุก Client จะยอมให้เฉพาะ Client ที่อยู่ใน /etc/hosts.allow เท่านั้นที่สามารถ Access เข้ามายัง Server ได้

2. เปิดไฟล์ /etc/hosts.allow เพิ่ม

portmap mountd nfsd statd lockd rquotad : list of IP addresss
list of IP address คือ IP ของ Client ที่ยอมให้ Access
ตัวอย่าง
portmap mountd nfsd statd lockd rquotad : 192.168.1.
192.168.1. คือ ยอมทุก Client ตั้งแต่ 192.168.1.0 – 192.168.1.255

3. ติดตั้ง NFS Server

sudo apt-get install portmap nfs-kernel-server

4. Shares เปิดไฟล์ /etc/exports แล้วเพิ่มบรรทัด

/home 192.168.1.0/255.255.255.0(rw, async, no_subtree_check)
/opt/nebula 192.168.1.0/255.255.255.0(rw, async, no_subtree_check)

5. Export

sudo exportfs -ra

6. Restart portmap ถ้ามีการเปลี่ยนแปลง /etc/default/portmap

sudo /etc/init.d/portmap restart

7. Restart NFS

sudo /etc/init.d/nfs-kernel-server restart

NFS Client
1. ติดตั้ง

sudo apt-get install portmpa nfs-common

2. เปิดไฟล์ /etc/fstab เพิ่ม

ubuntu:/home /home nfs soft, intr, rsize=32768, wsize=32768, rw 0 0
ubuntu:/opt/nebula /opt/nebula nfs soft, intr, rsize=32768, wsize=32768, rw 0 0

ubuntu คือ ชื่อเครื่อง server

3. Mount

sudo mount -a

4. Logout แล้ว Login เข้าไปใหม่คราวนี้จะได้ Home Dorectory ด้วย

คอนฟิกให้สามารถล๊อกอินผ่าน SSH ไปยังเครื่องไหนก็ได้โดยไม่ต้องใช้ Password
1. สร้าง public และ private คีร์

ssh-keygen
ไฟล์ id_rsa กับ id_rsa.pub จะถูกเก็บอยู่ในโฟลเดอร์ ~/.ssh

2. นำ private คีร์ไปเก็บไว้ในไฟล์ authorized_keys

>> cd ~/.ssh
>> cat id_rsa.pub >> authorized_keys

3. ทดสอง SSH ไปยังเครื่องอื่น (ครั้งแรกมันจะถามอะไรสักอย่าง ให้ตอบ yes) ครั้งต่อไปมันจะไม่ถามอะไรเลยรวมทั้งไม่ต้องกรอก Password ด้วย

ข้อมูล

SettingUpNISHowTo

SettingUpNFSHowTo

OpenNEbula Documentation

How we can baby, how we can change and feel alright.

Advertisements
Tagged with: , , , ,

One Response

Subscribe to comments with RSS.

  1. Attasit said, on August 19, 2010 at 9:09 am

    ขอบคุณมากครับสำหรับบทความ คือว่าผมกำลังฝึกงานแล้วพี่ที่ฝึกงานเขาให้ผมมาศึกษา เรื่อง Opennebula นี่แหละครับ ผมพยายามติดตั้งลงใน Ubuntu10.04 แต่ก็ไม่สามารถติดตั้งได้ตามวิธีที่ใน web ของ opennebula ได้อะครับ แล้วก็หาบทความเกี่ยวกับ opennebula นี้ยากมากอะครับ ผมเลยอยากรบกวนอยากทราบรายละเอียดเกี่ยวกับ opennebula ให้มากกว่านี้หน่อยได้ไหมอะครับ ว่าสามารถนำไปประยุกต์ใช้กับอะัไรครับ เพราะผมยังมองไม่ค่อยเห็นภาพเท่าไหร่เลยอะครับ

    ขอบคุณมากครับ


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: