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

OpenVZ เป็นซอฟต์แวร์ที่ใช้ทำ virtualization ที่ใช้กับลินุกซ์เท่านั้น
มีข้อแตกต่างจาก xen ตรงที่ใช้เพียงเคอร์เนลเดียว

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

กำหนด
cpu: Intel E2140
mb: 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 โดยให้ชื่อไอดี (ของอันแรก) ว่า 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 

ตั้งรหัสผ่านของ guest ให้ root

# 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

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

ที่มา

debian: บันทึกติดตั้ง WebVZ บน lenny

WebVZ เป็นโปรแกรมจัดการ OpenVZ แบบ web based
ตอนนี้ยังทำอะไรไม่ได้มาก แต่ติดตั้งไว้ก็ดี เผื่อทำงานอะไรเล็ก ๆ น้อย ๆ

สมมุติว่าเครื่องหลักมีไอพี 192.168.1.31

# aptitude install ruby rubygems libsqlite3-ruby sqlite3 rails
# gem install -v=2.1.0 rails    #รอ 1 เพลิน
# ln -sf /var/lib/vz /
# cd /usr/local
# wget http://downloads.sourceforge.net/project/webvz/webvz/webvz%202.0/webvz.2.0.tar.gz
# tar xfz webvz.2.0.tar.gz 
# ln -sf webvz.2.0 webvz
# cd webvz
# ruby script/server -b 192.168.1.31

เครื่องอื่น ๆ ในวง สามารถใช้งานผ่าน url: http://192.168.1.31:3000
user: admin
pass: admin123

เสร็จแล้ว

ที่มา

webvz: ทำ container ใช้เอง

บันทึกการทำ container ใช้เอง ด้วย debootstrap

# aptitude install debootstrap
# cd /var/lib/vz/private
# mkdir 1001
# debootstrap --arch=amd64 lenny 1001 http://server1.example.com:9999/debian
# cp /etc/apt/sources.list 1001/etc/apt/
# chroot 1001
# aptitude install console-data locales ssh screen less vim
# dpkg-reconfigure locales
# passwd
# aptitude update
# aptitude upgrade
# vi /etc/inittab
...
ตัดทิ้ง--------8<---------------------
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6
จบตัดทิ้ง--------->8--------------------
...

(อาจติดตั้งแพกเกจ หรือปรับแต่งค่าอื่น ๆ ที่จำเป็นเพิ่มได้)

# exit

เก็บไว้ใช้ในโอกาสต่อไป

# cd 1001
# tar cfz ../debian.tar.gz *

เที่ยวหลังก็สามารถแตกไฟล์ออกมาใช้งานได้ เช่น

# mkdir 1002
# cd 1002
# tar xfz ../debian.tar.gz

เป็นต้น