Results for category "Virtualisierung"

6 Articles

Installing Git on Citrix XenServer 5.5

Yesterday I installed a central Git repository server for storing all configuration files from our Linux servers. Every /etc directory is now observed by Git (and etckeeper). Each of these servers pushes the changes from the local master branch to the central repository. Authentication is done via public/private key authentication.
Btw: Do you know the Match User section in sshd_config to set specific SSH server setting bound to the given user?

One of our main servers is running Citrix XenServer 5.5 (based on CentOS 5.5) which should be observed by Git too. To do so, you have to do the following steps (assuming you are running on 32 Bit platform):

wget http://vault.centos.org/5.4/os/i386/CentOS/perl-DBI-1.52-2.el5.i386.rpm
wget http://packages.sw.be/git/perl-Git-1.7.5.2-1.el5.rf.i386.rpm
wget http://packages.sw.be/git/git-1.7.5.2-1.el5.rf.i386.rpm
rpm -hiv perl-DBI-1.52-2.el5.i386.rpm
rpm -hiv --nodeps perl-Git-1.7.5.2-1.el5.rf.i386.rpm # cross dependency between git and perl-Git, use --nodeps
rpm -hiv git-1.7.5.2-1.el5.rf.i386.rpm

Howto: Citrix XenServer-Patch nochmals installieren

Heute wurde ich in das Büro geholt, da beim Update auf die letzten XenServer-Version (5.5.0 Update-1) wohl einiges schief gegangen ist. Nach dem Neustart des Servers konnten unser FibreChannel Storage Repository, das lokale Storage Repository und die iSCSI-Volumes nicht mehr geladen werden. Beim Re-attachen eines iSCSI-Laufwerks bekam ich den Fehler, dass der Treiber lvmoiscsi nicht geladen wurde. Weiterhin war es uns auch nicht möglich, die USB-Treiber zu nutzen, da diese offensichtlich nicht mehr vorhanden gewesen sind.

Problematischerweise konnten wir mit der Installations-Cd von 5.5.0 Update-1 unser System nicht wiederherstellen bzw. upgraden, da der Patch bereits als komplett installiert erkannt worden war.

Nach mehreren missglückten Lösungsansätzen und wenig Erfolg bei Google hatte ich dann die rettende Idee, folgende Kommandos müssen auf der CLI des XenServers abgesetzt werden.

wget http://downloadns.citrix.com.edgesuite.net/4276/XenServer-5.5.0-Update1.xsupdate /tmp
xe patch-upload file-name=XenServer-5.5.0-Update1.xsupdate

Nun kann es sein, dass der Patch bereits als installiert gekennzeichnet worden ist. Deshalb muss im Verzeichnis /var/patch bzw. /var/patch/applied das Verzeichnis mit der UUID, die xe patch-upload zurückliefert, verschoben werden.

/usr/bin/gpg --homedir /opt/xensource/gpg --no-default-keyring --keyring /opt/xensource/gpg/pubring.gpg --decrypt /tmp/XenServer-5.5.0-Update1.xsupdate > /tmp/update.sh
chmod u+x /tmp/update.sh
/tmp/update.sh unpack

Damit wird die Installationsdatei entschlüsselt und danach entpackt. Der Aufruf von /tmp/update.sh apply funktionierte bei uns nicht, da die Version trotz oben genannter Anpassungen als bereits installiert gekennzeichnet worden war.
Im Verzeichnis /tmp befindet sich nun ein neues Unterverzeichnis, in dem die Installationsdaten des Updates liegen. Das Script install.sh ist leider so geschrieben, dass es bei der ersten fehlgeschlagenen Installation eines RPM-Packages komplett abbricht. Außerdem braucht es eine kleine Anpassung im Header (vi install.sh):

#!/bin/bash
### Generic patch install.sh script
# ...

#[ -n "$UUID" ] || exit 2
UUID=$2
# ...

Die Zeile mit der Überprüfung der UUID muss auskommentiert und stattdessen UUID als zweiter Parameter des Scripts übergeben werden.
Nun folgt die Installation aller RPM-Packages. Eventuell müssen die Packages in richtiger Reihenfolge installiert werden, bei mir reichte aber

rpm -U *.rpm

aus.
Es sollten nun (hoffentlich!) alle nötigen RPM-Packages installiert worden sein. Als letzten Schritt muss die Datei CONTENTS angepasst werden. Sie enthält alle Dateien, die beim Update-Prozess geändert/installiert werden. Da die RPM-Packages bereits im vorherigen Schritt installiert worden sind, müssen sie aus der Datei entfernt werden.

cp CONTENTS CONTENTS.bak
vi CONTENTS
# alle Zeilen beginnend mit "rpm" löschen

Soweit so gut, nun folgt der Aufruf des install.sh-Scripts:

install.sh apply $UUID

$UUID muss mit der UUID aus Schritt 1 (xe patch-upload) ersetzt werden. Nach einem Neustart ist der XenServer auf dem letzten Stand.

Für die Frickler unter euch, die wissen möchten, wie der Update-Prozess abläuft:

  • Laden der Update-Datei
  • Entpacken der Daten und Aufruf des Scripts:
    • Delegation an die install.sh
    • Zeilenweise lesen der Datei CONTENTS
    • Je nach Beginn der Zeile in CONTENTS wird ein RPM-Package installiert oder eine Datei umkopiert
    • Aufruf der post_install(_update1) zum Generieren der initrds

VirtualBox: Cursor wird zweimal angezeigt

Auf meinem Server läuft die aktuelle VirtualBox-Version und als Gast ein Windows Server 2003.
Von Anfang an hatte ich beim Verbinden via RDP über das VirtualBox-RDP-Gateway das Problem, dass in dem Screen zwei Cursor der Maus angezeigt wurden. Besonders problematisch ist dabei, dass ich die Ränder nicht erreichen konnte, da z.B. des rechten Randes der rechte Cursor außerhalb des RDP-Clients (Gnome-RDP) war und somit die Mausbewegungen sich auf mein Notebook und nicht mehr auf die RDP-Session bezogen.

Die Lösung des Problems ist an sich relativ simpel: Im VirtualBox-Gast muss unter Systemsteuerung > Maus > Zeigeroptionen die Option Zeigebeschleunigung verbessern deaktiviert werden.

Konvertieren von virtuellen Linux-VMware-Maschinen nach Citrix XEN Server

Wegen der Migration unserer virtuellen Server-Infrastruktur von VMware Server nach Citrix XEN Server 5.5 stieß ich auf ein Problem. Einer unser virtuellen Maschinen dient als Backup-Server und läuft unter Linux, in dem Fall unter Ubuntu 6.10 Server.

Zur Konvertierung der Maschinen dient das Tool XenConverter, das von Citrix kostenlos bereit gestellt wird.

Ich führte also die Konvertierung der VMDK-Datei aus, dies funktionierte soweit auch ohne Probleme, eben so klappte der Import in den Citrix XEN Server einwandfrei.

Beim Starten des Systems hing Linux allerdings mit der Meldung

Waiting for root file system...

VMware beschreibt in der Dokumentation, dass standardmäßig die Festplatten als SCSI-Devices gemountet werden sollen. Dies würde zu einer besseren Performance führen. Diesen Hinweis haben wir beim Einrichten aller virtuellen Maschinen unter VMware auch durchgeführt.
Allerdings bindet Citrix XEN Server nach dem Import die virtuellen Festplatten als normale IDE-Devices ein. Mir fiel das auch erst nach ein paar Minuten auf, nachdem ich über die vorher eingetragenen Boot-Meldungen schaute.

Die Lösung des Problems war dann relativ einfach umzusetzen:

  • Virtuelle Maschine neu starten
  • Während Grub lädt, ESC drücken
  • Aktuellen Kernel auswählen
  • /dev/sda1 durch /dev/hda1 ersetzen
  • System booten und als root anmelden
  • in der /boot/grub/menu.lst /dev/sda1 durch /dev/hda1 ersetzen, so dass die Änderungen permanent sind

Rautiges 2009-07-14

Momentan vertreibe ich mir die Zeit mit der Konfiguration des Zotac ION Boards, deshalb hier eine kurze Übersicht über die letzte Woche

  • Empfehlenswerte Websites sind www.faql.de (behandelt Themen zur deutschen Sprache, unter anderem wird erklärt, dass es das Wort “Stati” als Plural von “Status” nicht existiert) und www.encyclopediadramatica.com (über Alltags-Internetsprache).
  • Florian kämpft momentan mit der Konfiguration von MPD und Icecast2. Wir (und andere) haben das Problem, dass mit WinAMP und VLC der OGG-Stream nach Ende eines Tracks oder Wechsel während des Abspielens eines Tracks der komplette Stream abbricht. Sehr ominöses Problem, Foren-Threads deuten darauf hin, dass mit dem Wechsel der OGG-Header zu tun hat.
  • Ich habe die Woche einen Patch für vboxtool eingereicht, so dass die richtigen Maschinen gestartet werden, falls der Benutzer, der vboxtool aufruft, nicht identisch ist, mit dem ggw. Benutzer. Mehr Infos dazu gibt es im Firmen-Entwickler-Blog.
  • Im Trac von VirtualBox habe ich außerdem einen Bug-Eintrag hinterlassen, da bei mir hin und wieder die  SSH-Netzwerkverbindung abbricht.
  • Auf ganzer Linie kämpfe ich mit dem Zotac ION-Board:
    • Die Auflösung auf meinem Fernseher wird falsch dargestellt. Es gibt unsichtbare Bereiche oberhalb und unterhalb des sichtbaren Bereichs. Das Panning funktioniert nicht, ebenso diverse X-Konfigurationseinstellungen. Meine Vermutung ist, dass das DVI-Signal vom HDMI-Eingang des Fernsehers falsch interpretiert wird.
    • Bei Windows Server 2003, das in einer VirtualBox-VM ist,  lassen sich keine Rollen mehr hinzufügen. Gestern wollte ich WINS und DHCP nachinstallieren – dies schlug aber aus unerfindlichen Gründen fehl. Ich habe mir die Install-Logs unter c:windowsdebug angeschaut, konnte aber nicht wirklich die Fehlerursache zu identifizieren. Es läuft wohl darauf hinaus, dass ich Windows Server 2003 neu installieren muss.
    • Winbind und Samba laufen noch nicht rund. Die Authentifizierung von Winbind am Active Directory über Kerberos funktioniert hingegen schon.
    • Audio-Ausgabe über HDMI, Video-Beschleunigung etc. konnte ich noch nicht testen, da o.g. Punkte erst einmal zu fixen sind.

Trunking / Bonding / Multipath

Schon einmal im Internet nach Trunking, Bonding und/oder Multipath gesucht und sich gefragt, was brauche ich eigentlich? Aus aktuellem Anlass haben wir heute einige Experimente mit diesen Verfahren gemacht.

Warum?

Die Evolution der Virtualisierung unserer Maschinen in der Firma hat mittlerweile einen langen Weg hinter sich. Zu Anfang setzten wir auf Virtual Server 2005 von Microsoft, danach folgte dann ein VMWare Server. Auf den Clients wird zu Testzwecken weiterhin VirtualBox benutzt. Warum wir von den Microsoft und VMWare-Lösungen weg wollten, war die mieserable Performance. Die Windows-Systemen liefen unter VS2005 relativ schnell. Linux hingegen ließ sich faktisch gar nicht benutzen (Kernel 2.6.20 aufwärts, Ubuntu, Debian, SuSE). Somit hatten wir im ersten Schritt VMWare neben VS2005 laufen. Allerdings verbrauchten beide Virtualisierungslösungen im Parallel-Betrieb doch einiges an Ressourcen, so dass wir von VS2005 nach VMWare migrierten. Bereits nach einigen Tagen stellten wir enorme Probleme unter Windows-Gästen beim Festplattenzugriff fest.

Wegen fehlender Debug-Möglichkeiten lag unser Schluss darin, dass vermutlich das darunterliegende RAID5 (3Ware-Controller) mit dem VMWare Write-Operations nicht klar kam. Außerdem liefen die Windows-GUIs nicht perforrmant genug.

Nach zwei Jahren des Herumärgerns starteten wir vor zwei Wochen, den XENServer zu evaluieren. Dabei ist es so, dass alle unsere virtuellen Fesplatten in unserem SAN (open-E DSS) liegen sollten. SAN, physikalische XEN-Maschine und zwei weitere Server sind an einem Netgear-Gigabit-Switch angeschlossen.

Trunking / Bonding

Trunking bedeutet, dass mehrere physikalische Leitungen zu einer “dicken” logischen Leitung zusammengelegt werden. Dies hat den Vorteil, dass der Gesamtz-Datendurchsatz (theoretisch!) um die Anzahl und den Durchsatz der zusätzlichen Leitungen erhöht werden würde. Damit ein Trunk erstellt werden kann, kommt das Link Aggregation Control Protocol zum Einsatz. Dieses Protokoll bildet den IEEE-Standard 802.3ad ab. Auf den Netgear-Switches nennt sich diese Funktion Link Aggregation Group (LAG).

Der Begriff Trunking wird häufig auf Seiten des Switches verwendet. Bei den Netzwerkkarten an sich wird weitaus häufiger der Begriff des “Bondings”, d.h. das Zusammenfassen von mehrerer Netzwerkkarten zu einer, benutzt. Grundsätzlich sind die Begriffe Bonding und Trunking aber gleichbedeutend zu benutzen.

Beim Bonding gibt es verschiedene Modi. Unter Windows mit einer Intel PRO/1000 PT Quad Port LP kann man aber beispielsweise keinen direkten Modus auswählen, es wird immer der Modus 802.3ad benutzt.

Linux bzw. Linux Channel Bonding Project hingegen kennt weitere Modi:

  • mode=0 (balance-rr): Dabei werden alle gebondeten Netzwerkkarten nacheinander benutzt. Paket a wird über phys. eth0 gesendet, Paket b über eth1 u.s.w. (Load Balancing und Fehlertolerant)
  • mode=1 (active-backup): Es ist immer eine Netzwerkkarte aus dem Bond aktiv. Sobald diese deaktiviert wird (Netzwerkkarte kaputt, Link zwischen NIC und Switch weg etc.) wird die nächste Karte aus dem Bond aktiviert (Fehlertolerant)
  • mode=2 (balance-xor): Für jede Anfrage wird eine Netzwerkkarte ausgewählt und diese wird im Laufe der Verbindung weiter benutzt (Fehlertolerant und Load Balancing)
  • mode=3 (broadcast): Der Name ist Programm: Auf allen NICs wird übertragen (Fehlertolerant)
  • mode=4 (802.3ad): Hiermit wird 802.3ad für das Bond benutzt. Der Switch muss das Protokoll unterstützen.
  • mode=5 (balance-tlb): Steht für Transmit Load Balancing, wenn ein Slave aufällt, wird die MAC-Adresse von einem anderen Bond-Mitglied übernommen (Fehlertolerant)
  • mode=6 (balance-alb): Steht für Adaptive Load Balancing, hier werden die ARP-Requests des lokalen Systems vom Bonding-Treiber überschrieben (Fehlertolerant)

Mehr Infos auf englisch gibt es bei Linux Horizon, von wo ich auch die Informationen her habe.

Bonding im XENServer

Im XENServer 5.x kommt das oben genannte Linux Channel Bonding Project zum Einsatz. Unsere bisherige Hardware lief mit einer LACP nach 802.3ad. Nachdem wir in der Oberfläche des XenCenters ein neues Bond erstellt hatten, wurde es auch wunderbar hochgefahren. Allerdings arbeitet das Bond standardmäßig in einem eigenen Modus. Damit war es nicht möglich, unser SAN anzupingen. SAN und XEN lagen im gleichen Subnetz. Grund dafür war eben, dass die Modi sich unterschieden. Damit nun XENServer den Modus 802.3ad benutzt, muss unter /etc/sysconfig/networks der Eintrag BONDING_OPTS=”mode=4″ hinzugefügt werden. Danach müssen die Interfaces neu gestartet werden. Im Anschluss konnte sich der XENServer über den NetGear GS748T mit dem SAN verbinden.

Wenn bis zu dieser Stelle durchgehalten hast, würde dich sicherlich auch folgende PDF interessieren: Virtualiasierung und Netzwerkstruktur 😉

Multipath!

Beim Zugriff auf unser SAN per iSCSI besteht die Möglichkeit, Multipath zu aktivieren.

Beim Bonding besitzt jedes Bond genau eine IP-Adresse. Die einzelnen Bond-Slaves (Netzwerkkarten) besitzen keine fest zugewiesene IP-Adresse mehr. Bei einem Bond aus 4 Netzwerkkarten würde das Bond über eine IP-Adresse angesprochen werden. Im Gegensatz dazu besitzt beim Multipath jeder Netzwerkkarte eine IP-Adresse. Dabei ist es aber wichtig, dass jede Adresse in einem unterschiedlichen Subnetz liegt. Anhand des Subnetzes wird entschieden, an welche Karte das Paket letztendlich gesendet wird. Multipath erhöht durch diese Technik zum einen den Datendurchsatz, zum anderen bietet es höhere Fehlertoleranz.

Beim Multipath gibt es ebenfalls verschiedene Modi, die Auswirkungen auf die Performance und Sicherheit haben:

  • Fail Over – entspricht dem mode=2 beim Bonding
  • Round Robin – die Pakete werden gleich auf die einzelnen Pfade verteilt (mode=0 beim Bonding)
  • Round Robin With Subset – eine Mischung zwischen Fail Over und Round Robin. Sobald eine der aktiven Pfade wegbricht, werden die inaktiven Pfade aus dem Standby aufgeweckt und benutzt.
  • Least Queue Depth – hiermit wird ein Lastenausgleich gefahren, der dem Round Robin entspricht. Wenn die einzelnen Pfade vom Durchsatz her nicht gleichmäßig augelastet sind, wird versucht, die Daten über die weniger benutzten Pfade zu transportieren.
  • Weighted Paths – Lastenausgleich, der vom Benutzer eingstellt werden kann. Damit lassen sich quasi manuelle Routing-Metriken festlegen
  • Least Blocks – Die Anfragen werden an den Pfad weitergeleitet, der die kleinste Nummer an blockierenden I/O-Zugriffen besitzt.

Fragen? Fragen!

  • Soll ich Trunking oder Multipath einsetzen?
    Das hängt von der Umgebung ab. Mit Trunking hat man mehr ein paar mehr Möglichkeiten, was die einzelnen Modi angeht. Allerdings funktionieren nicht alle Modi auf allen Betriebssystemen. Für 802.3ad müssen außerdem die Switches das Protokoll unterstützen. Multipath bedeutet höheren Konfigurationsaufwand, da jede Netzwerkkarte eine eigene IP in einem eigenen Subnetz benötigt.
  • Kann ich Multipath über einen LACP-Trunk fahren?
    Ja, ich habe zwei Bondings auf jedem Server eingerichtet und diese dann mit Multipath (Round Robin) getestet. Die Verbindung funktioniert einwandfrei, von der Performance her gibt es aber keinen Unterschied zum normalen Bonding. Außerdem ist es doppelter Konfigurationsaufwand, sowohl Bonding als auch Multipath einzurichten.
  • Ist Bonding oder Multipath performanter?
    Im Test war das Bonding/Trunking beim Lesen geringfügig langsamer als Multipath. Beim Schreiben hingegen war Multipath fast doppelt so schnell.
  • Welches ist der schnellste Multipath-Modus?
    Im Test ergab sich, dass die Policy “Weighted Paths” mit ca. 4 MByte/s die Nase vorne hatte
  • Funktioniert Multipath auch unter Windows?
    Ja, der iSCSI Initiator von Microsoft hat dieses Feature implementiert.
  • Kann ich die Load Balance Policy “Least Queue Depth” oder “Least Blocks” ind der Kombination Microsoft iSCSI Initiatior und open-E DSS nutzen?
    Nein, in der Kombination Windows (Server 2003, XP, Vista) und open-E DSS ist diese Policy für Multipath nicht möglich.