Installation und Gebrauch von OpenVZ auf CentOS 6.0

Version 1.0

Author: Falko Timme ,  Christian Schmalfeld <c [dot] schmalfeld [at]  projektfarm [dot] de>
Follow me on Twitter


In diesem HowTo geht es darum, wie man einen CentOS 6.0 Server für OpenVZ vorbereitet. Mit OpenVZ lassen sich vielfache Virtual Private Servers (VPS) auf der selben Hardware erstellen, ähnlich dem Linux Vserver project oder Xen. OpenVZ ist der Open-Source Zweig vonVirtuozzo, einer kommerziellen Virtualisationslösung, die von vielen Providern genutzt wird, welche virtuelle Server anbieten. Der OpenVZ Kernelpatch ist unter der GPL Lizenz lizensiert, die User-level tools unter der QPL Lizenz.

Das Tutorial soll ein Wegweiser für die Praxis sein, die theoretischen Hintergründe werden bereits in vielen anderen Dokumenten im Internet behandelt.

Ich gebe für dieses Tutorial keinerlei Garantie. Der hier beschriebene Weg ist nicht der einzige, einen solchen Server aufzusetzen.

1 Installation von OpenVZ

Um OpenVZ zu installieren, müssen Sie die OpenVZ Repository zu yum hinzufügen:

cd /etc/yum.repos.d

wget http://download.openvz.org/openvz.repo

rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ

Öffnen Sie nun openvz.repo...

vi openvz.repo

... und deaktivieren Sie die [openvz-kernel-rhel5] Repository (enabled=0) , aktivieren Sie stattdessen die [openvz-kernel-rhel6] Repository (enabled=1):
[...]
[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 [...]
Die Repository beinhaltet einige unterschiedliche OpenVZ kernels (Sie können unter http://wiki.openvz.org/Kernel_flavors mehr über diese in Erfahrung bringen). Der Befehl

yum search vzkernel

zeigt Ihnen die verfügbaren Kernels:

[root@server1 yum.repos.d]# yum search vzkernel

[...]

vzkernel.i686 : The Linux kernel

vzkernel.x86_64 : The Linux kernel

vzkernel-debug.i686 : The Linux kernel compiled with extra debugging
enabled

vzkernel-debug.x86_64 : The Linux kernel compiled with extra debugging
enabled

vzkernel-debug-devel.i686 : Development package for building kernel
modules to match the debug kernel

vzkernel-debug-devel.x86_64 : Development package for building kernel
modules to match the debug kernel

vzkernel-devel.i686 : Development package for building kernel modules
to match the kernel

vzkernel-devel.x86_64 : Development package for building kernel modules
to match the kernel

vzkernel-firmware.noarch : Firmware files used by the Linux kernel

vzkernel-headers.i686 : Header files for the Linux kernel for use by
glibc

vzkernel-headers.x86_64 : Header files for the Linux kernel for use by
glibc

[root@server1 yum.repos.d]#

Wählen Sie einen aus und installieren Sie ihn wie folgt:

yum install vzkernel

Dies sollte automatisch auch den GRUB bootloader updaten. Öffnen Sie nun /boot/grub/menu.lst; der erste Kernel Ansatz sollte nun den neuen OpenVZ Kernel enthalten. Der Name des Kernels ist zur Zeit "CentOS Linux ". Es wäre eine gute Idee den Namen zu ändern und etwas mit "OpenVZ" hinzuzufügen, sodass Sie später wissen, dass dies der OpenVZ Kernel ist. Stellen Sie ebenfalls sicher, dass der Wert von default gleich 0 ist, sodass der erste Kernel (der OpenVZ Kernel) automatisch statt des Standart-CentOS-Kernels gestartet wird.

vi /boot/grub/menu.lst


# grub.conf generated by anaconda
# # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/vg_server1-lv_root # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS Linux OpenVZ (2.6.32-042stab020.1) root (hd0,0) kernel /vmlinuz-2.6.32-042stab020.1 ro root=/dev/mapper/vg_server1-lv_root rd_LVM_LV=vg_server1/lv_root rd_LVM_LV=vg_server1/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=de crashkernel=auto rhgb quiet initrd /initramfs-2.6.32-042stab020.1.img title CentOS (2.6.32-71.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-71.el6.x86_64 ro root=/dev/mapper/vg_server1-lv_root rd_LVM_LV=vg_server1/lv_root rd_LVM_LV=vg_server1/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=de crashkernel=auto rhgb quiet initrd /initramfs-2.6.32-71.el6.x86_64.img
Nun installieren Sie einige OpenVZ Benutzerwerkzeuge:

yum install vzctl vzquota

Öffnen Sie /etc/sysctl.conf und stellen Sie sicher, dass die folgenden Einstellungen enthalten sind:

vi /etc/sysctl.conf


[...]
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 [...]
Sollten Sie die /etc/sysctl.conf Datei editiert haben, benutzen Sie danach:

sysctl -p

Der folgende Schritt ist wichtig, sollten die IP-Adressen Ihrer virtuellen Maschinen einem anderen Subnetz angehören als die IP-Adresse Ihres Host-Systems. Führen Sie den nächsten Schritt nicht aus, wird das Networking nicht mit Ihren virtuellen Maschinen funktionieren!

Öffnen Sie /etc/vz/vz.conf und setzen
Sie NEIGHBOUR_DEVS gleich all:

vi /etc/vz/vz.conf


[...]
NEIGHBOUR_DEVS=all [...]
SELinux muss deaktiviert werden wenn Sie OpenVZ benutzen wollen. Öffnen Sie /etc/sysconfig/selinux und setzen Sie den Wert von SELINUX auf disabled:

vi /etc/sysconfig/selinux


# 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
Starten Sie dann das System neu:

reboot

Startet Ihr System problemlos, ist alles in Ordnung.

Benutzen Sie den Befehl

uname -r

und Ihr neues OpenVZ Kernel sollte angezeigt werden:

[root@server1 ~]# uname -r

2.6.32-042stab020.1

[root@server1 ~]#


2 OpenVZ benutzen

Bevor Sie virtuelle Maschinen mit OpenVZ erstellen können, brauchen Sie eine Vorlage für die Distribution, die Sie auf den Maschinen benutzen wollen im /vz/template/cache Verzeichnis. Die virtuellen Maschinen werden mit dieser Vorlage erstellt werden. Sie können eine Liste von bereits erzeugten Vorlagen auf http://wiki.openvz.org/Download/template/precreated finden.

Ich möchte Fedora 15 auf meinen virtuellen Maschinen benutzen, deshalb lade ich eine Fedora 15 Vorlage herunter:

cd /vz/template/cache

wget
http://download.openvz.org/template/precreated/beta/fedora-15-x86.tar.gz

Ich werde Ihnen nun die Basisbefehle zum Gebrauch von OpenVZ näherbringen.

Um ein VPS mit der Fedora 15 Vorlage aufzusetzen, benutzen Sie:

vzctl create 101 --ostemplate fedora-15-x86 --config
basic

Die 101 muss eine einzigartige ID sein - jede virtuelle Maschine muss ihre eigene einzigartige ID besitzen. Sie können hierzu den letzten Teil der IP-Adresse der virtuellen Maschine benutzen. Ist die IP-Adresse der Maschine beispielsweise 192.168.0.101, bietet es sich an die 101 als ID zu benutzen.

Wollen Sie, dass sich die VM beim Systemstart automatisch mitstartet, benutzen Sie:

vzctl set 101 --onboot yes --save

Um einen Hostnamen und eine IP für die VM festzulegen, benutzen Sie:

vzctl set 101 --hostname test.example.com --save

vzctl set 101 --ipadd 192.168.0.101 --save

Als nächstes setzen Sie die Anzahl der Sockets auf 120 und weisen der VM einige Nameserver zu:

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

(Anstatt die vzctl set Befehle zu benutzen können Sie genausogut die Konfigurationsdatei der virtuellen Maschine editieren, welche im /etc/vz/conf Verzeichnis gespeichert ist. Ist die ID der VM 101, heißt die Konfigurationsdatei /etc/vz/conf/101.conf.)

Um die VM zu starten, benutzen Sie:

vzctl start 101

Um der virtuellen Maschine ein root-Passwort zuzuweisen, benutzen Sie:

vzctl exec 101 passwd

Sie können nun über die SSH eine Verbindung mit der VM aufbauen (e.g. with PuTTY), oder folgenden Befehl benutzen:

vzctl enter 101

Um die Konsole der virtuellen Maschine zu verlassen, benutzen Sie:

exit

Um die virtuelle Maschine anzuhalten, benutzen Sie:

vzctl stop 101

Um die virtuelle Maschine neu zu starten, benutzen Sie:

vzctl restart 101

Um die virtuelle Maschine von der Festplatte zu löschen (sie muss angehalten sein, damit Sie gelöscht werden kann), benutzen Sie:

vzctl destroy 101

Um eine Liste Ihrer virtuellen Maschinen und deren Status zu bekommen, benutzen Sie:

vzlist -a

[root@server1 cache]# vzlist -a

CTID      NPROC STATUS    IP_ADDR         HOSTNAME

101         14 running   192.168.0.101   test.example.com

[root@server1 cache]#

Um etwas über die Ressourcen zu erfahren, die einer virtuellen Maschine zugewiesen sind, benutzen Sie:

vzctl exec 101 cat /proc/user_beancounters

[root@server1 cache]# vzctl exec 101 cat /proc/user_beancounters

Version: 2.5

uid  resource           held    maxheld    barrier      limit    failcnt

101:  kmemsize        1508202    1661695   11055923   11377049          0

lockedpages           0          0        256        256          0

privvmpages        5430       7102      65536      69632          0

shmpages            381        381      21504      21504          0

dummy                 0          0          0          0          0

numproc              19         21        240        240          0

physpages          2489       2775          0 2147483647          0

vmguarpages           0          0      33792 2147483647          0

oomguarpages       2489       2775      26112 2147483647          0

numtcpsock            5          5        360        360          0

numflock              3          4        188        206          0

numpty                0          1         16         16          0

numsiginfo            0          2        256        256          0

tcpsndbuf         44720          0    1720320    2703360          0

tcprcvbuf         81920          0    1720320    2703360          0

othersockbuf      13144      14356    1126080    2097152          0

dgramrcvbuf           0       8380     262144     262144          0

numothersock         11         13        120        120          0

dcachesize            0          0    3409920    3624960          0

numfile             503        531       9312       9312          0

dummy                 0          0          0          0          0

dummy                 0          0          0          0          0

dummy                 0          0          0          0          0

numiptent            10         10        128        128          0

[root@server1 cache]#

Die failcnt Spalte ist sehr wichtig, sie sollte ausschließlich Nullen enthalten; tut sie das nicht, bedeutet das, dass die virtuelle Maschine mehr Ressourcen benötigt als ihr zur Zeit zugewiesen sind. Öffnen Sie die Konfigurationsdatei der VM, welche sich im /etc/vz/conf Verzeichnis befindet, und erhöhen Sie die entsprechende Ressource. Starten Sie die virtuelle Maschine dann neu.

Um mehr über den vzctl Befehl zu erfahren, informieren Sie sich mit folgendem Befehl:

man vzctl


3 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte