Live-KVM-Migration von zwei Rechnern, während die IP-Statik der überbrückten Gaststationen beibehalten wird

511
amir mohamad hatami

Auf jedem Ubuntu-PC habe ich KVM installiert und einige VMs erstellt. Alle VMs auf jedem PC sollten sich sehen, daher konnte ich die von KVM und AFAIK zugewiesene private IP-Adresse nicht verwenden, für die eine Bridge erstellt werden muss, damit ihre IPs für einander sichtbar sind. Die beiden Maschinen sind über einen Router miteinander verbunden.

Jetzt möchte ich eine dieser VMs von einer Seite auf eine andere Seite migrieren. Die zuerst definierte IP-Adresse sollte jedoch konstant gehalten werden. Kann mit diesen Bedingungen eine Live-Migration durchgeführt werden? Wenn nicht, oder Sie andere bessere Möglichkeiten kennen, bitte beraten Sie.

0
Definieren Sie "live". Wie beabsichtigen Sie, den Status einer VM von einem Host auf den anderen Host zu übertragen? Ist es in Ordnung, auszusetzen und dann zu übertragen und dann fortzusetzen? Wenn ja, können Sie dieselbe IP-Adresse beibehalten, und die VM sollte die Übertragung als eine kurze Unterbrechung der Netzwerkkonnektivität empfinden. dirkt vor 5 Jahren 0
KVM hat eine bekannte Definition für Live-Migration und unterscheidet sich von anderen Migrationstypen. Sie können hier mehr https://www.linux-kvm.org/page/Migration sehen amir mohamad hatami vor 5 Jahren 0
* Broadcast "Ich bin hier" Ethernet-Paket, um neuen Standort der NIC (s) anzukündigen. * Es sieht so aus, als ob sie sich bereits um die Migration der IP-Adressen kümmern ... Warum nicht einfach ausprobieren? dirkt vor 5 Jahren 0
Ich mache mir nur Sorgen um die Brücke. Ich weiß, dass die Haupt-IP-Adresse beibehalten werden kann, aber ich bin mir nicht sicher, welche IP-Adresse die Brücke hat. Ein Blick in die Folie hier https://www.slideshare.net/ShivamSingh249/live-vm-migration in Seite 37 Ich habe Zweifel, ob es funktioniert oder nicht amir mohamad hatami vor 5 Jahren 0

1 Antwort auf die Frage

0
suraj singh

Bei der Live-Migration wird eine laufende virtuelle Maschine (VM) von einem physischen Server auf einen anderen verschoben, ohne die Verfügbarkeit der virtuellen Maschine für Benutzer zu beeinträchtigen. Das Ziel einer VM-Live-Migration besteht darin, die Durchführung von Wartungsarbeiten oder Upgrades auf einer VM zu ermöglichen, ohne dass Benutzer der virtuellen Maschine während der Migration Ausfallzeiten haben. Live-Migrationen werden auch als nahtlose Live-Migrationen bezeichnet, wenn während des Migrationsprozesses keine erkennbaren Ausfallzeiten für den Endbenutzer auftreten.

Anforderung:

  1. Unterstützen Sie die Hardwarevirtualisierung.
  2. Verwenden Sie Prozessoren des gleichen Herstellers. Zum Beispiel alle AMD oder alle Intel.
  3. Gehören zu derselben Active Directory-Domäne oder zu Domänen, die sich gegenseitig vertrauen.
  4. Virtuelle Maschinen müssen für die Verwendung von virtuellen Festplatten oder virtuellen Fibre Channel-Festplatten (keine physischen Festplatten) konfiguriert sein.

Überblick:

  1. Live-Migrations-Setup findet statt. Während der Installation der Live-Migration stellt der Quellserver eine Verbindung mit dem Zielserver her. Diese Verbindung überträgt die Konfigurationsdaten der virtuellen Maschine an den Zielserver. Auf dem Zielserver ist eine virtuelle Skelettmaschine eingerichtet, und der virtuellen Zielmaschine wird Speicher zugewiesen.

  2. Speicherseiten werden vom Quellknoten zum Zielknoten übertragen. In der zweiten Phase einer Live-Migration wird der der migrierenden virtuellen Maschine zugewiesene Speicher über das Netzwerk auf den Zielserver kopiert. Dieser Speicher wird als "Arbeitssatz" der migrierenden virtuellen Maschine bezeichnet. Eine Speicherseite ist 4 KB.

  3. Geänderte Seiten werden übertragen. Die dritte Phase einer Live-Migration ist ein Speicherkopieprozess, bei dem die verbleibenden modifizierten Speicherseiten für „Test Virtual Machine“ auf den Zielserver kopiert werden. Der Quellserver überträgt den CPU- und Gerätezustand der virtuellen Maschine an den Zielserver.

  4. Das Speicher-Handle wird vom Quellserver zum Zielserver verschoben. Während der vierten Phase einer Live-Migration wird die Steuerung des mit „Test Virtual Machine“ verknüpften Speichers, wie etwa virtuelle Festplattendateien oder physischer Speicher, der über einen virtuellen Fibre Channel-Adapter angeschlossen ist, auf den Zielserver übertragen.

  5. Die virtuelle Maschine wird auf dem Zielserver online geschaltet. In der fünften Phase einer Live-Migration verfügt der Zielserver jetzt über das aktuelle Arbeitspaket für "Test Virtual Machine" sowie den Zugriff auf den von "Test Virtual Machine" verwendeten Speicher. An dieser Stelle "Test Virtual" Maschine ”wird fortgesetzt.

  6. Netzwerkbereinigung erfolgt. In der letzten Phase einer Live-Migration wird die migrierte virtuelle Maschine auf dem Zielserver ausgeführt. Zu diesem Zeitpunkt wird eine Nachricht an den Netzwerk-Switch gesendet. Diese Nachricht bewirkt, dass der Netzwerk-Switch die neuen MAC-Adressen der migrierten virtuellen Maschine abruft, sodass der Netzwerkverkehr von und zur „Test Virtual Machine“ den richtigen Switch-Port verwenden kann.

Die folgenden Variablen können die Geschwindigkeit der Livemigration beeinflussen:

• Anzahl der modifizierten Seiten auf der virtuellen Maschine, die migriert werden sollen: Je größer die Anzahl der modifizierten Seiten ist, desto länger verbleibt die virtuelle Maschine im Migrationsstatus.

• Verfügbare Netzwerkbandbreite zwischen Quell- und Zielservern.

• Hardwarekonfiguration der Quell- und Zielserver.

• Laden auf Quell- und Zielserver.

• Verfügbare Bandbreite (Netzwerk oder Fibre Channel) zwischen Servern und gemeinsam genutztem Speicher.

SCHRITTE :

  1. Erstellen eines NFS-Pool-Speichers: NFS-Pools sind Speicherressourcen, die von OVP-Hosts bereitgestellt werden und von virtuellen Maschinen zu Speicherzwecken verwendet werden.

    1.1 Setup-NFS-Pool-Verzeichnis. Erstellen Sie das Poolverzeichnis.

    # mkdir -p /export/x86-64-kvm-guest-pool 

    Bearbeiten Sie / etc / exports, um die entsprechende Exportzeile hinzuzufügen.

    # cat /etc/exports /export/x86-64-kvm-guest-pool *(rw,no_subtree_check,insecure,no_root_squash) 

    Teilen Sie dem NFS-Server mit, die Exportkonfigurationsdatei erneut zu laden.

    # exportfs –a 

    1.2 Stellen Sie eine Verbindung zum QEMU-Hypervisor her.

    # virsh connect qemu:///system 

    1.3 Laden Sie die Konfigurationsdatei für den NFS-Pool.

    Es wird empfohlen, vor dem Laden der Konfigurationsdatei zu überprüfen, dass die Variable POOL_HOST einen vollständig qualifizierten Namen und nicht einen lokalen Namen wie localhost enthält. Durch die Verwendung vollständig qualifizierter Namen können virtuelle Maschinen die erforderlichen Speicherressourcen finden, selbst wenn sie über verschiedene OVP-Hosts migrieren.

    # cat xmlDir/x86-64-kvm-guest-pool.xml  <pool type="netfs"> <name>x86-64-kvm-guest-pool</name> <source> <host name='HOST_NAME'/> <dir path='/export/x86-64-kvm-guest-pool/'/> </source> <target> <path>/export/images/</path> </target> </pool> # virsh pool-define xmlDir/x86-64-kvm-guest-pool.xml 

    HINWEIS: Alle Beispieldateien mit Standardwerten generieren.

     # libvirt-xml-examples # ls x86-64-kvm-guest-glusterfs-qcow2.xml x86-64-kvm-guest-local-qcow2.xml x86-64-kvm-guest-nfs-qcow2.xml x86-64-kvm-guest-pool x86-64-kvm-guest-glusterfs-raw.xml x86-64-kvm-guest-local-raw.xml x86-64-kvm-guest-nfs-raw.xml x86-64-kvm-guest-pool.xml 

    1.4 Starten Sie den Speicherpool

     # virsh pool-start x86-64-kvm-guest-pool 

    Hinweis: Bei virsh handelt es sich um ein Befehlszeilenschnittstellentool zum Verwalten von virtuellen Gastmaschinen und des Hypervisors. Das Befehlszeilenprogramm virsh basiert auf der libvirt-Verwaltungs-API und ist eine Alternative zum Befehl qemu-kvm und zur grafischen Virt-Manager-Anwendung.

    1.5 Erstellen Sie das Speichervolume im Speicherpool x86-64-kvm-guest-pool.

     # virsh vol-create-as x86-64-kvm-guest-pool x86-64-kvm-guest-vda.raw 10G --format raw 
  2. Starten einer virtuellen Maschine auf dem Quellserver.

    2.1 Erstellen Sie eine Linux Bridge für die Netzwerkverbindung zur VM

     brctl addbr <BRIDGE_NAME> ifconfig <INTERFACE_NAME> 0.0.0.0 promisc up brctl addif <BRIDGE_NAME> <INTERFACE_NAME> ifconfig <BRIDGE_NAME> <BRIDGE_IP> up 

    2.2 Bearbeiten Sie die Konfigurationsdatei der virtuellen Maschine.

     # cp x86-64-kvm-guest-nfs-raw.xml <NAME_FOR_CONF_FILE>.xml #vim <NAME_FOR_CONF_FILE>.xml  <domain type='kvm'> <name>L2_VM2</name> -name for VM ………  <cpu mode='custom' match='exact'> <model fallback='allow'>Conroe</model> <topology sockets='1' cores='3' threads='1'/> - assign vcpus to VM </cpu>  ……..  <devices> <emulator>/usr/bin/kvm</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='….*iso' startupPolicy='optional'> - mention ISO file </source> <target dev='hdc' bus='ide'/> <readonly/> <serial></serial> <boot order='1'/> <alias name='ide0-1-0'/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> 

    …… .. -. Hier weisen Sie den in Abschnitt 1.5 erstellten Speicher zu. VDA ……. - Vergeben Sie einen Namen für die in Abschnitt 2.1 erstellte Bridge. - eindeutig für jede virtuelle Maschine

    2.3 Starten Sie die virtuelle Maschine.

    2.3.1 Verbinden Sie sich mit dem qemu Hypervisor.

     # virsh connect qemu:///system 

    2.3.2 Laden Sie die Konfigurationsdatei der virtuellen Maschine.

     #virsh define xmlDir/x86-64-kvm-guest-nfs-raw.xml - created in section 2.2 

    2.3.3 Starten Sie die VM.

    Dies ist der erste Start der virtuellen Maschine, der das Image des Installationsprogramms lädt. Gastabbild installieren

     #virsh start VM_NAME 

    Überprüfen Sie, ob die virtuelle Maschine läuft. #virsh list Id Name State ------------------------------------------ -------- 8 x86-64-kvm-guest, der ausgeführt werden kann. Kann über eine vnc-Sitzung auf die GUI der virtuellen Maschine zugreifen: - vnc-port 5900.

    2.4.4 Nach erfolgreicher Installation des Betriebssystems. Bearbeiten Sie die Konfigurationsdatei der virtuellen Maschine.

     <devices> <emulator>/usr/bin/kvm</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='….*iso' startupPolicy='optional'> - remove ISO file name . </source> <target dev='hdc' bus='ide'/> <readonly/> <serial></serial> <boot order='1'/> <alias name='ide0-1-0'/> 

    Folgen Sie dem in Abschnitt 2.3 genannten Schritt, um die virtuelle Maschine zu starten.

  3. Migrieren der virtuellen Maschine

    In dieser Übung wird davon ausgegangen, dass der x86-64-kvm-guest der virtuellen Maschine auf dem OVP-Knoten SOURCE_HOST ausgeführt wird und live zum OVP-Knoten TARGET_HOST migriert werden soll. Bevor Sie mit diesem Abschnitt fortfahren, vergewissern Sie sich, dass beide Maschinen für einander zugänglich sind.

    3.1 Erstellen Sie eine Brücke mit demselben Namen in TARGET_HOST wie in Abschnitt 2.1 erstellt.

    3.2 Aktivieren Sie den gemeinsam genutzten NFS-Pool auf dem TARGET_HOST.

     # scp xmlDir/x86-64-kvm-guest-pool.xml root@TARGET_HOST_IP:xmlDir. 

    Folgen Sie den Abschnitten 1.3 und 1.4 von Target_HOST.

    3.3 Starten Sie am SOURCE_HOST die Migration.

     # virsh migrate  --live \ --p2p \ // interface name used for migration --verbose \ --x86-64-kvm-guest \ qemu+tcp://TARGET_HOST/system 

    Stellen Sie sicher, dass die Migration erfolgreich war. Führen Sie den Befehl auf TARGET_HOST aus.

     #virsh list Id Name State ---------------------------------------------------- 8 x86-64-kvm-guest running 
Wenn Sie eine Antwort von irgendwoher kopieren (z. B. von https://knowledge.windriver.com/de-de/000_Products/000/010/040/060/010/000_Wind_River_Linux_Open_Virtualization_Profil%2C_Virtual_Node_User%27C_8_050 ) Sie müssen die Quelle in Ihrem Beitrag angeben. Versuchen Sie auch, die Formatierung besser zu kopieren. Scott vor 5 Jahren 0
Meine Frage ist, ob sie die statische IP-Adresse beibehalten kann oder nicht amir mohamad hatami vor 5 Jahren 0
Ja, IP für migrierte VM bleibt gleich. suraj singh vor 5 Jahren 0
Danke, ich habe einige Formatierungsvorschläge vorgeschlagen. Muss ich jedoch für jede VM, die ich besitze, mehrere Bridges erstellen, oder eine Bridge würde ausreichen? amir mohamad hatami vor 5 Jahren 0
Es ist nur eine Bridge auf Quell- und Zielcomputer mit demselben Namen erforderlich suraj singh vor 5 Jahren 0