Erstellung einer Linux-VServer Instanz

/!\ Diese Anleitung enthält die Konfiguration für ein echtes System, mit allergrößter Wahrscheinlichkeit müssen einige bis alle Daten angepasst werden.

/!\ Es ist empfehlenswert, vor der Benutzung dieser Anleitung diese einmal vollständig zu lesen.

/!\ /!\ /!\ Ein Teil dieser Anleitung wurde mit Debian Etch erstellt, es wurden zwar alle Teile für Debian lenny angepasst, es ist dennoch nicht auszuschließen, dass nicht alle Kommandos in dieser Form funktionieren wie gewünscht. Vorsicht ist geboten. /!\ /!\ /!\

vorbereitende Schritte

Das Dateisystem der VServer wird standardmäßig unterhalb von /var/lib/vservers/ erzeugt, soll die neue VServer-Instanz eine eigene Partion, logical volume, etc. bekommen, ist diese dort zu mounten, der mountpoint muss dem Hostname (ohne Domain) der neuen Instanz entsprechen.

mkdir /var/lib/vservers/garfield
mount /dev/... /var/lib/vservers/garfield

/!\ Da bei der Erzeugung die Instanz gestartet wird ist darauf zu achten, daß deren IP nicht in Benutzung ist, z.B. in einem alten VServer, der migriert werden soll.

Wird kein Routing-Protokoll wie OSPF (Paket quagga) benutzt muss dafür gesorgt werden, daß entsprechende Routen auf dem VServer-Host und den Gateways existieren.

Erzeugen der Instanz

Im nächsten Schritt wird jetzt die VServer-Instanz erzeugt:

newvserver --vsroot /var/lib/vservers/ --context 5142 --hostname garfield --domain prima.de --ip 83.97.51.42/32 --dist lenny --mirror http://lou.ping.de/debian/ --interface eth0

Anmerkungen zu den Optionen:

Die Erzeugung verläuft interaktiv.

Jetzt wird die Instanz gestartet:

vserver garfield start
vserver garfield enter

Das erste Kommando startet die Instanz, mit dem zweiten wechselt man in den Kontext der Instanz um weitere Konfigurationen vorzunehmen.

Konfiguration der neuen VServer-Instanz

Abschließend sind sinnvollerweise noch ein paar Pakete zu installieren und zu konfigurieren.

Da bei der Erzeugung root ohne Passwort konfiguriert und kein Benutzer anlegt wird, sollte dieses zuerst nachgeholt werden:

passwd
adduser fnord

Ausserdem ist es recht sinnvoll, einen ssh Server zu installieren, da sonst nur vom VHost auf den gerade erzeugten VServer zugegriffen werden kann:

apt-get install openssh-server
vi /etc/ssh/sshd_config
        PermitRootLogin no
/etc/init.d/ssh restart

Außerdem müssen noch einige Limits angepasst werden, da der VServer-Host bereits einige Limits setzt und es innerhalb eines VServers nicht zulässig ist, limits zu erhöhen. Dazu sind in der Datei

/etc/security/limits.conf

die Zeilen

*               soft    sigpending      8192
*               hard    sigpending      8192
*               soft    msgqueue        819200
*               hard    msgqueue        819200

hinzuzufügen.

Alternativ kann die Verwendung von pam_limits deaktiviert werden, dazu sind die drei Dateien

/etc/pam.d/cron
/etc/pam.d/login
/etc/pam.d/ssh

zu modifizieren. Dabei ist die Zeile

session    required   pam_limits.so

auszukommentieren bzw. zu entfernen. Da in der Standardinstallation die Konfigurationsdatei für Limits /etc/security/limits.conf nur deaktivierte Beispiele enthält entsteht durch o.g. Modifikation kein Nachteil.

automatischer Start

Um die Instanz beim Systemstart automatisch starten zu lassen sind folgende Schritte notwendig:

echo 'default' > /etc/vservers/garfield/apps/init/mark
chown 0:0 /etc/vservers/garfield/apps/init/mark
chmod 0644 /etc/vservers/garfield/apps/init/mark

Kombination von Xen und VServer

Es ist möglich und sinnvoll, einen VServer-Host innerhalb einer Xen-DomU (siehe Software/Xen-DomU) zu installieren, dabei ist es möglich, die Partitionen für die Instanzen als virtuelle Partitionen zu erzeugen und die realen Partitionen oder logical volumes in der Xen-Dom0 zu verwalten.

Dazu müssen folgende zusätzliche Schritte ausgeführt werden:

in der Dom0

Um eine virtuelle Partition an die DomU weiter zu reichen kann wie folgt vorgegangen werden:

lvcreate -L 5G -n garfield.prima.de VSERVER
vi /etc/xen/griff.prima.de.cfg
    disk = [ ..., 'phy:VSERVER/garfield.prima.de,xvdc1,w' ]

xm block-attach griff.prima.de phy:VSERVER/garfield.prima.de /dev/xvdc1 w

Mit diesen Kommandos wird ein neues logical volume erzeugt und der DomU (griff.prima.de) als xvdc1 bekannt gemacht. Der Xen-DomU-Code im Standard-Kernel unterstützt leider die Verwendung von virtuellen IDE oder SCSI Geräten nicht mehr, damit wird die Zahl der virtuellen Geräte auf 240 (16 Geräte mit jeweils 15 Partitionen) begrenzt. Der Aufruf von xm block-attach macht das Gerät in der DomU bekannt, ohne diese neu starten zu müssen, der Eintrag in der Konfigurationsdatei sorgt dafür, daß das Gerät auch nach einem Neustart bekannt gemacht wird.

in der DomU

Innerhalb einer DomU ist es notwendig, das Paket libc6-xen zu installieren, dieses wird aber von den VServer-Skripten nicht installiert. Damit das Paket automatisch installiert wird, muss eine Zeile in /etc/vservers/newvserver-vars eingefügt werden:

INSTALL_PACKAGES="$INSTALL_PACKAGES libc6-xen"

Die Verwendung von hvd Geräten setzt den Einsatz von udevd zwingend voraus, der folgende Absatz ist deshalb nur der Vollständigkeit halber noch enthalten.

Wurde die Xen-DomU ohne udevd erzeugt, wird für das oben via xm block-attach bekannt gemacht Gerät kein Eintrag unterhalb von /dev erzeugt. Es kann aber der passende Eintrag unterhalb von /dev/.static/dev/ verwendet werden, um die virtuelle Partition zu formatieren und zu mounten:

mkfs.ext3 /dev/.static/dev/hda1
mount /dev/.static/dev/hda1 /var/lib/vservers/garfield

Bei einem Neustart der DomU wird für das Gerät ein Eintrag unterhalb von /dev erzeugt, sodaß dieser für den Eintrag in /etc/fstab benutzt werden kann und sollte:

/dev/hvdc1 /var/lib/vservers/garfield ext3 defaults 0 0

Vergrößerung einer VServer-Partition

Mittels

lvextend -L15G /dev/VSERVER/garfield.prima.de

wird zuerst das logical volume vergrößert. Leider leitet Xen diese Änderung aber nicht in die DomU weiter, deshalb muss das Vergrößern des Filesystems ebenfalls in der Dom0 geschehen.

in der DomU

Schritt 1: VServer stoppen

vserver garfield.prima.de stop

Schritt 2: Partition unmounten

umount /dev/hvdc1

in der Dom0

Schritt 3: Xen device nummer ermitteln

grep griff /var/log/xen/xend.log | grep garfield | grep DevController

Die Ausgabe endet etwa mit

/local/domain/0/backend/vbd/1/771

Die 771 ist die gesuchte Nummer.

/!\ Xen v4

In Xen v4 lässt sich die Device-ID auf diese Art ermitteln:

xenstore-ls | grep -B1 snorg

Die Ausgabe sieht etwa so aus:

       frontend = "/local/domain/3/device/vbd/51735"
       params = "/dev/ping10-data/snorg.ping.de"

Die 51735 ist hier die gesuchte Nummer.

Schritt 5: Xen Domain-ID ermitteln

xm list griff.prima.de

Die Nummer in der Spalte ID ist die gesuchte Nummer (hier 1).

Schritt 6: Device von der DomU entfernen

xm block-detach 1 771

Hier die beiden in Schritt 4 und Schritt 5 ermittelten Zahlen einsetzen.

Schritt 7: Filesystem vergrößern

resize2fs /dev/VSERVER/garfield.prima.de

zuletzt

Wie oben bereits beschrieben mitteln xm block-attach das Device wieder mit der DomU verbinden , im Innern mounten und den VServer wieder starten.

VServer-Setup bei PING

Zur Vereinfachung des Setup gibt es für de Serverkombination ping02.ping.de (Dom0) und griff.prima.de (DomU) zwei Skripten, die das Setup stark vereinfachen.

ping02.ping.de

nächstes freies Blockdevice finden

grep xvd /etc/xen/griff.prima.de.cfg

LV erzeugen und der DomU bekannt machen

/root/bin/vserver_setup.sh <site> <size>G /dev/xvd<device>

DomU-Konfiguration ergänzen

Das Skript gibt die Zeile aus, die in /etc/xen/griff.prima.de.cfg ergänzt werden muss.

/!\ Das Komma in der vorigen Zeile nicht vergessen.

griff.prima.de

VServer erzeugen

/root/bin/vserver_create.sh <site> <context> <IP> /dev/xvd<device>

Endeinstellungen

Das Skript gibt eine Reihe von Kommandos aus, die auszuführen sind, in einigen sind Platzhalter enthalten, diese sind natürlich durch geeignete Werte zu ersetzen.

Weitere Aktionen mit VServern

Ändern der IP eines VServers

Ein VServer bekommt seine IP beim Start zugewiesen, es wird keine Konfiguration im Innern der Instanz benötigt. Die IP eines VServsers findet sich in der Datei

/etc/vservers/garfield/interfaces/0/ip

Wenn es sich bei der Instanz um ein Debian handelt, dann muss noch die Datei

/var/lib/vservers/garfield/etc/hosts

bzw.

/etc/hosts

in der Instanz selbst angepasst werden.

Software/VServer (zuletzt geändert am 2016-02-19 20:33:54 durch BodoBellut)