Sunday, December 19, 2010

ทดลองติดตั้ง OpenVZ บน lenny

OpenVZ เป็นซอฟต์แวร์ที่ใช้ทำ virtualization ที่ใช้กับลินุกซ์เท่านั้น มีข้อแตกต่างจาก xen ตรงที่ใช้เพียงเคอร์เนลเดียว
ข้อดีคือ เร็วและพร้อมใช้
ข้อเสียคือ ไม่มีการ swap หน่วยความจำ ถ้าหน่วยความจำเต็ม โพรเซสที่มาทีหลังจะตายหมด
(แต่ก็ยังมีข้อดีในข้อเสีย คือ openvz จะบริหารการสลับหน่วยความจำระหว่าง guest OS อย่างมีประสิทธิภาพ และโพรเซสที่รันอยู่ก่อนที่หน่วยความจำจะเต็ม จะยังคงได้ความเร็วที่เกือบคงที่)

ข้อกำหนด

CPU: Intel E2140
M/B: ECS P4M890T-M V2.0
RAM: 4GB
Debian: Lenny
host: server1.example.com, 192.168.1.31, 2.6.26-2-openvz-686
guest-101: test.example.com, 192.168.1.131
vz-partition: /dev/sda9

ติดตั้ง

เริ่มบน lenny
# aptitude install linux-image-2.6.26-2-openvz-686 vzctl vzquota
แก้ไขระบบตามคู่มือ
# vi /etc/sysctl.conf
...
#openvz
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp=1
...
สั่งปรับให้มีผลทันที
# sysctl -p
แก้ระบบเน็ตเวิร์คสำหรับ guest ตามคำแนะนำ
# vi /etc/vz/vz.conf
...
# Controls which interfaces to send ARP requests and modify APR tables on.
#NEIGHBOUR_DEVS=detect
NEIGHBOUR_DEVS=all
...
บูตใหม่
# shutdown -r now
ตรวจผลหลังการบูต
# uname -r
2.6.26-2-openvz-686
สมมุติว่าจะติดตั้งระบบ openvz container ไว้ที่ /dev/sda9 ที่ฟอร์แมตเป็น ext3 ไว้เรียบร้อยแล้ว
สั่งหยุดเพิ่อปรับระบบ
# /etc/init.d/vz stop
แก้ไข fstab เพื่อให้เมานท์ที่ /var/lib/vz อัตโนมัติ
# vi /etc/fstab
...
/dev/sda9       /var/lib/vz     ext3    defaults        0       2
...
ย้ายไฟล์ที่ติดตั้งแล้วมาที่ /dev/sda9 แล้วเริ่ม openvz ใหม่
# mkdir /mnt/tmp
# mount /dev/sda9 /mnt/tmp
# mv /var/lib/vz/* /mnt/tmp
# umount /mnt/tmp
# mount -a
# /etc/init.d/vz start
เนื่องจากค่าไฟล์คอนฟิกของ openvz นั้น ปรับตั้งยากมาก เราเลยจะเอา util ของเขามาใช้เป็นตัวอย่าง
ไปที่ที่เก็บไฟล์คอนฟิก
# cd /etc/vz/conf
สร้างตัวอย่างไฟล์คอนฟิก โดยสมมุติว่าเราจะแบ่งให้เซิร์ฟเวอร์เครื่องนี้มี 4 guest OS โดยให้ชื่อ ID (ของอันแรก) ว่า 101
# vzsplit -n 4 > 101.conf
ปรับแต่งค่าอื่น ๆ ของ guest ตามการกำหนดข้างต้น
# vzctl set 101 --onboot yes --save
# vzctl set 101 --hostname test.example.com --save
# vzctl set 101 --ipadd 192.168.1.131 --save
# vzctl set 101 --nameserver ns1.example.com --save
ติดตั้ง guest OS โดยไปดาวน์โหลด template มาจาก debian.systs.org
# cd /var/lib/vz/template/cache/
# wget http://debian.systs.org/ostemplates/debian-5.0-i386-minimal.tar.gz
ติดตั้ง
# vzctl create 101 --ostemplate debian-5.0-i386-minimal
หากต้องการคัดลอก apt source-list ก็สามารถคัดลอกจาก host ไปใช้ได้
# cp /etc/apt/sources.list /var/lib/vz/private/101/etc/apt
เริ่มระบบ
# vzctl start 101 
ตั้งรหัสผ่านของ root ให้ guest OS
# vzctl exec 101 passwd
ใช้งานผ่าน vzctl
# vzctl enter 102
(ออกด้วย exit)
หรือใช้งานผ่าน ssh
# ssh root@test.example.com
ติดตั้งส่วนของ guest ที่ยังเหลืออยู่
# aptitude update
# aptitude install console-data locales
# dpkg-reconfigure locales
# aptitude upgrade
เสร็จแล้วครับ

ที่มา

0 comments:

Post a Comment

 
Design by GURU