Instalacja na centos 6.2
instalujemy „goły” system poprzez netinstall
wybieramy instalacja z podstawowym sterownikiem video
wybieramy nośnik http:
Ręcznie wypełniamy dla systemu 64bit :
http://mirror.centos.org/centos/6/os/x86_64/
Uzbrajamy się w cierpliwość, ściąganie potrafi trwać… długo.
yum install wget cd /etc/yum.repos.d wget http://download.openvz.org/openvz.repo rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ
Upewniamy się że wyłączone są repozytoria [openvz-kernel-rhel5] enabled=0 a włączone [openvz-kernel-rhel6] enabled=1
vi openvz.repo
Przeglądamy jeszcze dostępne wersje kernela openvz
yum search vzkernel
Instalujemy jądro
yum install vzkernel
Sprawdzamy czy domyślnie uruchmianym jądrem jest openvz
vi /boot/grub/menu.lst
partycje /vz/ umieszczamy na lvm
W /etc/fstab dodajemy obsługę quoty, przykładowo:
UUID=UIII67Hkh&Yi /vz ext3 defaults,usrquota,grpquota 1 1
Instalujemy narzędzia openvz
yum install vzctl vzquota
Poprawiamy parametry jądra
vi /etc/sysctl.conf
Wprowadzamy następujące poprawki:
# On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.ip_forward = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.default.proxy_arp = 0 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # We do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0
Zatwierdzamy je poleceniem :
sysctl -p
Aby virtualne podsieci mogły działać w różnych podsieciach edytujemy plik:
vi /etc/vz/vz.conf
i ustawiamy w nim :
[...] NEIGHBOUR_DEVS=all [...]
Wyłączamy selinux
vi /etc/sysconfig/selinux
SELINUX=disabled
Konfiguracja reguly_iptables i routingu
Wstawiamy następujace reguly (podsiec podajemy taka w ktorej pracuja nasze maszyny wirtualne.
iptables -I FORWARD 1 -s 192.168.0.0/24 -j ACCEPT iptables -I FORWARD 2 -d 192.168.0.0/24 -j ACCEPT
Reguły zapisujemy poprzez:
service iptables save
Waże by te reguly znalazly sie przed :
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Uruchamianie maszyn wirtualnych
vzctl create 101 --ostemplate ubuntu-12.04-x86_64 --conf basic vzctl set 101 --hostname test.example.com --save vzctl set 101 --ipadd 192.168.0.101 --save vzctl set 101 --numothersock 120 --save vzctl set 101 --nameserver 8.8.8.8 --nameserver 8.8.4.4 --nameserver 145.253.2.75 --save vzctl set 101 --passwd vzctl set 101 --cpulimit 50 --save vzctl set 101 --onboot yes --save
Sieć veth i venet
Najprościej konfiguruje sie interface venet. Śieć jest całkowicie zależna od hosta a konfiguracja jest bardzo prosta. Host całkowicie kontroluje sieć CT
venet vzctl set 101 –ipadd 192.168.0.101 –save
vzctl set 101 --nameserver 8.8.8.8 --nameserver 8.8.4.4 --nameserver 145.253.2.75 --save
aby CT mogły konfigurować sieć całkowicie niezależnie od hosta C0 należy skonfigurować interface veth ( virtualny incerface sieciowy ) z użyciem brigde ( który spełnia rolę wirtualnego switcha )
veth
yum install bridge-utils vzctl set 110 --netif_add eth0 --save vi /etc/sysconfig/network-scripts/ifcfg-en0
/etc/sysconfig/network-scripts/ifcfg-en0
# Broadcom Corporation NetXtreme BCM5722 Gigabit Ethernet PCI Express DEVICE=en0 TYPE=Bridge BOOTPROTO=static IPADDR=10.80.130.24 NETMASK=255.255.255.0 NETWORK=10.80.130.0 GATEWAY=10.80.130.5 USERCTL=no IPV6INIT=no FREEDNS=no ONBOOT=yes
Następnie konfigurujemy fizyczny interface eth0 tak by dołączył do bridge
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 BRIDGE=en0 HWADDR=00:1E:C9:D7:C8:9B ONBOOT=yes
Teraz powinniścmy dodać plki dla każdego interface CT ale jest to kłopotliwe przy wielu virtualach więc lepiej to zautomatyzować. polecenie modyfikujące plik /etc/vz/cznet.pl. Teraz na starcie będzie uruchamiana komenda dodająca interface sieciowy do bridge ( zakłada że domyslny bridge to vmbr0:
echo 'EXTERNAL_SCRIPT=”/usr/sbin/vznetaddbr”' > /etc/vz/vznet.conf
Na koniec restartujemy sieć:
/etc/init.d/network restart
Nadanie uprawnień do zmiany czasu dla CT:
vzctl set 101 --capability sys_time:on --save
Udostępnianie katalogów hosta dla CT
mount --bind /data/shared /vz/root/101/mnt/shared
instalujemy perla:
yum install Perl
Doinstalowujemy moduł :
rpm -ivh "http://pkgs.repoforge.org/perl-LockFile-Simple/perl-LockFile-Simple-0.207-1.el6.rf.noarch.rpm"
perl-lockfile-simple-0.207-1.el6.rf.noarch.rpm
oraz samego vzdump:
rpm -ivh "http://download.openvz.org/contrib/utils/vzdump/vzdump-1.2-4.noarch.rpm"
When trying to backup a virtual machine, creation of the snapshot can fail. This is because of a bug in VZDump.pm. In CentOS (and other RHEL derivatives), this file is located in /usr/share/perl5/PVE/VZDump.pm.
On line 622, you will find the following:
if ($line =~ m|^\s*(\S+):(\S+):(\d+(\.\d+))M$|) {
Replace this with:
if ($line =~ m|^\s*(\S+):(\S+):(\d+([\.,]\d+))[mM]$|) {
Save and close the file. Snapshots will now work with vzdump
Aby mieć pełną funkcjonalność firewalla należy odblokować odpowiednie moduły jądra do użytku pod kontenerem ct.
vim /etc/sysconfig/iptables-config
Edytujemy poniższą linię do postaci :
IPTABLES_MODULES="ipt_MASQUERADE ipt_helper ipt_REDIRECT ipt_REJECT tun ipt_tos ipt_TOS ipt_LOG ip_conntrack ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ip_nat_ftp"
następnie :
vim /etc/sysconfig/vz
IPTABLES="ipt_MASQUERADE ipt_helper ipt_REDIRECT ipt_REJECT tun ipt_tos ipt_TOS ipt_LOG ip_conntrack ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ip_nat_ftp"