Come installare OpenVZ su CentOS 6.3


In questa guida vi illustrerò come poter installare ed utilizzare OpenVZ, un sistema di virtualizzazione completamente opensource come branch gratuito di Virtuozzo.

Per il nostro test abbiamo utilizzato Centos 6.3 gratuitamente scaricabile dal sito di Centos, non tratteremo in questa sede l’installazione del sistema operativo in se in quanto abbastanza banale (windows 2 la vendetta).

Tale sistema non crea delle vere e proprioe macchine virtuali (come VmWare), ma piuttosto crea dei Virtual Private Server un qualcosa di simile ad un chroot per capirci.

Vediamo brevemente i pro e i contro di questo sistema

Pro

– Performance: da delle prove fatte pare che l’overhead rispetto al sistema fisico sia attorno all’1-3% quindi molto più performante rispetto a qualunque altro sistema

– Modifiche delle risorse on-the-fly

– Template già pronti, con pochi comandi è possile avere una macchina virtuale up and running

– Patchando il kernel del server fisico si patchano in un unico colpo tutti quelli delle macchine virtuali hostate

Contro

– Essendo il sistema legato al kernel sottostante non è possibile creare macchine virtuali windows o di altri sistemi operativi che non siano linux based

– Poca possibilità di configurazione, di fatto tutte le vm usano la stessa versione di kernel

– Il settaggio delle risorse può diventare piuttosto complicato in ambienti complessi

– Non puoi installare versioni a piacimento delle distro Linux se non quelle per cui hai il template

– Non c’è un interfaccia grafica decente per la gestione è tutto riga di comando

– L’utente non ha il controllo della macchina virtuale in caso di blocco del sistema

Iniziamo!

1. Installazione di OpenVZ

Innanzitutto aggiungiamo un paio di software che ci torneranno utili e i repository di OpenVZ

yum install wget nano
cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ

Editiamo ora il file openvz.repo

nano openvz.repo

il file dovrebbe essere già corretto ma controllate di aver disabilitato [openvz-kernel-rhel5] con l’opzione enabled a 0, e di aver invece abilitato [openvz-kernel-rhel6] con enabled a 1, avendo il file come quello sotto riportato.

[...]
[openvz-kernel-rhel5]
name=OpenVZ RHEL5-based kernel
#baseurl=http://download.openvz.org/kernel/branches/rhel5-2.6.18/current/
mirrorlist=http://download.openvz.org/kernel/mirrors-rhel5-2.6.18
enabled=0
gpgcheck=1
gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ
[...]
[openvz-kernel-rhel6]
name=OpenVZ RHEL6-based kernel
#baseurl=http://download.openvz.org/kernel/branches/rhel6-2.6.32/current/
mirrorlist=http://download.openvz.org/kernel/mirrors-rhel6-2.6.32
enabled=1
gpgcheck=1
gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ
[...]

Installiamo ora il kernel con supporto OpenVZ con il comando

yum install vzkernel

ed installiamo gli OpenVZ Tools

yum install vzctl vzquota

Editiamo il file /etc/sysctl.conf abilitando un paio di cosette per il funzionamento del networking, assicuratevi che le voci indicate abbiano gli stessi valori

[...]
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
[...]

Se avete dovuto effettuare delle modifiche a questo file allora è necessario eseguire il comando

sysctl -p

ATTENZIONE: se la macchina virtuale utilizzare un indirizzo IP di una subnet non appartenente alla macchina host sotto, allora dovrete apportare anche una modifica al file di configurazione /etc/vz/vz.conf

nano /etc/vz/vz.conf

e modificate la riga seguente

[...]
NEIGHBOUR_DEVS=all
[...]

Disabilitiamo SELinux

nano /etc/sysconfig/selinux

ed editiamo la riga SELINUX=disabled

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

Dobbiamo inoltre modificare le regole di iptables del nodo fisico

nano /etc/sysconfig/iptables

qua commentiamo le due righe

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

in modo da ottenere

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

A questo punto diamo un bel reboot al sistema

reboot

2. Utilizzare OpenVZ

Per prima cosa andiamo a questo indirizzo http://wiki.openvz.org/Download/template/precreated, qui abbiamo una lista di template di macchine virtuali già pronte solo da scaricare e mettere nell’apposita cartella. Nel nostro esempio vogliamo installare una debian 6.0 a 64 bit procediamo quindi con

cd /vz/template/cache
wget http://download.openvz.org/template/precreated/debian-6.0-x86_64.tar.gz

Creiamo ora la macchina virtuale con il comando

vzctl create 101 --ostemplate debian-6.0-x86_64 --config basic

101 = ID univoco della macchina

debian-6.0-x86_64 = è il template che vogliamo usare che corrisponde al nome del file senza l’estensione .tar.gz

Se vogliamo fare in modo che la macchina venga avviata al boot del sistema allora dobbiamo lanciare il comando

vzctl set 101 --onboot yes --save

Configuriamo poi l’hostname e l’indirizzo ip della macchina

vzctl set 101 --hostname test.temporini.net --save
vzctl set 101 --ipadd 192.168.0.200 --save

Assegnamo ora il numero dei socket e i nameserver da attribuire alla macchina

vzctl set 101 --numothersock 120 --save
vzctl set 101 --nameserver 8.8.8.8 --nameserver 8.8.4.4 --save

Per avviare la macchina procediamo con

vzctl start 101

settiamo la password di root

vzctl exec 101 passwd

A questo punto possiamo colelegarci alla macchina in due modi o tramite ssh oppure direttametne dalla shell con il comando

vzctl enter 101

per uscire basta un bel

exit

Per fermare la macchina virtuale basta un bel

vzctl stop 101

Per riavviarla

vzctl restart 101

Per eliminarla

vzctl destroy 101

Con il seguente comando invece vediamo quali sono le macchine virtuali in esecuzione

vzlist -a

[[email protected] cache]# vzlist -a
CTID      NPROC STATUS    IP_ADDR         HOSTNAME
101         14 running   192.168.0.2001   test.temporini.net
[[email protected] cache]#

Per vedere le risorse allocate ad una VM

vzctl exec 101 cat /proc/user_beancounters

3. Modifiche on-the-fly alle risorse della macchina virtuale

Una delle comodità di questo sistema è il fatto di poter apportare delle modifiche hardware alle macchine virtuali senza bisogno di doverle spegnere o riavviare. Con il seguente comando

cid=101
vzctl set ${cid} --vmguarpages 256M --save
vzctl set ${cid} --oomguarpages 256M --save
vzctl set ${cid} --privvmpages 256M:348M --save

modifichiamo al volo la ram assegnata ad una macchina virtuale, assegnando 256MB di ram dedicati e 348MB a burts in caso di necessità nei momenti di massimo carico

Con quest’altro comando invece

cid=101
vzctl set ${cid} --diskspace 3G:4G --save

modifichiamo lo spazio assegnato ad una VM 3GB di disco statici e $G temporanei in caso di necessità

Con il parametro –save alla fine del comando la modifica viene fatta in realtime sulla macchina virtuale e viene scritta nel file di configurazione della VM, in modo da tenerlo memorizzato al prossimo riavvio.

, , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Per postare il commento, risolvi il quesito sottostante * Time limit is exhausted. Please reload CAPTCHA.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.