Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Oracle Linux Virtualization Manager mit dem Open Virtualization Network Provider auf Oracle Cloud Infrastructure bereitstellen
Einführung
In diesem Tutorial werden wir ein Szenario durchgehen, in dem ein Team die Nutzung einer Flotte von Bare-Metal-Knoten erhöhen möchte, indem es seine vorhandene On-Premises-Umgebung Oracle Linux Virtualization Manager auf Oracle Cloud Infrastructure (OCI) ausdehnt. Durch die Integration der Netzwerkfunktionen von Oracle Cloud in Open Virtual Network (OVN) können Sie die Konnektivität zwischen On-Premise-Ressourcen und bereitgestellten virtuellen Maschinen (VMs) von Oracle Linux Virtualization Manager in OCI über FastConnect überbrücken.
Hinweis: Dieses Tutorial dient nur zu Test- und Evaluierungszwecken. Der Oracle Linux Virtualization Manager-Support für OCI wird derzeit entwickelt und wird für die Verwaltung von OCI-Systemen nicht unterstützt. Die Verwendung von OVN mit Oracle Linux Virtualization Manager befindet sich in der Technologievorschau, was darauf hindeutet, dass sich ein Feature noch in der Entwicklung befindet.
Überblick über die Lösung und Bereitstellung
Lösung – Überblick
Wir benötigen ein neues VCN (10.0.0.0/16
) mit den folgenden Ressourcen:
- Ein öffentliches Subnetz (
10.0.11.0/24
), das für die primäre VNIC der gehosteten Engine verwendet wird. - Ein privates Subnetz (
10.0.12.0/24
), das für die primäre VNIC der Oracle Linux Kernel-basierten VM-(KVM-)Hosts verwendet wird. - Virtual Local Area Network (VLAN) 1000 (
10.0.10.0/24
), das für die Kommunikation zwischen der von Oracle Linux Virtualization Manager gehosteten Engine und KVM-Hosts verwendet wird. - VLAN 1001 (
10.0.20.0/24
) wird verwendet, um die virtuellen OVN-Netzwerke in OCI zu erweitern. - Ein NAT-Gateway.
- Ein Internetgateway.
- Eine private Routentabelle (
0.0.0.0/0
über das NAT-Gateway) und verknüpfen sie mit dem privaten Subnetz und VLAN 1001. - Eine öffentliche Routentabelle (
0.0.0.0/0
über das Internetgateway) und verknüpfen sie mit dem öffentlichen Subnetz. - Sicherheitslisten sollten Folgendes zulassen:
- Alle Egress-Verbindungen (
0.0.0.0/0
) alle Protokolle. - Alle Ingress-Verbindungen von VCN-CIDR (
10.0.0.0/16
). - Ingress-Verbindung für alle Protokolle vom Client-PC.
- Alle Egress-Verbindungen (
Lösungs-Deployment
-
Erstellen Sie eine VM-Instanz (empfohlene Konfiguration: VM.Standard.E5). Flex mit 2 OCPUs/24 GB RAM) mit Oracle Linux 8 für die gehostete Engine. Hängen Sie eine sekundäre VNIC an die VM-Instanz an, und verbinden Sie sie mit dem VLAN 1000.
-
Erstellen Sie zwei BM-Instanzen (empfohlene Konfiguration: BM.Standard.E5.192), auf denen Oracle Linux 8 ausgeführt wird und die als KVM-Hosts verwendet werden. Hängen Sie zwei sekundäre VNICs an jeden der BM-Hosts an, und verbinden Sie sie mit den VLANs 1000 und 1001.
Ziele
- Führen Sie Oracle Linux Virtualization Manager Release 4.5 in OCI aus, und ermöglichen Sie VMs den Zugriff auf das Internet über das OCI-NAT-Gateway.
Voraussetzungen
-
Die von Oracle Linux Virtualization Manager gehostete Engine kann auf einer VM ausgeführt werden (VM.Standard.E5). Flex mit 2 OCPUs/24 GB RAM - getestet).
-
Oracle Linux Kernel-basierte Virtual Machine-(KVM-)Hosts können auf Bare Metal-(BM-)Hosts ausgeführt werden (BM.Standard.E5.192 - getestet).
-
Alle BM-Ressourcen müssen in derselben Availability-Domain (AD) erstellt werden.
-
Auf allen Hosts kann Oracle Linux 8 ausgeführt werden (Oracle-Linux-8.10-2024.09.30-0 - getestet).
Aufgabe 1: Hosted Engine von Oracle Linux Virtualization Manager einrichten
Wir beginnen mit der Konfiguration der sekundären Schnittstelle. Der aktuelle Schnittstellenstatus sollte wie folgt aussehen (ignorieren Sie die private IP-Adresse auf der primären VNIC):
[root@olvm-he opc]# ifconfig
enp0s5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000
inet 10.0.11.189 netmask 255.255.255.0 broadcast 10.0.11.255
inet6 fe80::17ff:fe10:3ae0 prefixlen 64 scopeid 0x20<link>
ether 02:00:17:10:3a:e0 txqueuelen 1000 (Ethernet)
RX packets 10199 bytes 176890375 (168.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6954 bytes 1777090 (1.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 02:00:17:11:02:0c txqueuelen 1000 (Ethernet)
RX packets 19 bytes 6498 (6.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 166 bytes 28164 (27.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 80 bytes 6320 (6.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 80 bytes 6320 (6.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Konfigurieren Sie die zweite Schnittstelle enp1s0
in VLAN 1000:
[root@olvm-he opc]# nmcli connection add type ethernet con-name enp1s0 ifname enp1s0 ipv4.method manual ipv4.address '10.0.10.5/24' ipv4.gateway '10.0.10.1'
Installieren Sie jetzt Oracle Linux Virtualization Manager Release 4.5.
-
Aktivieren Sie das Repository
ol8_baseos_latest
.[root@olvm-he opc]# dnf config-manager --enable ol8_baseos_latest
-
Installieren Sie das Oracle Linux Virtualization Manager Release 4.5-Package, mit dem die erforderlichen Repositorys automatisch aktiviert oder deaktiviert werden.
[root@olvm-he opc]# dnf install -y oracle-ovirt-release-45-el8
-
Führen Sie den Befehl
dnf
aus, um zu prüfen, ob die erforderlichen Repositorys aktiviert sind.[root@olvm-he opc]# dnf clean all [root@olvm-he opc]# dnf repolist
Die folgenden Repositorys müssen aktiviert werden:
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (Für VDSM)
ol8_UEKR7
-
Führen Sie den folgenden Befehl aus, um ein fehlendes Repository zu aktivieren.
[root@olvm-he opc]# dnf config-manager --enable <repository-name>
-
Führen Sie den folgenden Befehl aus, wenn auf Ihrem Host UEK R7 ausgeführt wird.
dnf install -y kernel-uek-modules-extra
-
Führen Sie den Befehl
ovirt-engine
aus, um den Manager zu installieren.dnf install -y ovirt-engine --allowerasing
-
Führen Sie den folgenden Befehl aus, um die Engine zu konfigurieren.
engine-setup
Für jeden Konfigurationsschritt können Sie die Empfehlungen in der offiziellen Installationsdokumentation prüfen. Weitere Informationen finden Sie unter Engine-Konfigurationsoptionen.
Aufgabe 2: Auf die Oracle Linux Virtualization Manager-Webkonsole zugreifen
Wenn Oracle Linux Virtualization Manager erfolgreich installiert wurde, sollten die Webzugriffsinformationen in der Konsole angezeigt werden.
http://olvm-he.olvm.defaultvcn.oraclevcn.com:80/ovirt-engine
https://olvm-he.olvm.defaultvcn.oraclevcn.com:443/ovirt-engine.
Hinweise:
- Standardmäßig kann die Oracle-VCN-Domain nicht öffentlich aufgelöst werden.
- Stellen Sie sicher, dass die für die Instanz konfigurierte Sicherheitsliste/NSG Ingress-Verbindungen auf Port 443 zulässt.
Um auf die Webkonsole der gehosteten Oracle Linux Virtualization Manager-Engine zuzugreifen, können Sie der Hostdatei C:\Windows\System32\drivers\etc\hosts
des lokalen Betriebssystems (BS) einen DNS-Datensatz hinzufügen.
<VM-public-IP> olvm-he.olvm.defaultvcn.oraclevcn.com
Sie können sich mit dem admin@ovirt
-Benutzernamen und dem konfigurierten Kennwort authentifizieren.
Aufgabe 3: Oracle Linux Kernel-basierte Virtual Machine-(KVM-)Hosts einrichten
Wir beginnen mit dem ersten KVM-Host. Um den zweiten Host zu konfigurieren, müssen Sie eine SSH-Verbindung zum zweiten BM-Host herstellen und dieselben Befehle ausführen. Hinweis: Aktualisieren Sie die MAC- und IP-Adressen, wenn Sie die VLAN 1000-Schnittstelle einrichten.
-
Vergewissern Sie sich, dass der KVM-Host über zwei sekundäre VNICs verfügt, die mit den VLANs 1000 und 1001 verbunden sind.
-
Richten Sie die sekundäre VNIC in VLAN 1000 ein.
[root@kvm-1 opc]# nmcli connection add type vlan con-name ens340np0.1000 ifname ens340np0.1000 vlan.parent ens340np0 vlan.id 1000 [root@kvm-1 opc]# nmcli connection modify ens340np0.1000 ethernet.cloned-mac-address 02:00:17:14:AA:20 ipv4.addresses '10.0.10.11/24' ipv4.gateway '10.0.10.1' ipv4.method manual
Hinweis:
02:00:17:14:AA:20
ist die MAC-Adresse der VLAN 1000-VNIC für den ersten KVM-Host (verwenden Sie die korrekte MAC-Adresse, wenn Sie die Schnittstelleens340np0.1000
auf dem zweiten KVM-Host einrichten).10.0.10.11/24
ist die IP-Adresse, die wir für den ersten KVM-Host in VLAN 1000 verwenden.10.0.10.12/24
ist die IP-Adresse, die wir für den zweiten KVM-Host in VLAN 1000 verwenden.
-
Aktivieren Sie das Repository
ol8_baseos_latest
.[root@kvm-1 opc]# dnf config-manager --enable ol8_baseos_latest
-
Installieren Sie das Oracle Linux Virtualization Manager Release 4.5-Package, mit dem die erforderlichen Repositorys automatisch aktiviert oder deaktiviert werden.
[root@kvm-1 opc]# dnf install -y oracle-ovirt-release-45-el8
-
Führen Sie den Befehl
dnf
aus, um zu prüfen, ob die erforderlichen Repositorys aktiviert sind.[root@kvm-1 opc]# dnf clean all [root@kvm-1 opc]# dnf repolist
Die folgenden Repositorys müssen aktiviert werden:
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (Für VDSM)
ol8_UEKR7
-
Führen Sie den folgenden Befehl aus, um ein fehlendes Repository zu aktivieren.
[root@kvm-1 opc]# dnf config-manager --enable <repository-name>
-
Führen Sie den folgenden Befehl aus, wenn auf Ihrem Host UEK R7 ausgeführt wird.
[root@kvm-1 opc]# dnf install -y kernel-uek-modules-extra
-
Aktivieren Sie die Cockpit-Webkonsole und öffnen Sie den Firewall-Port.
[root@kvm-1 opc]# systemctl enable --now cockpit.socket [root@kvm-1 opc]# firewall-cmd --permanent --zone=public --add-service=cockpit [root@kvm-1 opc]# firewall-cmd --reload
Aufgabe 4: Private DNS-Zone einrichten
-
Erstellen Sie eine neue private DNS-Zone in OCI. Weitere Informationen finden Sie unter Erstellen einer privaten DNS-Zone.
- Die Zone kann den Namen
olvm.demo
haben. - Hängen Sie die Zone an die private DNS-Ansicht des VCN an.
- Die Zone kann den Namen
-
Erstellen Sie zwei DNS-Datensätze für die beiden KVM-Hosts, und veröffentlichen Sie die Änderungen.
A 10.0.10.11 kvm1.olvm.demo A 10.0.10.12 kvm2.olvm.demo
Aufgabe 5: KVM-Hosts zu Oracle Linux Virtualization Manager hinzufügen
-
Stellen Sie eine Verbindung zur Oracle Linux Virtualization Manager-Webkonsole her.
-
Aktualisieren Sie das Netzwerk ovirtmgmt, um VLAN 1000 zu verwenden.
-
Navigieren Sie zu Network und Networks.
-
Wählen Sie ovirtmgmt, und klicken Sie auf Bearbeiten.
-
Wählen Sie VLAN-Tagging aktivieren aus, geben Sie 1000 ein, und klicken Sie auf OK.
-
-
Fügen Sie die KVM-Hosts hinzu.
-
Navigieren Sie zu Compute und Hosts.
-
Klicken Sie auf Neu, und geben Sie die folgenden Informationen ein.
- Name: Geben Sie
kvm1.olvm.demo
ein. - Hostname: Geben Sie
kvm1.olvm.demo.
ein. - Authentifizierung: Wählen Sie SSH-Public Key aus.
Fügen Sie den öffentlichen SSH-Schlüssel zur Datei
/root/.ssh/authorized_keys
auf dem KVM-Host hinzu, und entfernen Sie den vorhandenen Inhalt. - Name: Geben Sie
-
Klicken Sie auf OK.
-
Aufgabe 6: Oracle Linux Virtualization Manager Certificate Authoritys (CA) zur Liste der vertrauenswürdigen Root Certificate Authoritys des Browsers hinzufügen
-
Laden Sie das CA-Zertifikat unter der folgenden Adresse herunter:
https://<OLVM-hosted-engine-FQDN>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA
. -
Navigieren Sie zum Browser Einstellungen, Zertifikate, und importieren Sie die Oracle Linux Virtualization Manager-CA in die Liste der vertrauenswürdigen Root Certificate Authoritys.
Aufgabe 7: Neue Speicherdomain erstellen
-
Erstellen Sie ein neues OCI Block Volume innerhalb derselben Availability-Domain wie die KVM-Hosts.
-
Hängen Sie das Block-Volume an den ersten KVM-Host an, und wählen Sie Lesen/Schreiben - gemeinsam nutzbar als Zugriff aus.
-
Hängen Sie dasselbe Block-Volume an den zweiten KVM-Host an, und wählen Sie Lesen/Schreiben - gemeinsam nutzbar als Zugriff aus.
-
Erstellen Sie eine neue Speicherdomain in Oracle Linux Virtualization Manager.
-
Navigieren Sie zur Oracle Linux Virtualization Manager-Webkonsole, und navigieren Sie zu Speicher und Domains.
-
Klicken Sie auf Neue Domain, und geben Sie die folgenden Informationen ein.
- Name: Geben Sie
iscsi-datavol
ein. - Speichertyp: Wählen Sie iSCSI aus.
- Host: Geben Sie
kvm1.private.zone
ein. - Adresse: Geben Sie
169.254.2.2
ein. - Port: Geben Sie
3260
ein.
- Name: Geben Sie
-
Klicken Sie auf Alle anmelden.
-
Blenden Sie das erkannte Ziel ein, und klicken Sie für die Lun-ID auf Hinzufügen.
-
Klicken Sie auf Ok, um die neue Domain zu erstellen.
-
Aufgabe 8: Neues Betriebssystemimage hochladen
-
Gehen Sie zur Oracle Linux Virtualization Manager-Webkonsole, und navigieren Sie zu Speicher und Datenträger.
-
Klicken Sie auf Hochladen und Start.
-
Geben Sie das BS-ISO-Image an. Wählen Sie die Speicherdomain iscsi-datavol aus, und klicken Sie auf OK. Weitere Informationen finden Sie unter Ubuntu-Server abrufen.
Aufgabe 9: Open Virtual Network-(OVN-)Networking einrichten
-
Gehen Sie zur Oracle Linux Virtualization Manager-Webkonsole, navigieren Sie zu Network, Networks und klicken Sie auf New.
-
Geben Sie folgende Informationen ein.
- Name: Wählen Sie Standard aus.
- Wählen Sie Erstellen bei externem Provider aus.
- Externer Provider: Geben Sie
ovirt-provider-ovn
ein. - Netzwerkportsicherheit: Wählen Sie Deaktiviert.
-
Wählen Sie Subnetze, und erstellen Sie ein neues Subnetz mit den folgenden Informationen.
- Name: Wählen Sie default aus.
- CIDR: Geben Sie
10.0.150.0/24
ein. - Gateway: Geben Sie
10.0.150.1
ein.
-
Klicken Sie auf OK.
Aufgabe 10: Neue virtuelle Maschine in Oracle Linux Virtualization Manager bereitstellen
-
Navigieren Sie zur Oracle Linux Virtualization Manager-Webkonsole, navigieren Sie zu Compute, Virtuelle Maschinen, und klicken Sie auf Neu.
-
Geben Sie folgende Informationen ein.
- Name: Geben Sie
vm1
ein. - Klicken Sie unter Instanzimages auf Erstellen, und geben Sie Größe als 15 GB ein.
- nic1: Wählen Sie Standard/Standard aus.
- Name: Geben Sie
-
Klicken Sie auf Erweiterte Optionen anzeigen, geben Sie die folgenden Informationen ein, und klicken Sie auf OK.
- Bootoptionen: Hängen Sie die CD an:
ubuntu-24.04.1-live-server-amd64.iso
.
- Bootoptionen: Hängen Sie die CD an:
-
Warten Sie, bis der Datenträger erstellt wurde, wählen Sie die erstellte VM aus, klicken Sie auf Ausführen, und warten Sie, bis die VM gestartet wurde.
-
Um eine Verbindung zur VM-Konsole herzustellen, navigieren Sie zu Konsole, Konsolenoptionen, wählen Sie NoVNC aus, klicken Sie auf OK und dann auf Konsole.
Fahren Sie mit der Installation des Betriebssystems fort. Beachten Sie, dass das Internet in der Phase nicht verfügbar ist.
Aufgabe 11: Offenes virtuelles Netzwerk mit OCI-VCN verbinden
In der folgenden Abbildung sehen Sie eine Abbildung des logischen Netzwerks, das wir in Oracle Linux Virtualization Manager definieren müssen.
Der Zugriff auf das OCI-VLAN 1001 wird über einen verteilten Gatewayport bereitgestellt. Weitere Informationen finden Sie unter How to create an Open Virtual Network Distributed Gateway Router.
-
Konfigurieren Sie die dritten VNICs auf den KVM-Hosts.
nmcli connection add type vlan con-name ens340np0.1001 ifname ens340np0.1001 vlan.parent ens340np0 vlan.id 1001 nmcli connection modify ens340np0.1001 ethernet.cloned-mac-address <VNIC-MAC> ipv4.method disabled ipv6.method disabled # replace the <VNIC-MAC> with the MAC address associated with the VNIC connected to VLAN 1001.
-
Führen Sie die folgenden Befehle von der Oracle Linux Virtualization Manager-Engine aus, um das aktuelle Setup anzuzeigen.
[root@olvm-he opc]# ovn-nbctl show switch 9364e7ce-87a9-4bc4-b044-b973e3288bcd (ovirt-Default-72198b26-61c3-4448-b13e-b72bb29f57ea) port 35bfefc5-8a7e-4f17-b508-587d764875ba addresses: ["56:6f:4b:b2:00:01 dynamic"] [root@olvm-he opc]# ovn-sbctl show Chassis kvm2.olvm.demo hostname: kvm-2.kvmhosts.defaultvcn.oraclevcn.com Encap geneve ip: "10.0.10.12" options: {csum="true"} Chassis kvm1.olvm.demo hostname: kvm-1.kvmhosts.defaultvcn.oraclevcn.com Encap geneve ip: "10.0.10.11" options: {csum="true"} Port_Binding "35bfefc5-8a7e-4f17-b508-587d764875ba"
-
Erstellen Sie den logischen Router namens
router
.[root@olvm-he opc]# ovn-nbctl lr-add router
-
Erstellen Sie einen Routerport für die Verbindung zur Oracle Linux Virtualization Manager-Bridge
Default
.[root@olvm-he opc]# ovn-nbctl lrp-add router router-ovirt-default 40:44:00:00:00:03 10.0.150.1/24
-
Verbinden Sie die
Default
-Bridge mit dem Router.[root@olvm-he opc]# ovn-nbctl lsp-add ovirt-Default-72198b26-61c3-4448-b13e-b72bb29f57ea ovirt-default-router [root@olvm-he opc]# ovn-nbctl lsp-set-type ovirt-default-router router [root@olvm-he opc]# ovn-nbctl lsp-set-addresses ovirt-default-router router [root@olvm-he opc]# ovn-nbctl lsp-set-options ovirt-default-router router-port=router-ovirt-default
-
Führen Sie den folgenden Befehl aus, um das logische Netzwerk anzuzeigen.
[root@olvm-he opc]# ovn-nbctl show switch 9364e7ce-87a9-4bc4-b044-b973e3288bcd (ovirt-Default-72198b26-61c3-4448-b13e-b72bb29f57ea) port ovirt-default-router type: router router-port: router-ovirt-default port 35bfefc5-8a7e-4f17-b508-587d764875ba addresses: ["56:6f:4b:b2:00:01 dynamic"] router b4bd08bc-d8c0-43c8-b27e-83e6e1f3b940 (router) port router-ovirt-default mac: "40:44:00:00:00:03" networks: ["10.0.150.1/24"]
-
Erstellen Sie die logische Bridge namens
public
.[root@olvm-he opc]# ovn-nbctl ls-add public
-
Bereiten Sie die Verbindung des lokalen KVM-Hostports mit der logischen Bridge
public
über das Netzwerkprovider
vor.[root@olvm-he opc]# ovn-nbctl lsp-add public ln-public [root@olvm-he opc]# ovn-nbctl lsp-set-type ln-public localnet [root@olvm-he opc]# ovn-nbctl lsp-set-addresses ln-public unknown [root@olvm-he opc]# ovn-nbctl lsp-set-options ln-public network_name=provider
-
Verbinden Sie die
router
mit den logischen Bridgespublic
über einen verteilten Routerport.[root@olvm-he opc]# ovn-nbctl lrp-add router router-public 02:00:17:0F:D1:16 10.0.20.10/24 [root@olvm-he opc]# ovn-nbctl lsp-add public public-router [root@olvm-he opc]# ovn-nbctl lsp-set-type public-router router [root@olvm-he opc]# ovn-nbctl lsp-set-addresses public-router router [root@olvm-he opc]# ovn-nbctl lsp-set-options public-router router-port=router-public
-
Planen Sie den Routerport (höhere Priorität für den ersten KVM-Host).
[root@olvm-he opc]# ovn-nbctl lrp-set-gateway-chassis router-public kvm1.olvm.demo 20 [root@olvm-he opc]# ovn-nbctl lrp-set-gateway-chassis router-public kvm2.olvm.demo 15
-
Prüfen Sie die Konfiguration des Routerports.
[root@olvm-he opc]# ovn-nbctl lrp-get-gateway-chassis router-public router-public-kvm1.olvm.demo 20 router-public-kvm2.olvm.demo 15
-
Definieren Sie den nächsten Hop für
0.0.0.0/0
über das OCI-VLAN-Gateway.[root@olvm-he opc]# ovn-nbctl lr-route-add router "0.0.0.0/0" 10.0.20.1
-
Führen Sie den folgenden Befehl aus, um die Konfigurationsübersicht anzuzeigen.
[root@olvm-he opc]# ovn-nbctl show switch a7ce3f64-44e2-4a60-993b-b2d230a13212 (public) port public-router type: router router-port: router-public port ln-public type: localnet addresses: ["unknown"] switch 9364e7ce-87a9-4bc4-b044-b973e3288bcd (ovirt-Default-72198b26-61c3-4448-b13e-b72bb29f57ea) port ovirt-default-router type: router router-port: router-ovirt-default port 35bfefc5-8a7e-4f17-b508-587d764875ba addresses: ["56:6f:4b:b2:00:01 dynamic"] router b4bd08bc-d8c0-43c8-b27e-83e6e1f3b940 (router) port router-ovirt-default mac: "40:44:00:00:00:03" networks: ["10.0.150.1/24"] port router-public mac: "02:00:17:0F:D1:16" networks: ["10.0.20.10/24"] gateway chassis: [kvm1.olvm.demo kvm2.olvm.demo] [root@olvm-he opc]# ovn-sbctl show Chassis kvm2.olvm.demo hostname: kvm-2.kvmhosts.defaultvcn.oraclevcn.com Encap geneve ip: "10.0.10.12" options: {csum="true"} Chassis kvm1.olvm.demo hostname: kvm-1.kvmhosts.defaultvcn.oraclevcn.com Encap geneve ip: "10.0.10.11" options: {csum="true"} Port_Binding cr-router-public Port_Binding "35bfefc5-8a7e-4f17-b508-587d764875ba"
Prüfen Sie, ob der Routerport mit dem ersten KVM-Host verknüpft ist, indem Sie im Abschnitt
kvm1.olvm.demo
Port_Binding cr-router-public
anzeigen. -
Ordnen Sie lokale Schnittstellen der KVM-Hosts, die mit VLAN 1001 verbunden sind, dem Netzwerk
provider
zu.[root@kvm-1 opc]# ovs-vsctl set open . external-ids:ovn-cms-options="enable-chassis-as-gw=true" [root@kvm-1 opc]# ovs-vsctl set open . external-ids:ovn-bridge-mappings=provider:br-provider [root@kvm-1 opc]# ovs-vsctl --may-exist add-br br-provider [root@kvm-1 opc]# ovs-vsctl --may-exist add-port br-provider ens340np0.1001 [root@kvm-1 opc]# ovs-vsctl set open . external-ids:ovn-chassis-mac-mappings=br-provider:02:00:17:0F:D1:16 [root@kvm-2 opc]# ovs-vsctl set open . external-ids:ovn-cms-options="enable-chassis-as-gw=true" [root@kvm-2 opc]# ovs-vsctl set open . external-ids:ovn-bridge-mappings=provider:br-provider [root@kvm-2 opc]# ovs-vsctl --may-exist add-br br-provider [root@kvm-2 opc]# ovs-vsctl --may-exist add-port br-provider ens340np0.1001 [root@kvm-2 opc]# ovs-vsctl set open . external-ids:ovn-chassis-mac-mappings=br-provider:02:00:17:08:08:A5
-
Das OCI-VLAN stellt Frames nur an die MAC-Adressen bereit, die mit den VLAN-verbundenen Geräten verknüpft sind.
Wenn wir NAT nicht verwenden, müssen wir für den Fall, dass der Eigentümer des logischen Routerports geändert wird, die MAC-Adresse des logischen Routerports entsprechend der MAC-Adresse des aktiven Chassis aktualisieren.
Der folgende Service kümmert sich um diesen Vorgang. Aktualisieren Sie die Open Virtual Network SB-Datenbank mit den MAC-Adresszuordnungen für das Gehäuse (erforderlich für die Switchover-Controllerfunktion).
[root@olvm-he opc]# ovn-sbctl set chassis kvm1.olvm.demo external_ids:ovn-chassis-mac-mappings=br-provider:02:00:17:0F:D1:16 #replace with the MAC address of the VLAN1001 VNIC on KVM1 host [root@olvm-he opc]# ovn-sbctl set chassis kvm2.olvm.demo external_ids:ovn-chassis-mac-mappings=br-provider:02:00:17:08:08:A5 #replace with the MAC address of the the VLAN1001 VNIC on KVM2 host
-
Erstellen Sie die Datei mit dem Namen
/usr/share/ovirt-provider-ovn/ovn_ha_gw_controller.py
mit dem folgenden Inhalt.import logging import os import sys import traceback from ovsdbapp.backend.ovs_idl import connection from ovsdbapp.backend.ovs_idl import idlutils from ovsdbapp.schema.ovn_southbound import impl_idl as impl_sbidl from ovsdbapp.schema.ovn_northbound import impl_idl as impl_nbidl from ovsdbapp.backend.ovs_idl import event as row_event from threading import Event stdout_handler = logging.StreamHandler(stream=sys.stdout) logging.basicConfig( level=logging.INFO, format='%(processName)s %(threadName)s: %(asctime)s - %(name)s - %(module)s - %(levelname)s - %(message)s', handlers = [stdout_handler] ) logger = logging.getLogger('main') OVN_MONITORED_LOGICAL_PORT = os.environ.get('OVN_MONITORED_LOGICAL_PORT', '') if not OVN_MONITORED_LOGICAL_PORT: logger.info("No distributed router port name found. Check if the `OVN_MONITORED_LOGICAL_PORT` is defined.") sys.exit(1) conn_sb = "unix:/var/run/ovn/ovnsb_db.sock" conn_nb = "unix:/var/run/ovn/ovnnb_db.sock" class PortBindingEvent(row_event.RowEvent): """ Port_Binding event """ def __init__(self, monitored_logical_port): table = 'Port_Binding' self.monitored_logical_port = monitored_logical_port events = (self.ROW_UPDATE) super().__init__(events, table, None) self.event_name = self.__class__.__name__ def match_fn(self, event, row, old): try: # Check if the event is for the distributed gateway port. if row.logical_port != self.monitored_logical_port: return False # Check if chassis data is present and the chassis field was modified. logger.debug(f"Event match_fn with row: {row.__repr__} | old: {old.__dict__}") if len(row.chassis) and old._data.get("chassis", None): logger.info(f"The monitored router port has been allocated to a new chassis: {row.chassis[0].name}") return True except Exception as e: logger.error(traceback.format_exc()) return False def run(self, event, row, old): # Determine the MAC address that should be used in the new chassis chassis_config = api_sb.db_get("Chassis", row.chassis[0].name, "other_config").execute() logger.debug(f"current chassis_config: {chassis_config}") # Fetching the new chassis MAC address new_chassis_mac = chassis_config.get("ovn-chassis-mac-mappings", "")[-17:] logger.debug(f"New chassis MAC: {new_chassis_mac}") if not new_chassis_mac: logger.error('The chassis MAC mappings has not been defined in the OVN SB database.') logger.error('Please update the chassis MAP mappings using the command:') logger.error('ovn-sbctl set chassis <chassis-name> external_ids:ovn-chassis-mac-mappings="<ext-br>:02:00:17:04:C2:99"') logger.error('Could not update the distributed routed port MAC address.') return # Fetching the distributed port name port_name = row.options.get('distributed-port') logger.debug(f"Port Name: {port_name}") # Updating the router port MAC Address api_nb.db_set("Logical_Router_Port", port_name, ("mac", new_chassis_mac)).execute() logger.info(f"MAC address for the router port {port_name} has been updated to: {new_chassis_mac}") class BaseOvnSbIdl(connection.OvsdbIdl): def __init__(self, remote, schema, **kwargs): event = PortBindingEvent(OVN_MONITORED_LOGICAL_PORT) self.notify_handler = row_event.RowEventHandler() self.notify_handler.watch_event(event) super(BaseOvnSbIdl, self).__init__(remote, schema, **kwargs) def notify(self, event, row, updates=None): self.notify_handler.notify(event, row, updates) i_sb = BaseOvnSbIdl.from_server(conn_sb, 'OVN_Southbound') i_nb = connection.OvsdbIdl.from_server(conn_nb, 'OVN_Northbound') # The ovsdbapp Connection object try: c_sb = connection.Connection(idl=i_sb, timeout=3) c_nb = connection.Connection(idl=i_nb, timeout=3) except Exception as e: logger.error(f'Unable to connect to the OVN databases: {traceback.format_exc()}') sys.exit(1) # The OVN_Northbound API implementation object api_sb = impl_sbidl.OvnSbApiIdlImpl(c_sb) api_nb = impl_nbidl.OvnNbApiIdlImpl(c_nb) logger.info(f'Started monitoring the distributed logical port: {OVN_MONITORED_LOGICAL_PORT}') Event().wait()
-
Erstellen Sie die Datei mit dem Namen
/etc/systemd/system/ovn-ha-gateway-controller.service
mit dem folgenden Inhalt.[Unit] Description=oVirt HA Gateway port controller Requires=ovsdb-server.service After=ovsdb-server.service [Service] Environment="OVN_MONITORED_LOGICAL_PORT=cr-router-port" Type=simple ExecStart=/usr/libexec/platform-python /usr/share/ovirt-provider-ovn/ovn_ha_gw_controller.py ExecStop= Restart=always RestartSec=10 [Install] WantedBy=multi-user.target Enable and start the service.
-
Starten Sie den Service.
systemctl enable ovn-ha-gateway-controller.service systemctl start ovn-ha-gateway-controller.service
Aufgabe 12: OCI Networking-Konfiguration abschließen.
Die Pakete von VM1 sollten OCI VLAN 1001 erreichen können. Unser Plan ist es, diesen Paketen zu ermöglichen, das Internet zu erreichen.
-
Ordnen Sie dem VLAN eine Routentabelle mit der Regel zu: (Route
0.0.0.0/0
über das NAT-Gateway). -
Für den Traffic, der vom Internet in Richtung VM1 zurückkehrt, müssen wir das Routing für CIDR
10.0.150.0/24
verarbeiten. Wir müssen eine externe IP für VLAN 1001 definieren. Dies ist die IP-Adresse, die mit dem logischen Routerport10.0.20.10
verknüpft ist.Wenn diese IP-Adresse definiert ist, erstellen wir eine neue Routing-Tabelle mit der Regel: (Route
10.0.150.0/24
bis10.0.20.10
) -
Jetzt können wir diese neue Route mit dem NAT-Gateway verknüpfen und die Pakete weiterleiten, um zu VM1 zu gelangen.
Zu diesem Zeitpunkt sollten wir in der Lage sein, das Internet von der VM1 zu erreichen.
Verwandte Links
Danksagungen
- Autor - Andrei Ilas (Master Principal Cloud Architect)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Deploy Oracle Linux Virtualization Manager using the Open Virtualization Network Provider on Oracle Cloud Infrastructure
G19498-02
December 2024