Cách tạotemplateOpenVZ trên Debian
Wheezy (Testing)
Trong bài viết trước, các bạn đã được hướng dẫn cách cài đặt và sử dụng
OpenVZ trên CentOS 6.0. Sau khi đã quen thuộc với công nghệ OpenVZ,
hôm nay chúng ta sẽ tiến hành tạo một templateOpenVZ cho DebianWheezy
(Debian Testing), từ đó bạn có thể sử dụng để tạo máy ảo DebianWheezy
trong OpenVZ. Bạn cũng có thể thực hiện hướng dẫn này để tạotemplate cho
Debian Lenny hoặc các phiên bản Ubuntu gần đây.
Chuẩn bị hệ thống Host
Lưu ý các bước này cần thực hiện trên hệ thống máy chủ!
Trước tiên chúng ta tiến hành cài đặt deboostrap cho Wheezy guest:
apt-get install debootstrap
Tiếp theo hãy chắc chắn rằng /vz là một symlink tới /var/lib/vz:
ln -s /var/lib/vz /vz
Bây giờ chúng ta cài đặt phiên bản 64-bit của DebianWheezy trong thư mục
/vz/private/777 (với 777 là container ID của Wheezy guest; bạn có thể thay bằng
con số khác nếu muốn).
debootstrap arch amd64 wheezy /vz/private/777
ftp://ftp.de.debian.org/debian/
Giả sử chúng ta muốn tạo một template cho i386, câu lệnh sẽ như sau:
debootstrap arch i386 wheezy /vz/private/777
ftp://ftp.de.debian.org/debian/
Hãy chắc chắn rằng bạn sử dụng một mirror Debian gần với mình nhất. Ở đây
chúng tôi dùng mirror từ Đức: ftp://ftp.de.debian.org/debian/; bạn có thể thay thế
de bằng mã quốc gia của mình, chẳng hạn ftp://ftp.fr.debian.org/debian/ (Pháp)
hoặc ftp://ftp.us.debian.org/debian/ (Mỹ).
Sau đó mở /etc/sysctl.conf:
vi /etc/sysctl.conf
Và thêm vào như dưới đây để thiết lập:
[ ]
### OpenVZ settings
# On Hardware Node we generally need packet
# forwarding enabled and proxy arp disabled
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
# Enables source route verification
net.ipv4.conf.all.rp_filter = 1
# Enables the magic-sysrq key
kernel.sysrq = 1
# TCP Explict Congestion Notification
net.ipv4.tcp_ecn = 0
# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
Chạy lệnh:
sysctl -p
để những thay đổi có hiệu lực.
Tiếp theo chúng ta áp dụng một cấu hình OpenVZ cơ bản cho container:
vzctl set 777 applyconfig basic save
Một cảnh báo sau đây xuất hiện, hãy bỏ qua nó.
root@server1:~# vzctl set 777 applyconfig basic
save
WARNING: /etc/vz/conf/777.conf not found: No such file
or directory
Saved parameters for CT 777
root@server1:~#
Dòng lệnh cuối cùng đã tạo ra một /etc/vz/conf/777.conf cho nội dung của chúng
ta. Tiếp theo cần thêm biến OSTEMPLATE cho nó:
sh -c 'echo OSTEMPLATE=\"debian-7.0\"' >>
/etc/vz/conf/777.conf
Bạn có thể thay thế debian-7.0 bởi giá trị thích hợp cho distribution của mình để
sử dụng template mới. Ví dụ: debian-6.0 cho Debian Squeeze hoặc ubuntu-11.04
cho Ubuntu 11.04.
Tiếp theo chúng ta thêm một địa chỉ IP miễn phí từ subnet cho container mới và
thiết lập ít nhất một nameserver chứa container để truy cập vào Internet. Ở đây
chúng tôi đang trong mạng 192.168.0.x, vì vậy sẽ gán 192.168.0.110 cho
container, đồng thời sử dụng nameservers của Google (8.8.8.8 và 8.8.4.4):
vzctl set 777 ipadd 192.168.0.110 save
vzctl set 777 nameserver 8.8.8.8 nameserver 8.8.4.4
save
Kiểm tra nếu /var/lib/vz/private/777/dev/ptmx tồn tại:
ls -l /var/lib/vz/private/777/dev/ptmx
thì bạn sẽ thấy nội dung sau:
root@server1:~# ls -l /var/lib/vz/private/777/dev/ptmx
crw-rw-rw-
1 root tty 5, 2 Mar 4 12:53 /var/lib/vz/private/777/d
ev/ptmx
root@server1:~#
Ngược lại, hãy tạo nó bằng cách:
mknod mode 666 /var/lib/vz/private/777/dev/ptmx c 5 2
Khởi động container:
vzctl start 777
Và nhập vào:
vzctl enter 777
Chuẩn bị Container
Các bước tiếp theo phải được thực hiện trong Container!
Thiết lập biến PATH:
export
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin
Mở /etc/apt/sources.list:
vi /etc/apt/sources.list
Và làm cho nó trông như thế này:
deb http://ftp.de.debian.org/debian wheezy main contrib
deb http://security.debian.org wheezy/updates main
contrib
(một lần nữa hãy chắc chắn rằng bạn sử dụng một mirror Debian gần nhất với
mình).
Cập nhật gói cơ sở dữ liệu:
apt-get update
Và cài đặt các bản cập nhật mới nhất:
apt-get upgrade
Bây giờ bạn có thể cài đặt toàn bộ các gói mà muốn cung cấp cho template
OpenVZ. Thiết lập tối thiểu cho chúng như sau:
apt-get install ssh quota less vim-nox
Gán quyền chính xác cho thư mục /root:
chmod 700 /root
Ngoài ra, Nếu muốn bạn có thể vô hiệu hóa đăng nhập root:
usermod -L root
Tuy nhiên trong bài này chúng tôi vẫn sử dụng root nên bỏ qua lệnh này.
Tiếp theo chúng ta vô hiệu hóa getty, sync() cho syslog và sửa chữa /etc/mtab:
sed -i -e '/getty/d' /etc/inittab
sed -i -e 's@\([[:space:]]\)\(/var/log/\)@\1-\2@'
/etc/*syslog.conf
rm -f /etc/mtab
ln -s /proc/mounts /etc/mtab
Loại bỏ những gói không muốn cung cấp cho template:
dpkg purge modutils ppp pppoeconf pppoe pppconfig
module-init-tools
Loại bỏ các liên kết startup hệ thống cho một vài dịch vụ:
update-rc.d-insserv -f klogd remove
update-rc.d-insserv -f quotarpc remove
update-rc.d-insserv -f exim4 remove
update-rc.d-insserv -f inetd remove
Mỗi container được tạo từ template này cần có các cặp key SSH, vì vậy chúng ta
sẽ xóa key SSH khỏi container:
rm -f /etc/ssh/ssh_host_*
Rồi tạo một script tự động tạo cặp key SSH cho lần đầu tiên khởi động:
vi /etc/init.d/ssh_gen_host_keys
#!/bin/sh
### BEGIN INIT INFO
# Provides: Generates new ssh host keys on
first boot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Generates new ssh host keys on
first boot
# Description: Generates new ssh host keys on
first boot
### END INIT INFO
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ""
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ""
insserv -r /etc/init.d/ssh_gen_host_keys
rm -f \$0
Thực thi script này và thêm các liên kết cho hệ thống startup:
chmod a+x /etc/init.d/ssh_gen_host_keys
insserv /etc/init.d/ssh_gen_host_keys
Tiếp theo cần điều chỉnh lại timezone (múi giờ):
dpkg-reconfigure tzdata
Làm sạch bộ nhớ đệm cho các gói:
apt-get purge clean
Thoát khỏi container
exit
Dọn dẹp, tạoTemplate và thử nghiệm
Các bước này phải thực hiện trên hệ thống máy chủ!
Bây giờ chúng ta sẽ loại bỏ IP address, nameservers, và hostname từ container:
vzctl set 777 ipdel all save
cat /dev/null > /vz/private/777/etc/resolv.conf
rm -f /vz/private/777/etc/hostname
Dừng các container:
vzctl stop 777
Chuyển tới thư mục container:
cd /vz/private/777
Tạo template:
tar numeric-owner -zcf /vz/template/cache/debian-7.0-
amd64-minimal.tar.gz .
(Lưu ý không được bỏ qua dấu chấm ở cuối lệnh).
Xem trong thư mục /vz/template/cache bạn sẽ tìm thấy template mới.
ls -lh /vz/template/cache
root@server1:/vz/private/777# ls -lh /vz/template/cache
total 194M
-rw-r r 1 root root 80M Feb 7 2011 debian-6.0-
amd64-minimal.tar.gz
-rw-r r 1 root root 114M Sep 1 22:55 debian-7.0-
amd64-minimal.tar.gz
root@server1:/vz/private/777#
Vậy là bạn đã tạo ra một templateOpenVZ đầu tiên.
Bây giờ chúng ta sẽ tạo container từ template này để thử nghiệm. Ví dụ dùng ID
888:
vzctl create 888 ostemplate debian-7.0-amd64-minimal
Khởi động nó:
vzctl start 888
Và kiểm tra xem có chạy thành công hay không bằng cách xem danh sách tiến
trình của nó. Nếu không có danh sách nào chứng tỏ bạn đã thất bại.
vzctl exec 888 ps ax
root@server1:/vz/private/777# vzctl exec 888 ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 init [2]
316 ? Sl 0:00 /usr/sbin/rsyslogd -c5
326 ? Ss 0:00 /usr/sbin/cron
335 ? Ss 0:00 /usr/bin/dbus-daemon
system
344 ? Ss 0:00 /usr/sbin/sshd
358 ? Rs 0:00 ps ax
root@server1:/vz/private/777#
Sau khi kiểm tra hoạt động, chúng ta cho dừng lại và loại bỏ container thử nghiệm:
vzctl stop 888
vzctl destroy 888
rm /etc/vz/conf/888.conf.destroyed
Nếu không cần đến container nữa, tốt nhất hãy loại bỏ nó.
cd
vzctl destroy 777
rm /etc/vz/conf/777.conf.destroyed
Nếu bạn muốn sử dụng template mới làm mặc định cho template khi tạo container
(để không còn phải xác định ostemplate debian-7.0-amd64-minimal trong lệnh
vzctl create), có thể chỉnh sửa biến DEF_OSTEMPLATE trong /etc/vz/vz.conf:
vi /etc/vz/vz.conf
[ ]
DEF_OSTEMPLATE="debian-7.0-amd64-minimal"
[ ]
. Cách tạo template OpenVZ trên Debian
Wheezy (Testing)
Trong bài viết trước, các bạn đã được hướng dẫn cách cài đặt và sử dụng
OpenVZ trên CentOS. nghệ OpenVZ,
hôm nay chúng ta sẽ tiến hành tạo một template OpenVZ cho Debian Wheezy
(Debian Testing), từ đó bạn có thể sử dụng để tạo máy ảo Debian Wheezy