• Blogansicht

Linux-Vserver + Debian Lenny + OpenVCP + IPv6 mit SixxS

25.10.09, veröffentlicht von LZ.fLoo in Technik

image

Linux-VServer-Installation

Heute habe ich mich von VMWare ESXi zu Linux-Vserver umorientiert.
VMWare als Bare Metal Hypervisor gefällt mir zwar sehr gut, verbraucht
mir aber deutlich zuviele Ressourcen - darum der Schritt zur
Open-Source Alternative.


Bei Linux-VServer handelt es sich im Gegensatz zu VMWare ESXi nicht
um einen Bare-Metal-Hypervisor, es gibt also keinen Hypervisor welcher
direkt auf der Hardware läuft, sondern es benötigt ein Hostsystem - in
meinem Fall habe ich mich für Debian Lenny entschieden - einfach aus
dem Grund, weil ich seit Jahren mit Debian arbeite.


Ich werde hier eine Mischung aus Tutorial und Kommentaren verfassen,
es wird also mehr oder weniger ein Schritt-für-Schritt Tutorial um die
im Titel genannte Umgebung zum Laufen zu bringen - fangen wir also an:


1. Schritt (Hostnode Grundinstallation)


Man beginnt mit der Einrichtung des Hostsystems. In meinem Fall ist
dies Debian Lenny (5 - Update 3) - das derzeit aktuellste System der
Debian-Saga. Entschieden habe ich mich für ein naktes Debian mit der
"Base" Konfiguration. Trotzdem soll der Host nicht zu aufgebläht
werden, denn ich möchte ja nur den Grundstein für dieGuests legen.Für
die Hostnode habe ich folgende Pakete extra installiert (da diese
später benötigt werden) :

  • build-essential
  • cpp
  • gcc
  • make
  • openssh-server
  • lighttpd
  • mysql-server-5.0
  • php5-cgi
  • php5-gd
  • php-gettext
  • php-mysql
  • php-net-socket
  • libc6-dev
  • libssl-dev
  • vlan
  • dietlibc-dev
  • pkg-config
  • libnss3-dev
  • bzip2
  • subversion
  • autoconf

oder kurz :

apt-get
install build-essential cpp gcc make openssh-server lighttpd
mysql-server-5.0 php5-cgi php5-gd php-gettext php-mysql php-net-socket
libc6-dev libssl-dev vlan dietlibc-dev pkg-config libnss3-dev bzip2
subversion autoconf

Alle Anfragen sind auszufüllen und etwaige Passwörter sind zu vergeben (MySQL Passwort für den Rootuser). Nicht
vergessen in der /etc/ssh/sshd_config den SSH-Server auf die IP des
Hostnodes zu binden, sonst kommt man später nicht auf die erstellten
Guests !


1.1 Schritt (Kernel für den Linux-VServer-Host installieren)


Damit wir später auch Guests erstellen und nutzen können bedarf es
einem neuen Kernel. Ich bevorzuge es vorkompilierte Kernel zu
verwenden. Hierfür kann ich die vorkompilierten Kernel von "The Bristol Wireless Kernel Store" empfehlen. Diese sind weitaus aktueller als die 0815 Linux-VServer-Kernel von Debian, richten sich aber an diesen aus.


Aktuell ist der Kernel linux-image-2.6.31.5-vs2.3.0.36.20-beng_0.1_i386.deb für 32 Bit Hostsysteme bzw. linux-image-2.6.31.5-vs2.3.0.36.20-beng_0.1_amd64.deb für 64 Bit Hostsysteme (hier im Repository) zu finden. Die Headerfiles und die Sources braucht man nicht.


Diesen lädt man einfach herunter und installiert diesen mit:

wget
repo.psand.net/pool/main/l/linux-source-2.6.31.5-vs2.3.0.36.20-beng/linux-image-2.6.31.5-vs2.3.0.36.20-beng_0.1_i386.deb;dpkg
-i linux-image-2.6.31.5-vs2.3.0.36.20-beng_0.1_i386.deb


bzw


wget
repo.psand.net/pool/main/l/linux-source-2.6.31.5-vs2.3.0.36.20-beng/linux-image-2.6.31.5-vs2.3.0.36.20-beng_0.1_amd64.deb;dpkg
-i linux-image-2.6.31.5-vs2.3.0.36.20-beng_0.1_amd64.deb

Anschließend startet man das System neu und gibt "uname -a" ein, es
sollte folgende Information bei 32 Bit Systemen zu lesen sein :

Linux hostname 2.6.31.5-vs2.3.0.36.20-beng #1 SMP Thu Oct 24 14:22:46 BST 2009 i686 GNU/Linux

Das wars, soweit sogut, Hostsystem ist fertig und der Kernel unterstützt nun auch Guests - weiter gehts ...


1.2 Schritt (util-vserver installieren)


Damit man nun auch Guests erstellen kann benötigt man neben dem
Linux-VServer-Kernel ebenfalls die VServer-Utils. Zwar kann man mittels
apt-get install util-vserver
die benötigten Dinge ganz einfach installieren - davon ist aber
abzuraten, da man mit den veralteten Binaries aus dem offiziellen
Debian Repository mehr Sorgen als Freude hat. Darum entscheiden wir uns
zur eigenen Kompilierung, wir nutzen ja schließlich auch nicht den
0815-Linux-VServer-Kernel von Debian.


Wir laden uns die aktuellste Version von util-vserver hier herunter.
Zum Zeitpunkt dieses Tutorials ist die aktuellste Version
util-vserver-0.30.216-pre2849 und ist ganz einfach herunterzuladen und
zu entpacken:

wget
people.linux-vserver.org/~dhozac/t/uv-testing/util-vserver-0.30.216-pre2849.tar.bz2;tar
xfvj util-vserver-0.30.216-pre2849.tar.bz2

Nun folgt die Konfiguration mittels

./configure --prefix=/usr --enable-release --mandir=/usr/share/man \

--infodir=/usr/share/info --sysconfdir=/etc
--enable-dietlibc \

--localstatedir=/var


Wenn man das Wurzelverzeichnis der Linux-VServer nicht unter /vservers haben möchte, sollte man mit dem Anhang --with-vrootdir=/gewunschtes_verzeichnis ein anderes definieren!

Es werden jetzt einige Dinge fehlen (./configure wird meckern, dass
es etwas nicht finden kann). Dies ist einfach mittels apt-get
nachträglich noch zu installieren - diesen Schritt lasse ich jetzt hier
mal aus. Folgend installieren wir dann unser gebackenes Programm:

make && make install debian && make install install-distribution

Das Util-Vserver Runlevel-Script erstellt jetzt folgende Einträge automatisch:

echo /usr/lib/util-vserver/vshelper >| /proc/sys/kernel/vshelper

echo kernel.vshelper = /usr/lib/util-vserver/vshelper >> /etc/sysctl.conf

update-rc.d vprocunhide defaults

update-rc.d vservers-default defaults

Um die korrekte Installation zu überprüfen geben wir einfach

vserver-info

Ein und erhalten in etwa folgende Ausgabe:

Versions:

Kernel: 2.6.31.5-vs2.3.0.36.20-beng

VS-API: 0x00020304

util-vserver: 0.30.216-pre2849; Oct 24 2009, 21:13:51


Um jetzt auch gleich für später vorzusorgen erstellen wir in unserem unter --with-vrootdir=/home definierten Verzeichnis folgende Ordner:

mkdir backups; mkdir images; mkdir userbackups

Das wars, alles nötige installiert (*puh*) nach einer Kaffeepause gehts weiter :lol:


2. Schritt (Lighttpd + PHP5)


Da das Hostsystem nun installiert und wir können zunächst mit der
Installation von Lighttpd und PHP5 beginnen - dies brauchen wir später
für das OpenVCP. Der Grund hier Lighttpd zu verwenden ist einfach:
Lighttpd verbraucht deutlich weniger Ressourcen als Apache und da wir dies nur für die Oberfläche von OpenVCP brauchen reicht dies vollkommen aus.


Um jetzt PHP5 mit Lighttpd zum Laufen zu bringen müssen wir einige
Änderungen an der lighttpd.conf vornehmen. Dafür gehen wir in das
Verzeichnis /etc/lighttpd/ und ändern dort die Datei lighttpd.conf. Einfacher :

nano /etc/lighttpd/lighttpd.conf

Hier aktivieren wir in den server.modules die folgenden Module, "mod_fastcgi" muss manuell hinzugefügt werden:

  • "mod_rewrite",
  • "mod_redirect",
  • "mod_fastcgi",

Es sollte also am Ende folgendermaßen aussehen :

server.modules              = (

"mod_access",

"mod_alias",

"mod_accesslog",

"mod_compress",

"mod_rewrite",

"mod_redirect",

"mod_fastcgi",

#           "mod_evhost",

#           "mod_usertrack",

#           "mod_rrdtool",

#           "mod_webdav",

#           "mod_expire",

#           "mod_flv_streaming",

#           "mod_evasive"

)

Am Ende der Datei fügen wir noch die nötigen Informationen hinzu,
damit Lighttpd weiss wo sich die PHP Binary befindet und wie diese
verwendet werden soll :

cgi.fix_pathinfo = 1


fastcgi.server = ( ".php" => ((

"bin-path" => "/usr/bin/php5-cgi",

"socket" => "/tmp/php.socket",

"max-procs" => 2,

"bin-environment" => (

"PHP_FCGI_CHILDREN" => "4",

"PHP_FCGI_MAX_REQUESTS" => "2000"

),

"bin-copy-environment" => (

"PATH", "SHELL", "USER"

),

"broken-scriptfilename" => "enable"

)))

Das war es auch schon mit Lighttpd. Nun könnt Ihr unter /var/www einfach mal eine neue Datei phpinfo.php anlegen und diese mit folgendem Inhalt füllen :

<?php

phpinfo();

?>

Danach sollte der Aufruf von <ip.adress.des.servers>/phpinfo.php die Umgebungsvariablen der Konfiguration ausspucken - PHP und Lighttpd laufen also - klasse !


3. Schritt (OpenVCP)


Die Installation von OpenVCP
gliedert sich in zwei Schritte. Zum Einen gilt es den OpenVCP Daemon zu
installieren, als auch die Weboberfläche mit welcher der Daemon dann
spaeter angesprochen wird. Wir fangen hier zunächst mit dem Daemon an
und installieren dann folglich die Weboberfläche.


3.1 Schritt (OpenVCP - Daemon)


Aufgrund
eines Fehlers im aktuellen tarball des OpenVCP Projektes müssen wir auf
die aktuellste Version im Trunk zurückgreifen. Diese laden wir mittels
dem folgenden Befehl herunter:

svn co svn://openvcp.org/openvcp/trunk/daemon

Da
wir die SVN-Version nutzen, müssen wir jetzt in das gerade erstellte
Verzeichnis vom openvcp-daemon wechseln und eine configure Datei von
autoconf erstellen lassen. Dafür geben wir im openvcp-daemon
Verzeichnis einfach ein:

autoconf

Wir haben nun alles nötige und können den Daemon konfigurieren und kompilieren:

./configure --prefix=/usr --sysconfdir=/etc

make

make install

Wenn wir noch IPv6 und/oder GnuTLS verwenden möchten (z.B. für eine sichere Verbindung zwischen Daemon und Weboberfläche) ist --with-gnutls --with-ipv6 an den Befehl mit anzuhaengen. Danach ändern wir in der Datei /etc/openvcpd.conf den Parameter IP= in die IP des Hostnodes sowie Ifaces= auf das Interface auf welchem wir den Traffic loggen möchten (meistens Ifaces=eth0).


Jetzt noch den Daemon mittels der Eingabe openvcpd starten und er laeuft!


3.2 Schritt (OpenVCP - Weboberfläche)


Damit wir auch die aktuellste Weboberfläche haben, laden wir diese ebenfalls per SVN aus dem Trunk herunter:

svn co svn://openvcp.org/openvcp/trunk/webinterface

Wir kopieren alle Dateien aus dem Ordner nach /var/www/openvcp. Danach passen wir noch folgenden Rechte an Dateien und Ordnern an (ausführen aus dem Order /var/www/openvcp):

chmod 777 install.php;chown www-data.www-data core/openvcp.conf;chmod 777 core/cache

Danach rufen wir zur Installation der Weboberfläche
<ip.des.host.systems>/openvcp/install.php auf und setzen
unsere Einstellungen. Kleiner Tipp am Rande: Man kann zusätzlich noch
PhpMyAdmin installieren und einen neuen Datenbanknutzer und eine neue
Datenbank erstellen, damit nicht alles unter Root laufen muss.


Wenn wir dies geschafft haben läuft nun auch das OpenVCP-Webinterface und wir können auf dieses zugreifen und uns mit Admin:test einloggen!


4 Schritt (Erstellen von Linux-VServer-Guest-Images)


Um natürlich auch Guests aus
dem Webinterface zu installieren, müssen zunächst einmal Images unter
/<dein_vserver_pfad>/images erstellt werden. Hierzu gibt es hier ein englisches Tutorial. Aber ich erkläre es mal etwas ausführlicher.


Zunächst müssen wir zum erstellen eines Images einen Guest in
der Kommandozeile erstellen. Ich demonstiere dies am Beispiel von der
Erstellung eines Debian Lenny Images. Bevor wir dies machen können
müssen wir jedoch die aktuelle Debootstrap für Debian Guests
einpflegen. Dies machen wir mit:

mkdir /etc/vservers/.defaults/apps/debootstrap

nano /etc/vservers/.defaults/apps/debootstrap/uri

Hier fügen wir dann ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.20_all.deb ein und speichern die Datei. Nun erstellen wir den Guest in der Kommandozeile mittels:

vserver vserver1 build \

-m debootstrap --context 42 \

--hostname vserver1.mydomain.com \

--interface eth0:192.168.1.10/24 \

-- -d lenny -m ftp.de.debian.org/debian

Was
da für eine IP steht ist egal, genauso wie der Hostname, dies brauchen
wir nicht. Folglich wird ein Guest in dem definierten
Linux-VServer-Root
installiert. Nun müssen wir noch nachträglich ssh in der VM
installieren und können dies als Image nutzen. SSH deswegen, weil wir
nicht jedes mal nach erstellen einer VM SSH nachträglich installieren
wollen.


Wir gehen in den neuen Guest mittels folgendem Kommando rein:

vserver vserver1 start

vserver vserver1 enter

Nun installieren wir mittels apt-get openssh-server
den SSH Server und loggen uns wieder aus (CTRL+D). Das wars! Natürlich
kann man auch andere Pakete vorinstallieren - ich belasse es aber bei
einer kleinen und sauberen Installation.


Nun
kopieren wir den Inhalt des vserver1 Verzeichnisse zu den Images.
Hierzu erstellen wir im images Order ein Verzeichnis mit dem Namen
unseres Images und kopieren alle Dateien aus dem zuvor erstellen
Guest in dieses. Z.B:

mkdir /vserver-verzeichnis/images/debian_lenny_32bit

cp -a /vserver-verzeichnis/vserver1/* /vserver-verzeichnis/images/debian_lenny_32bit

Nun
liegen alle Ordner des vserver1 im Imageordner. Zeit den vserver1
wieder zu löschen, denn nur hierfür haben wir diesen gebraucht:

vserver vserver1 stop

vserver vserver1 delete

Wenn hier ein Fehler passiert, gebt vorher noch "mkdir /vserver-verzeichnis/.pkg" ein und wiederholt den Befehl zum Löschen.


Wir haben nun alle Vorbereitungen getroffen - es kann losgehen


5 Schritt (Anlegen von Nutzern und erstellen von Linux-VServer Guests)


Wir fügen im Webinterface unter Nodes -> Add Node unseren Daemon hinzu. Die IP ist hier die IP des Hostsystems, Port 6000 und Passwort - per Default - "test" ein.


Jetzt ist unser Node hinzugefügt und wir können IP's hinzufügen, welche wir später für unsere Guests verwenden möchten. Hierzu klickt man im linken Menü einfach auf den Nodenamen und dann "add-ip". Hier trägt man die Daten ein und lässt die IP's hinzufügen.


Dann können wir einen Customer anlegen und folglich einen Linux-Vserver-Guest. Die jeweiligen Settings sind bitte selbst zu definieren.


6 Schritt (IPV6 mit SixxS)


Vorraussetzung : Man hat bereits gute Kenntnisse mit SixxS und hat bereits ein Subnet beantragt (/48) ! Um den Guests IPv6 Support zu spendieren müssen wir auf dem Hostnode aiccu installieren :

apt-get install aiccu

Danach
einfache SixxS Usernamen und Passwort eintragen und mittels ifconfig
schauen ob auf dem Hostsystem ipv6 läuft. GGF noch mit einem ping6 zu
einem IPv6 Server testen:

hostnode:/root# ping6 www.ipv6.t-online.de

PING www.ipv6.t-online.de(www.ipv6.t-online.de) 56 data bytes

64 bytes from www.ipv6.t-online.de: icmp_seq=1 ttl=52 time=60.9 ms

64 bytes from www.ipv6.t-online.de: icmp_seq=2 ttl=52 time=57.0 ms

64 bytes from www.ipv6.t-online.de: icmp_seq=3 ttl=52 time=57.4 ms


--- www.ipv6.t-online.de ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2001ms

rtt min/avg/max/mdev = 57.069/58.481/60.975/1.779 ms

Es läuft. Um den Nodes nun IPv6 Adressen aus dem Subnet spendieren
zu können, können wir im Moment leider nicht das Webinterface nutzen.
Hierfür ist gute alte Shell-Handarbeit nötig :mrgreen:


Umgebungsinfos für das Beispiel - damit man weiss wovon ich spreche :

VServername : vserver1

IPv6 Subnet (von SixxS zugeteilt) : 2001:6f8:123a::/48

Aus dem /48er Subnetz können wir jetzt theoretisch 65535 /64er
Subnetze machen, ich entscheide mich mal für eins hier - und zwar 2001:6f8:123a:ffff::/64.


Per Hand erstellen wir in /etc/vservers/vserver1/interfaces/ ein
neues Interface. Es sollte bereits ein Ordner "0" (null) vorhanden
sein, darum erstellen wir den Ordner "1" und kopieren die Dateien aus
dem Ordner "0" in den neuen Ordner "1".

mkdir /etc/vservers/vserver1/interfaces/1

cp -a /etc/vservers/vserver1/interfaces/0/* /etc/vservers/vserver1/interfaces/1

Jetzt geht es an das Ändern des neuen Interfaces, damit wir auch dem Guests eine IPv6 Adresse spendieren können wäre ich jetzt mal eine aus : 2001:6f8:123a:ffff::1. Wir wechseln in das Verzeichnis

cd /etc/vservers/vserver1/interfaces/1

Hier ändern wir die Dateien (z.B. mit vi oder nano):


bcast

  • ff::

dev

  • sixxs

ip

  • 2001:6f8:123a:ffff::1

mask

  • 64

name

  • ! bleibt unverändert !

Jetzt restarten wir den Guest und haben IPv6 Support im Gastsystem.


HERZLICHEN GLÜCKWUNSCH !!

[TAGS: ]

25.10.09
DIESEN ARTIKEL>>  
BEWERTEN>>
  • Kommentare 1

Updated

Heute

-8 - -3

Morgen

-12 - -1

Suche

Tagcloud

"König Gute Laune" 0x33.de A250 A39 adendorf Affen Agamen Ahangama Aktionstag aktiv AKW Amphibien Andreas Asien astra Aufmarsch Ausfahrten Autobahn barcelona Bardowick befahrbar Beinschild betrunken bier Bike Bilder BiRadlon Burgman camargue Ceylon Club Colombo Community Conficker Dachtmissen Daelim dedizierter server Demo Digitale Fotografie digitale Spiegelreflex-Kameras Dink dns domain dovecot Dritter Tag DSLR Eckart von Hirschhausen Edelsteine edv eis Elbe Elefanten Embsen Englisch Erholung Erster Tag Essen fahren Fahrer Fahrrad Familie FDP Ferien Fische Flo Floo florian florian strankowski Flugreise Forsight foto Fotoflo Fotograf Fraktion frankreich Friedrich Frühling Fun Garage garage lüneburg Gebietsreform Geckos Giftschlangen Gilera Girlsday Gold google google apps Grand Gro0roller Grundstücke Gästehäuser Hafen Hamburg Harburg Haus Heide Helix Helm Helmfach Hexagon Hikkaduwa Holidays Hoopte hosting HSV http://www.0x33.de http://www.0x33.de/news/diverses/99-zweites-servicepack-fuer-windows-vista-ist-da Hörnchen imap Informationen Insekten Inserate Kandy kaufen Kirchgellersen Kleinanzeigen Kleinanzeigenmarkt Klima Kreidler Krümmel Kurpark Kymco Lanka Lauenburg Lebensqulität Leukämiefälle Lokalpolitik lz Lüneburg Lünepost maildaemon Majesty mallorca Marl Melbeck Mercedes Michel Microsoft Mietwohnungen Motorrad Motorradgottesdienst Motorroller mx Naturfotos Navi Nazi nicht Niedersachsen Nordsee Ostsee ovh Packtaschen Pantheon parties Party Partyfotograf partyreporter Piaggio Pinnawela Platz Polizei pop3 Praktikum private Gästehäuser projekt Protest Rad radwege rasen Reeperbahn reise Reisebericht Reiseinfos Reppenstedt Reptilien Rex Roller Rollerfahrer rollern Rollertreffen Roter rps Rundreisen Scharnebeck Schildkröten Schlangen Schmuck schnee Schrägaufzug Scooter sendmail server Service Pack 2 Silber Singhalesisch Sitzbank Sommer Sonne Sonnenschein Soziale Gerechtigkeit Sozius spamassasin Sport Sprache Sri Sri Lanka Live strankowski Sturzhelm Suzuki Sven Distel Südergellersen Tamilisch Tee Tiere Topcase Tour Touren Travel Trojaner Tschernobyl tödlich umzug Unawatuna unfall Urlaub Urlaub buchen planen suchen machen Urlaub mit Kinder US-Store Vamos Vattenfall Verbrannt verkaufen Vespa Vierter Tag Viren Virenschutz vserver Vögel Weligama Werkstatt Westergellersen Wetter wettessen Wilhelm Bischof Windows Windows 7 Windows Updates Windschild Winsen Wohnung Wohnungssuche Wunderbar Währung Yamaha Zeitverschiebung Zollenspieker zu schnell Zukunftstag Zweiter Tag ^^