KVM-Node: Unterschied zwischen den Versionen

Aus sourceDESK Wiki
Wechseln zu: Navigation, Suche
(Konfiguration)
Zeile 1: Zeile 1:
Diese Anleitung beschreibt die Konfiguration von KVM-Nodes für das sourceDESK-Plugin für KVM-vServer. Als System wird hier '''CentOS 7''' verwendet, dies sollte 64-bit sein, auch wenn 32-bit theoretisch von KVM unterstützt wird.
+
Diese Anleitung beschreibt die Konfiguration von KVM-Nodes für das sourceDESK-Plugin für KVM-vServer. Als System wird hier '''CentOS 6''' verwendet, dies sollte 64-bit sein, auch wenn 32-bit theoretisch von KVM unterstützt wird.
  
 
== Software-Installation ==
 
== Software-Installation ==
Zeile 13: Zeile 13:
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
yum -y install @virt* dejavu-lgc-* xorg-x11-xauth tigervnc libguestfs-tools policycoreutils-python bridge-utils uuid
+
yum -y install kvm libvirt python-virtinst qemu-kvm uuid bridge-utils
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== Konfiguration ==
 
== Konfiguration ==
Zuerst sollte der Hostname des Nodes konfiguriert werden. Dieser wird in die Datei ''/etc/hostname'' eingetragen und über das Kommando ''hostname'' gesetzt.
+
Zuerst sollte der Hostname des Nodes konfiguriert werden. Dieser wird in die Datei ''/etc/sysconfig/network'' eingetragen und über das Kommando ''hostname'' gesetzt.
  
 
Die System-Zeit und die Zeitzone sollte überprüft werden, diese Einstellungen müssen korrekt sein. Die Zeitzone können wir wie folgt auf die deutsche Zeitzone stellen:
 
Die System-Zeit und die Zeitzone sollte überprüft werden, diese Einstellungen müssen korrekt sein. Die Zeitzone können wir wie folgt auf die deutsche Zeitzone stellen:
Zeile 40: Zeile 40:
 
Eine Portänderung von SSH ist möglich, auch wenn wir davon abraten. Wenn der Port geändert wird, auf jeden Fall einen Port kleiner als 1024 wählen! Passwort-Authentifizierung darf nicht deaktiviert werden.
 
Eine Portänderung von SSH ist möglich, auch wenn wir davon abraten. Wenn der Port geändert wird, auf jeden Fall einen Port kleiner als 1024 wählen! Passwort-Authentifizierung darf nicht deaktiviert werden.
  
Wir müssen nun sicherstellen, dass Packet Forwarding aktiviert ist. Gleichzeitig konfigurieren wir den Autostart für den Daemon:
+
Wir konfigurieren nun den Autostart für den Daemon:
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
sed -i 's/^\(net.ipv4.ip_forward =\).*/\1 1/' /etc/sysctl.conf
 
sysctl -p
 
 
chkconfig libvirtd on
 
chkconfig libvirtd on
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Jetzt wird noch die Netzwerkkonfiguration durchgeführt:
+
Jetzt wird noch die Netzwerkkonfiguration durchgeführt. Dazu erstellen wir die Datei ''/etc/sysconfig/network-scripts/ifcfg-br0'' mit folgendem Inhalt:
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
chkconfig network on
+
DEVICE="br0"
yum -y erase NetworkManager
+
NM_CONTROLLED="yes"
cp -p /etc/sysconfig/network-scripts/ifcfg-{eth0,br0}
+
ONBOOT=yes
sed -i -e'/HWADDR/d' -e'/UUID/d' -e's/eth0/br0/' -e's/Ethernet/Bridge/' /etc/sysconfig/network-scripts/ifcfg-br0
+
TYPE=Bridge
echo DELAY=0 >> /etc/sysconfig/network-scripts/ifcfg-br0
+
BOOTPROTO=none
echo 'BOOTPROTO="none"' >> /etc/sysconfig/network-scripts/ifcfg-eth0
+
IPADDR=...
echo BRIDGE=br0 >> /etc/sysconfig/network-scripts/ifcfg-eth0
+
PREFIX=...
 +
GATEWAY=...
 +
DNS1=...
 +
DNS2=...
 +
DEFROUTE=yes
 +
IPV4_FAILURE_FATAL=yes
 +
IPV6INIT=no
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
Bitte nehmen Sie die Werte ''IPADDR'', ''PREFIX'', ''GATEWAY'', ''DNS1'' und ''DNS2'' aus der Datei ''/etc/sysconfig/network-scripts/ifcfg-eth0''. In dieser Datei kommentieren Sie zusätzliche die Werte ''BOOTPROTO'', ''IPADDR'', ''PREFIX'', ''GATEWAY'', ''DNS1'' und ''DNS2'' mit einem vorangestellten ''#'' aus. Hinzu fügen Sie bitte am Ende der Datei den Wert ''BRIDGE=br0''.
  
 
Zum Schluss starten wir den Server neu:
 
Zum Schluss starten wir den Server neu:

Version vom 31. August 2016, 15:39 Uhr

Diese Anleitung beschreibt die Konfiguration von KVM-Nodes für das sourceDESK-Plugin für KVM-vServer. Als System wird hier CentOS 6 verwendet, dies sollte 64-bit sein, auch wenn 32-bit theoretisch von KVM unterstützt wird.

Software-Installation

Zuerst prüfen wir, ob die verbaute CPU Hardware-Virtualisierung unterstützt.

egrep '(vmx|svm)' --color /proc/cpuinfo

In der Ausgabe muss vmx oder svm auftauchen, ansonsten kann die CPU nicht für KVM verwendet werden.

Nun installieren wir KVM und Tools zur Verwaltung.

yum -y install kvm libvirt python-virtinst qemu-kvm uuid bridge-utils

Konfiguration

Zuerst sollte der Hostname des Nodes konfiguriert werden. Dieser wird in die Datei /etc/sysconfig/network eingetragen und über das Kommando hostname gesetzt.

Die System-Zeit und die Zeitzone sollte überprüft werden, diese Einstellungen müssen korrekt sein. Die Zeitzone können wir wie folgt auf die deutsche Zeitzone stellen:

rm -f /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime

Die Zeit können wir recht einfach synchronisieren, sofern das Paket ntp installiert ist:

ntpdate pool.ntp.org

Um den SSH-Login schneller zu machen, bearbeiten wir die Datei /etc/ssh/sshd_config und fügen folgendes am Ende ein:

UseDNS no

Eine Portänderung von SSH ist möglich, auch wenn wir davon abraten. Wenn der Port geändert wird, auf jeden Fall einen Port kleiner als 1024 wählen! Passwort-Authentifizierung darf nicht deaktiviert werden.

Wir konfigurieren nun den Autostart für den Daemon:

chkconfig libvirtd on

Jetzt wird noch die Netzwerkkonfiguration durchgeführt. Dazu erstellen wir die Datei /etc/sysconfig/network-scripts/ifcfg-br0 mit folgendem Inhalt:

DEVICE="br0"
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=...
PREFIX=...
GATEWAY=...
DNS1=...
DNS2=...
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no

Bitte nehmen Sie die Werte IPADDR, PREFIX, GATEWAY, DNS1 und DNS2 aus der Datei /etc/sysconfig/network-scripts/ifcfg-eth0. In dieser Datei kommentieren Sie zusätzliche die Werte BOOTPROTO, IPADDR, PREFIX, GATEWAY, DNS1 und DNS2 mit einem vorangestellten # aus. Hinzu fügen Sie bitte am Ende der Datei den Wert BRIDGE=br0.

Zum Schluss starten wir den Server neu:

shutdown -r now

Templates

Da die Betriebssystem-Installation bei KVM vom Nutzer via VNC erfolgt, ist eine ISO-Datei notwendig, die dann beim Boot-Vorgang eingebunden wird. Es kann hier also theoretisch jedes Betriebssystem verwendet werden, auch Windows.

Die entsprechenden Distributionen kann man also direkt auf der jeweiligen Seite der Distribution herunterladen.

Der Einfachheit halber nutzt sourceDESK nur ISO-Dateien aus dem Verzeichnis /var/lib/libvirt/iso. Dorthin laden Sie bitte sämtliche ISO-Dateien, die Sie mit KVM verwenden möchten.

Zu Testzwecken laden wir einfach eine minimale Debian-Version mit Netinstall:

cd /var/lib/libvirt/iso
wget http://cdimage.debian.org/debian-cd/8.5.0/amd64/iso-cd/debian-8.5.0-amd64-netinst.iso

Testen

Wir erstellen nun die Verzeichnisse /home/xml und /home/hdd:

mkdir -p /home/xml
mkdir -p /home/hdd

Wir erstellen nun die Datei /home/xml/test.xml mit folgendem Inhalt:

<domain type='kvm'>
  <name>test</name>
  <uuid>f5b8c05b-9c7a-3211-49b9-2bd635f7e2aa</uuid>
  <memory>1048576</memory>
  <currentMemory>1048576</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type>hvm</type>
    <boot dev='cdrom'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="raw"/>
      <source file="/home/hdd/test.img"/>
      <target dev="vda" bus="virtio"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
    </disk>
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw"/>
      <source file="/home/iso/debian-8.5.0-amd64-netinst.iso"/>
      <target dev="hdc" bus="ide"/>
      <readonly/>
      <address type="drive" controller="0" bus="1" target="0" unit="0"/>
    </disk>
    <interface type='bridge'>
      <source bridge='br0'/>
      <mac address="00:00:A3:B0:56:10"/>
    </interface>
    <controller type="ide" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1"/>
    </controller>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' listen='0.0.0.0' passwd='test1234'/>
    <console type='pty'>
      <target port='0'/>
    </console>
  </devices>
</domain>

Nun muss die Festplatte noch erstellt werden, wir nutzen hierzu qcow2 als Image-Format:

qemu-img create -f qcow2 /home/hdd/test.img 10G

Damit haben eine 10 GB große Festplatte und erstellen nun den vServer mit einem CPU-Kern und 1 GB RAM:

virsh create /home/xml/test.xml

Nun sollte die VM ein virtuelles Interface vnet0 bei der Bridge br0 bekommen haben, das überprüfen wir:

brctl show

Es sollte nun auch ein VNC-Server auf Port 5900 gestartet wurden sein, dies können wir auch prüfen:

netstat -nap | egrep '(kvm|qemu)'

Als nächstes verbinden wir uns mit einem VNC-Client auf den Host-Server auf Port 5900, hier hört der VNC-Server der VM. Das Passwort lautet test1234.

Freie IP-Adressen

Damit sourceDESK weiß, welche IP-Adressen für die vServer noch zur Verfügung stehen, muss die Datei /root/free-v4.txt und/oder /root/free-v6.txt angelegt werden. In diese Dateien wird pro Zeile eine freie IPv4-/IPv6-Adresse eingetragen, sowie getrennt durch ein Semikolon das Gateway.

Beispiel:

1.2.3.4;5.6.7.8
5.6.7.8;5.6.7.8
9.0.1.2;5.6.7.8

Hinzufügen

Beim Hinzufügen eines Produktes in sourceDESK muss nur der Hostname (eventuell mit geändertem SSH-Port, zum Beispiel vm01.sourceway.de:923) und das Root-Passwort angegeben werden.

Sie können sodann die Einstellungen für den vServer vornehmen, hier können Sie die Anzahl der CPU-Kerne, den Arbeitsspeicher und die Festplatte einstellen.