looser27
Goto Top

Server Virtualisierung Ubuntu 16.04

Lange Zeit habe ich für jeden Dienst (RADIUS, INTRANET, OPSI, NAGIOS) jeweils einen betagten PC zum Ubuntu Server aufgewertet (natürlich ohne Änderung der Hardware...).
Da aber die Vielzahl an alten PCs zum Einen meinen Serverraum vollstopfen und zum anderen auch übermäßig viel Energie vernichten, habe ich nach einer Lösung zum Virtualisieren gesucht.
Da Ubuntu 16.04. LTS Server bei mir zum Einsatz kommen soll, lag es nahe LXC zu verwenden.

Für diejenigen von Euch, die ähnliche Probleme haben oder es einfach mal so probieren möchten, habe ich das mal zusammengetragen.

Als erstes installiert man einen 16.04. LTS Server. Die DHCP-Vergabe der Netzwerkadresse am Besten abbrechen und schon mal die HOST-IP manuell eintragen.
In der Paketauswahl habe ich lediglich den SSH-Server hinzugewählt, damit ich per putty nachher weiterarbeiten kann.

Die HOST-IP sollte man dann auch im Domain-Controller im DNS-Server hinterlegen.

1. Vorbereitungen:
NTP für den HOST einrichten

Hierzu lädt man das Paket ntp nach:
sudo apt-get install ntp

Nach erfolgreicher Installation beendet man den ntp-Dienst:
sudo /etc/init.d/ntp stop

und verändert die /etc/ntp.conf. Ich habe alle ntp-Server auskommentiert und meinen Domain-internen ntp-Server eingetragen.

Anschließend den ntp-Dienst in die Autostart-Routine aufnehmen
sudo update-rc.d ntp defaults

und den Dienst neu starten
sudo /etc/init.d/ntp start

Netzwerkbrücke einrichten
Da ich möchte, dass alle virtuellen Maschinen eine IP aus meinem eigentlichen Netzwerk bekommen, habe ich die Netzwerkbrücke wie folgt in der /etc/network/interfaces definiert:
# Network Bridge for virtual machines
#Bridge Name
auto br0
#Bridge information
iface br0 inet static
bridge_ports enp0s7 (das ist das Interface des Hosts)
bridge_stp off
bridge_fd 9
#Bridge IP
address 192.168.10.198
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.10.100 (Das ist mein DNS-Server)
dns-search Meine.Domain


2. Installation LXC:
Als nächstes installiert man die benötigten Pakete:
sudo apt-get install lxc lxc-templates wget bridge-utils

Die Installation dauert eine ganze Weile. Nachdem diese fertig ist kann man mit einem
sudo lxc-checkconfig
testen, ob das Ganze lauffähig ist.

Anmerkung: Die CPU sollte Virtualisierung unterstützen! Das kann man im BIOS prüfen und ggf. einschalten.

3. Konfiguration LXC-Host:
In der Datei /etc/default/lxc-net ändert man den Eintrag
USE_LXC_BRIDGE="false"  

entsprechend, da wir eine eigene Netzwerkbrücke verwenden möchten.

In der Datei /etc/lxc/default.conf ändert man nun noch den Eintrag für die Netzwerkbrücke
lxc.network.link = br0 (das ist der Name meiner Netzwerkbrücke)

4. LXC-Client (Container) erzeugen:
Hierzu erzeugt man mit
sudo lxc-create -n CONTAINERNAME -t ubuntu

einen Container. Als Vorlage für den Container wird hier Ubuntu verwendet, denn ich möchte nur Ubuntu-VMs auf einem Ubuntu-Host laufen haben.

Wenn der Container fertig erzeugt ist, wird der Standard-Admin und das entsprechende Passwort angezeigt. In diesem Fall ist das der User ubuntu und das Passwort ubuntu.

Mit einem
sudo lxc-start -n ubuntu_lxc -d
startet man den Container im Hintergrund.
Damit der Container nach einem Host-Reboot auch wieder automatisch startet hängt man in der /var/lib/lxc/CONTAINERNAME/config
# Autostart
lxc.start.auto = 1
lxc.start.delay = 5
lxc.start.order = 100
ans Ende dran.

Nach einem Reboot des Hosts und der Eingabe von
sudo lxc-ls --fancy
sollte das Ergebnis so aussehen:
NAME                  STATE         AUTOSTART GROUPS IPV4             IPV6
CONTAINER             RUNNING            1        -  192.168.10.196    -

5. Container Konfiguration:

Zugriff auf den Container erhält man nun entweder per putty in einer separaten Sitzung oder mittels
sudo lxc-console -n CONTAINERNAME

in der gleichen Sitzung.
Beenden kann man diese dann mit
STRG+a q

Der frisch erzeugte Container ist leider in der falschen Zeitzone. Also mit einem
dpkg-reconfigure tzdata
die richtige Zeitzone einstellen.

Anschließend analog zum Host den ntp-Dienst installieren, konfigurieren und der Autostart hinzufügen.

Da der Standard-User als einziger über ROOT-Rechte verfügt, habe ich meinen Standard-Admin hinzugefügt und diesem ebenfalls ROOT-Rechte gegeben.

Möchte man den Container in eine Windows-Domain aufnehmen, so sind noch folgende Anpassungen erforderlich:
  • Die IP-Adresse sollte in der /etc/network/interfaces auf eine statische Adresse geändert werden
  • In der Datei /etc/hosts trägt man unter
127.0.1.1 CONTAINERNAME.MEINE.DOMAIN CONTAINERNAME
ein.
  • Im Windows-DNS-Server muss entsprechend ein DNS-Eintrag auf den Container vorgenommen werden, sonst funktionieren die weiteren Schritte nicht.
Anschließend kann man den Container analog zu dieser Anleitung in die Domain aufnehmen und Dienste installieren / konfigurieren.


Quellen (z.T. in englischer Sprache):
http://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/setup-linux-contain ...
https://thefritzwalther.wordpress.com/2011/02/05/linux-containering-mit- ...
http://askubuntu.com/questions/453659/lxc-containers-fail-to-autoboot-i ...

Content-Key: 308894

Url: https://administrator.de/contentid/308894

Ausgedruckt am: 19.03.2024 um 11:03 Uhr