Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Implementa Oracle Linux Virtualization Manager utilizzando Open Virtualization Network Provider su Oracle Cloud Infrastructure
Introduzione
In questa esercitazione verrà illustrato uno scenario in cui un team mira ad aumentare l'utilizzo di una flotta di nodi Bare Metal estendendo il proprio ambiente Oracle Linux Virtualization Manager on-premise esistente in Oracle Cloud Infrastructure (OCI). Integrando le funzionalità di rete di Oracle Cloud con Open Virtual Network (OVN), puoi collegare la connettività tra le risorse on-premise e le virtual machine (VM) distribuite da Oracle Linux Virtualization Manager in OCI tramite FastConnect.
Nota: questa esercitazione viene eseguita solo a scopo di test e valutazione. Il supporto di Oracle Linux Virtualization Manager per OCI è in fase di sviluppo e in realtà non è supportato per la gestione dei sistemi OCI. L'uso di OVN con Oracle Linux Virtualization Manager è in anteprima tecnologica, a indicare che una funzione è ancora in fase di sviluppo.
Panoramica e distribuzione della soluzione
Panoramica della soluzione
Avremo bisogno di una nuova VCN (10.0.0.0/16
) con le seguenti risorse:
- Una subnet pubblica (
10.0.11.0/24
) utilizzata per la VNIC primaria del motore hosted. - Una subnet privata (
10.0.12.0/24
) utilizzata per la VNIC primaria degli host KVM (Kernel-based Virtual Machine) Oracle Linux. - Virtual Local Area Network (VLAN) 1000 (
10.0.10.0/24
) utilizzato per la comunicazione tra il motore hosted di Oracle Linux Virtualization Manager e gli host KVM. - VLAN 1001 (
10.0.20.0/24
) utilizzata per espandere le reti virtuali OVN in OCI. - Un gateway NAT.
- Un gateway Internet.
- Una tabella di instradamento privata (da
0.0.0.0/0
a gateway NAT) e associarla alla subnet privata e alla VLAN 1001. - Una tabella di instradamento pubblica (
0.0.0.0/0
tramite gateway Internet) e associarla alla subnet pubblica. - Le liste di sicurezza dovrebbero consentire:
- Tutte le connessioni in uscita (
0.0.0.0/0
) tutti i protocolli. - Tutte le connessioni in entrata dal CIDR VCN (
10.0.0.0/16
). - Connessione in entrata per tutti i protocolli dal PC client.
- Tutte le connessioni in uscita (
Distribuzione della soluzione
-
Creare un'istanza VM (configurazione consigliata: VM.Standard.E5). Flex con 2 OCPU/24 GB di RAM) che esegue Oracle Linux 8 per il motore in hosting. Collegare una VNIC secondaria all'istanza VM e connetterla alla VLAN 1000.
-
Creare due istanze BM (configurazione consigliata: BM.Standard.E5.192) che eseguono Oracle Linux 8 e che verranno utilizzate come host KVM. Collegare due VNIC secondarie a ciascuno degli host BM e connetterle alle VLAN 1000 e 1001.
Obiettivi
- Esegui Oracle Linux Virtualization Manager Release 4.5 in OCI e consenti alle VM di accedere a Internet tramite il gateway NAT OCI.
Prerequisiti
-
Il motore in hosting di Oracle Linux Virtualization Manager può essere eseguito su una VM (VM.Standard.E5). Flex con 2 OCPU/24 GB di RAM - testato).
-
Gli host KVM (Kernel-based Virtual Machine) Oracle Linux possono essere eseguiti su host Bare Metal (BM) (BM.Standard.E5.192: testati).
-
Tutte le risorse BM devono essere create nello stesso dominio di disponibilità (AD).
-
Tutti gli host possono eseguire Oracle Linux 8 (Oracle-Linux-8.10-2024.09.30-0: testato).
Task 1: impostare il motore hosted di Oracle Linux Virtualization Manager
Inizieremo configurando l'interfaccia secondaria. Lo stato corrente dell'interfaccia dovrebbe essere simile (ignorare l'indirizzo IP privato sulla VNIC primaria):
[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
Configurare la seconda interfaccia, enp1s0
, nella 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'
Ora installa Oracle Linux Virtualization Manager Release 4.5.
-
Abilitare il repository
ol8_baseos_latest
.[root@olvm-he opc]# dnf config-manager --enable ol8_baseos_latest
-
Installare il pacchetto Oracle Linux Virtualization Manager Release 4.5 che abilita o disabilita automaticamente i repository richiesti.
[root@olvm-he opc]# dnf install -y oracle-ovirt-release-45-el8
-
Eseguire il comando
dnf
per verificare che i repository richiesti siano abilitati.[root@olvm-he opc]# dnf clean all [root@olvm-he opc]# dnf repolist
È necessario abilitare i seguenti repository:
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (Per VDSM)
ol8_UEKR7
-
Eseguire il comando seguente per abilitare qualsiasi repository mancante.
[root@olvm-he opc]# dnf config-manager --enable <repository-name>
-
Eseguire il comando seguente se l'host esegue UEK R7.
dnf install -y kernel-uek-modules-extra
-
Eseguire il comando
ovirt-engine
per installare il manager.dnf install -y ovirt-engine --allowerasing
-
Per configurare il motore, eseguire il comando riportato di seguito.
engine-setup
Per ogni fase di configurazione, è possibile consultare i suggerimenti riportati nella documentazione ufficiale di installazione. Per ulteriori informazioni, vedere Opzioni di configurazione del motore.
Task 2: accedere alla console Web di Oracle Linux Virtualization Manager
Se Oracle Linux Virtualization Manager viene installato correttamente, è necessario visualizzare le informazioni di accesso Web nella console.
http://olvm-he.olvm.defaultvcn.oraclevcn.com:80/ovirt-engine
https://olvm-he.olvm.defaultvcn.oraclevcn.com:443/ovirt-engine.
Note
- Per impostazione predefinita, il dominio VCN Oracle non è risolvibile pubblicamente.
- Assicurarsi che la lista di sicurezza/NSG configurata per l'istanza consenta le connessioni in entrata sulla porta 443.
Per accedere alla console Web del motore in hosting di Oracle Linux Virtualization Manager, è possibile aggiungere un record DNS al file host del sistema operativo locale C:\Windows\System32\drivers\etc\hosts
.
<VM-public-IP> olvm-he.olvm.defaultvcn.oraclevcn.com
È possibile eseguire l'autenticazione con il nome utente admin@ovirt
e la password configurata.
Task 3: impostare gli host KVM (Kernel-based Virtual Machine) Oracle Linux
Stiamo iniziando con il primo host KVM. Per configurare il secondo host, è necessario eseguire SSH nel secondo host BM ed eseguire gli stessi comandi. Tenere presente che per aggiornare gli indirizzi MAC e IP quando si imposta l'interfaccia VLAN 1000.
-
Verificare che l'host KVM disponga di due VNIC secondarie connesse alle VLAN 1000 e 1001.
-
Impostare la VNIC secondaria nella VLAN 1000.
[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
Nota:
02:00:17:14:AA:20
è l'indirizzo MAC della VNIC VLAN 1000 per il primo host KVM (assicurarsi di utilizzare l'indirizzo MAC corretto quando si imposta l'interfacciaens340np0.1000
sul secondo host KVM).10.0.10.11/24
è l'indirizzo IP che verrà utilizzato per il primo host KVM nella VLAN 1000.10.0.10.12/24
è l'indirizzo IP che verrà utilizzato per il secondo host KVM nella VLAN 1000.
-
Abilitare il repository
ol8_baseos_latest
.[root@kvm-1 opc]# dnf config-manager --enable ol8_baseos_latest
-
Installare il pacchetto Oracle Linux Virtualization Manager Release 4.5 che abilita o disabilita automaticamente i repository richiesti.
[root@kvm-1 opc]# dnf install -y oracle-ovirt-release-45-el8
-
Eseguire il comando
dnf
per verificare che i repository richiesti siano abilitati.[root@kvm-1 opc]# dnf clean all [root@kvm-1 opc]# dnf repolist
È necessario abilitare i seguenti repository:
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (Per VDSM)
ol8_UEKR7
-
Eseguire il comando seguente per abilitare qualsiasi repository mancante.
[root@kvm-1 opc]# dnf config-manager --enable <repository-name>
-
Eseguire il comando seguente se l'host esegue UEK R7.
[root@kvm-1 opc]# dnf install -y kernel-uek-modules-extra
-
Attivare la console web della cabina di pilotaggio e aprire la porta del firewall.
[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
Task 4: impostare la zona privata DNS
-
Crea una nuova zona DNS privata in OCI. Per ulteriori informazioni, vedere Creazione di una zona DNS privata.
- La zona può essere denominata
olvm.demo
. - Collega la zona alla vista privata DNS della VCN.
- La zona può essere denominata
-
Creare due record DNS per i due host KVM e pubblicare le modifiche.
A 10.0.10.11 kvm1.olvm.demo A 10.0.10.12 kvm2.olvm.demo
Task 5: aggiungere gli host KVM a Oracle Linux Virtualization Manager
-
Connettersi alla console Web di Oracle Linux Virtualization Manager.
-
Aggiornare la rete ovirtmgmt per usare la VLAN 1000.
-
Passare a Rete e Rete.
-
Selezionare ovirtmgmt e fare clic su Modifica.
-
Selezionare Abilita applicazione tag VLAN, immettere 1000 e fare clic su OK.
-
-
Aggiungere gli host KVM.
-
Passare a Compute e Host.
-
Fare clic su Nuovo e immettere le informazioni seguenti.
- Nome: immettere
kvm1.olvm.demo
. - Nome host: immettere
kvm1.olvm.demo.
- Autenticazione: selezionare Chiave pubblica SSH.
Aggiungere la chiave SSH pubblica al file
/root/.ssh/authorized_keys
nell'host KVM e rimuovere il contenuto esistente. - Nome: immettere
-
Fare clic su OK.
-
Task 6: aggiungere le autorità di certificazione (CA) di Oracle Linux Virtualization Manager all'elenco delle autorità di certificazione radice attendibili del browser
-
Scaricare il certificato CA dal seguente indirizzo:
https://<OLVM-hosted-engine-FQDN>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA
. -
Passare a Impostazioni, Certificati del browser e importare la CA di Oracle Linux Virtualization Manager nell'elenco delle autorità di certificazione radice attendibili.
Task 7: Creare un nuovo dominio di storage
-
Crea un nuovo volume a blocchi OCI nello stesso dominio di disponibilità degli host KVM.
-
Collegare il volume a blocchi al primo host KVM e selezionare Lettura/scrittura - Condivisibile come Accesso.
-
Collegare lo stesso volume a blocchi al secondo host KVM e selezionare Lettura/Scrittura - Condivisibile come Accesso.
-
Crea un nuovo dominio di storage in Oracle Linux Virtualization Manager.
-
Accedere alla console Web di Oracle Linux Virtualization Manager, passare a Storage e Domains.
-
Fare clic su Nuovo dominio e immettere le informazioni seguenti.
- Nome: immettere
iscsi-datavol
. - Tipo di memorizzazione: selezionare iSCSI.
- Host: immettere
kvm1.private.zone
. - Indirizzo: immettere
169.254.2.2
. - Porta: immettere
3260
.
- Nome: immettere
-
Fare clic su Login All.
-
Espandere la destinazione trovata e fare clic su Aggiungi per l'ID Lun.
-
Fare clic su OK per creare il nuovo dominio.
-
Task 8: Carica una nuova immagine del sistema operativo
-
Accedere alla console Web di Oracle Linux Virtualization Manager, passare a Storage e Dischi.
-
Fare clic su Carica e Avvia.
-
Fornire l'immagine ISO del sistema operativo. Selezionare il dominio di memorizzazione iscsi-datavol e fare clic su OK. Per ulteriori informazioni, vedere Ottenere il server Ubuntu.
Task 9: Impostazione della rete OVN (Open Virtual Network)
-
Accedere alla console Web di Oracle Linux Virtualization Manager, accedere a Network, Networks e fare clic su Nuovo.
-
Immettere le informazioni riportate di seguito.
- Nome: selezionare Predefinito.
- Selezionare Crea su provider esterno.
- Provider esterno: immettere
ovirt-provider-ovn
. - Network Port Security: selezionare Disabled.
-
Selezionare Subnet e creare una nuova subnet con le informazioni riportate di seguito.
- Nome: selezionare predefinito.
- CIDR: immettere
10.0.150.0/24
. - Gateway: Immettere
10.0.150.1
.
-
Fare clic su OK.
Task 10: Provisioning di una nuova virtual machine in Oracle Linux Virtualization Manager
-
Passare alla console Web di Oracle Linux Virtualization Manager, accedere a Compute, Virtual Machine e fare clic su Nuovo.
-
Immettere le informazioni riportate di seguito.
- Nome: immettere
vm1
. - In Immagini istanza, fare clic su Crea e immettere Dimensione per 15 GB.
- nic1: selezionare Predefinito/Predefinito.
- Nome: immettere
-
Fare clic su Mostra opzioni avanzate, immettere le informazioni riportate di seguito e fare clic su OK.
- Opzioni di boot: collegare il CD -
ubuntu-24.04.1-live-server-amd64.iso
.
- Opzioni di boot: collegare il CD -
-
Attendere la creazione del disco, selezionare la VM creata, fare clic su Esegui e attendere l'avvio della VM.
-
Per connettersi alla console VM, passare a Console, Opzioni console, selezionare NoVNC, fare clic su OK, quindi fare clic su Console.
Procedere con l'installazione del sistema operativo, tenere presente che in questa fase Internet non è disponibile.
Task 11: connettere la rete virtuale aperta alla VCN OCI
Nella seguente immagine è possibile visualizzare un'illustrazione della rete logica da definire in Oracle Linux Virtualization Manager.
L'accesso alla VLAN 1001 OCI viene fornito tramite una porta gateway distribuita. Per ulteriori informazioni, vedere Come creare un router gateway distribuito Open Virtual Network.
-
Configurare le terze VNIC sugli host KVM.
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.
-
Eseguire i comandi seguenti dal motore di Oracle Linux Virtualization Manager per visualizzare la configurazione corrente.
[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"
-
Creare il router logico denominato
router
.[root@olvm-he opc]# ovn-nbctl lr-add router
-
Creare una porta router per la connessione al bridge
Default
di Oracle Linux Virtualization Manager.[root@olvm-he opc]# ovn-nbctl lrp-add router router-ovirt-default 40:44:00:00:00:03 10.0.150.1/24
-
Collegare il bridge
Default
al 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
-
Eseguire il comando seguente per visualizzare la rete logica.
[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"]
-
Creare il bridge logico denominato
public
.[root@olvm-he opc]# ovn-nbctl ls-add public
-
Prepararsi a connettere la porta host KVM locale al bridge logico
public
tramite la reteprovider
.[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
-
Connettere
router
ai bridge logicipublic
utilizzando una porta router distribuita.[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
-
Pianificare la porta del router (priorità più alta per il primo host KVM).
[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
-
Controllare la configurazione della porta del router.
[root@olvm-he opc]# ovn-nbctl lrp-get-gateway-chassis router-public router-public-kvm1.olvm.demo 20 router-public-kvm2.olvm.demo 15
-
Definire l'hop successivo per
0.0.0.0/0
tramite il gateway VLAN OCI.[root@olvm-he opc]# ovn-nbctl lr-route-add router "0.0.0.0/0" 10.0.20.1
-
Eseguire il comando seguente per visualizzare il riepilogo della configurazione.
[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"
Per verificare se la porta del router è associata al primo host KVM, vedere
Port_Binding cr-router-public
nella sezionekvm1.olvm.demo
. -
Eseguire il mapping delle interfacce locali degli host KVM connessi alla VLAN 1001 alla rete
provider
.[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
-
La VLAN OCI distribuisce i frame solo agli indirizzi MAC associati ai dispositivi connessi alla VLAN.
Se non si utilizza NAT, nel caso in cui il proprietario della porta del router logico venga modificato, è necessario aggiornare l'indirizzo MAC della porta del router logico in modo che corrisponda all'indirizzo MAC dello chassis attivo.
Il seguente servizio si occupa di questa operazione. Aggiornare il database Open Virtual Network SB con i mapping degli indirizzi MAC dello chassis (obbligatorio per la funzionalità del controller di switchover).
[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
-
Creare il file denominato
/usr/share/ovirt-provider-ovn/ovn_ha_gw_controller.py
con il contenuto seguente.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()
-
Creare il file denominato
/etc/systemd/system/ovn-ha-gateway-controller.service
con il contenuto seguente.[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.
-
Avviare il servizio.
systemctl enable ovn-ha-gateway-controller.service systemctl start ovn-ha-gateway-controller.service
Task 12: finalizzare la configurazione di networking OCI.
I pacchetti di VM1 devono essere in grado di raggiungere la VLAN 1001 OCI. Il nostro piano è quello di consentire a questi pacchetti di raggiungere Internet.
-
È necessario collegare una tabella di instradamento alla VLAN con la regola: (Instradare
0.0.0.0/0
tramite gateway NAT). -
Per il traffico di ritorno da Internet verso il VM1, dobbiamo gestire l'instradamento per CIDR
10.0.150.0/24
. È necessario definire un IP esterno per la VLAN 1001. Si tratta dell'indirizzo IP associato alla porta del router logico,10.0.20.10
.Con questo indirizzo IP definito, creeremo una nuova tabella di routing con la regola: (Percorso da
10.0.150.0/24
a10.0.20.10
) -
Ora possiamo associare questo nuovo percorso al gateway NAT e inoltrare i pacchetti per raggiungere VM1.
In questa fase dovremmo essere in grado di raggiungere Internet dal VM1.
Collegamenti correlati
Conferme
- Autore - Andrei Ilas (Master Principal Cloud Architect)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Deploy Oracle Linux Virtualization Manager using the Open Virtualization Network Provider on Oracle Cloud Infrastructure
G19502-02
December 2024