Inhaltsverzeichnis
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 Netzmaske der Instanz ist normalerweise /32, es sei denn, es soll ein IP-Bereich in die Instanz geroutet werden.
- Der Kontext muss für jeden VServer eindeutig sein, es bietet sich die Benutzung der Konketanation der letzten beiden Oktette der IP des VServers an.
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
- Devicenummern gehen von 1 bis 15
- Device xvda für das System frei lassen
- Wenn keine Nummern in xvdb mehr frei sind, mit xvdc weiter machen, usw.
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>
- Wie oben beschrieben bietet er sich an, als Kontext die letzten beiden Oktette der IP zu verwenden.
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.