Nun starten wir unser System neu (mit reboot) und loggen uns wider ein. Um zu kontrollieren ob der richtige Kernel geladen wurde verwenen wir den Befehl:
uname -r
2.6.18-164.10.1.el5.028stab067.4
Anlegen eines Containers
Zuerst brauchen wir ein Template für einseren Container, das ist ein fertiges System, dass anschließend im Container ausgeführt wird und mit dem wir artbeiten können.
OpenVZ stellt einige Templates auf ihrer Seite zur verfügung. Das CentOS 5 Template laden wir mit folgenden Befehlen herunter.
cd /vz/template/cache
wget http://download.openvz.org/template/precreated/contrib/centos-5-i386-default.tar.gz
Um unsreren Container nun mit diesem Template zu erszeugen geben wir folgenden Befehl ein:
vzctl create 101 --ostemplate centos-5-i386-default --config vps.basic
Die Nummer 101 ist der Name unter der unser Container nun konfiguriert werden kann.
Um den Container nun zu konfiguriern wird das Programm vzctl benutzt:
vzctl set 101 --hostname webspace.die-lega.org --save
Damit wird der Hostname unseres Containers gesetzt
vzctl set 101 --diskspace $(( 1048576*50 )):$(( 1153434*50 )) --save
Hiermit stellen wir unsere Festplattengröße auf 50GB (Soft,Hardlimit)
vzctl set 101 --ipadd 192.168.11.101 --save
Damit setzten wir die IP Adresse (entweder eine öffentliche oder eine Private (nur interne), die dann mit iptables und NAT auf die öffentliche vom Server umgesetzt werden muss
vzctl set 101 --onboot yes --save
Soll der Container beim start mitgestartet werden
vzctl set 101 --nameserver 213.133.99.99 --nameserver 213.133.100.100 --nameserver 213.133.98.98 --save
Die Nameserver setzen
vzctl exec 101 passwd
Das root Passwort unseres Containers setzen
vzctl set 101 --vmguarpages $((256 * 512)) --save
Den Garantierten RAM setzen (mindestgröße)
vzctl set 101 --privvmpages $((256 * 2048)) --save
Den Maximalen RAM setzen (könnte bis auf mindesgröße verkleiner werden)
vzctl start 101
Hiermit starten wir die Maschine
Betrieb & Überwachung eines Containers
Hier einiege Befehle die für den Betrieb eines Containers wichtig sind:
Öffnen eines Containers:
/usr/sbin/vzctl enter 101
Verlassen eines Containers:
exit
Speicherverbrauch anzeigen:
vzcalc -v vpsid
Festplattenverbeuacht:
vzquota stat vpsid
Einschalten:
/usr/sbin/vzctl start 101
Ausschalten:
/usr/sbin/vzctl stop 101
Netzwerk konfiguration
Standardmäßig ist bei CentOS netfilter (iptables) aktiviert und lässt nur eingehende Verbindung auf bestimmten Ports zu (zB ssh).
Es wird auch empfohlen sich über iptables zu informieren, damit man weiß was man hier tut, sonst sperrt man sich sehr schnell aus seinem eigenen Server aus.
Um nun unseren Containern den Zugang zum Netz zu gewähren müssen einige Regeln hinzugefügt werden:
Wenn wir private IP auf unseren Container verwenden zB.: das Netz 192.168.11.0/24 also alle Adressen von 192.168.11.1 – 192.168.11.254 müssen wir NAT konfigurieren:
iptables -I POSTROUTING -s 192.168.11.0/255.255.255.0 -o eth0 -j SNAT --to-source X.X.X.X
Damit werden alle Pakete vom Netz 192.168.11.0/24 auf die Adresse x.x.x.x (die öffentliche Adresse des Servers) umgesetzt. Sollte der Server keine fixe IP Adresse haben, dann sollte statt SNAT MASQUERATE verwendet werden.
iptables -I POSTROUTING -s 192.168.11.0/255.255.255.0 -o eth0 -j MASQUERATE
Zusätzlich müssen aber noch die Pakete erlaubt werden:
iptables -I FORWARD -s 192.168.11.0/255.255.255.0 -j ACCEPT
iptables -I FORWARD -d 192.168.11.0/255.255.255.0 -j ACCEPT
Damit werden alle Pakte von und zu unserem Netz die geroutet werden (nicht zu unserem Server gehen) erlaubt.
Hat der Container eine öffentliche IP Adresse müssen nur die Paket von und zu dieser Adresse erlaubt werden:
iptables -I FORWARD -s X.X.X.X -j ACCEPT
iptables -I FORWARD -d X.X.X.X -j ACCEPT
Es können so auch in einem Container eine öffentliche Adresse und in anderen private Adressen verwendet werden.
Um die Konfiguration von iptables dauerthauft zu speichern führen wir folgenden Befehl aus:
/sbin/iptables-save > /etc/sysconfig/iptables
Damit sollte alles funktionieren und es können eine beligebe Anzahl von weiteren Containern angelegt werden.