Unterschiede zwischen den Revisionen 1 und 15 (über 14 Versionen hinweg)
Revision 1 vom 2008-04-14 17:52:01
Größe: 4112
Autor: BodoBellut
Kommentar:
Revision 15 vom 2014-01-28 10:52:45
Größe: 9600
Autor: BodoBellut
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 1: Zeile 1:
<<TableOfContents>>
Zeile 2: Zeile 4:

/!\ 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. /!\ /!\ /!\
Zeile 11: Zeile 19:
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 migiert werden soll. /!\ 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.
Zeile 19: Zeile 27:
newvserver --vsroot /var/lib/vservers/ --hostname garfield --domain prima.de --ip 83.97.51.42/32 --dist etch --mirror http://lou.ping.de/debian/ --interface eth0 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
Zeile 24: Zeile 32:
 * 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.
Zeile 37: Zeile 46:
Abschließend sind sinnvollerweise noch ein paar Pakete zu installieren und zu konfigurieren: 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:
Zeile 40: Zeile 57:
}}} 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.
Zeile 53: Zeile 99:
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. 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.
Zeile 58: Zeile 104:

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"
}}}
Zeile 68: Zeile 109:
    disk = [ ..., 'phy:VSERVER/garfield.prima.de,hda1,w' ]

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

Mit diesen Kommandos wird ein neues logical volume erzeugt und der DomU (''griff.prima.de'') als ''hda1'' bekannt gemacht. Es ist empfehlenswert, für die VServer-Instanzen virtuelle IDE-Geräte zu verwenden, da diese bis zu 63 Partitionen unterstützen, im Gegensatz zu nur 15 Partitionen bei SCSI-Geräten.
Der Aufruf von ''xm block-attach'' macht das Gerät in der DomU bekannt, ohne diese neu srarten zu müssen, der Eintrag in der Konfigurationsdatei sorgt dafür, daß das Gerät auch nach einem Neustart bekannt gemacht wird.
    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.
Zeile 78: Zeile 119:
Da in einer Xen-DomU normalerweise kein ''udevd'' vorhanden und dessen Existenz auch wenig sinnvoll ist 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 mounten.
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 kannund sollte,
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.

===== 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.

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.

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.

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