ทดลองติดตั้ง 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

เสร็จแล้วครับ

ที่มา

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้