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 template OpenVZ cho Debian Wheezy (Debian Testing), từ đó bạn có thể sử dụng để tạo máy ảo Debian Wheezy trong OpenVZ.
<>Bạn cũng có thể thực hiện hướng dẫn này để tạo template 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 Debian Wheezy 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ỹ). 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 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 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 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ị ContainerCá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 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 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 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ạo Template và thử nghiệmCá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 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 Vậy là bạn đã tạo ra một template OpenVZ đầ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 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 Nếu không cần đến container nữa, tốt nhất hãy loại bỏ nó. cd 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ác link tham khảo trong bài: OpenVZ: http://openvz.org/ |