Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Déployez Oracle Linux Virtualization Manager à l'aide du fournisseur de réseau de virtualisation ouvert sur Oracle Cloud Infrastructure
Introduction
Dans ce tutoriel, nous allons passer en revue un scénario dans lequel une équipe vise à augmenter l'utilisation d'un parc de noeuds Bare Metal en étendant son environnement Oracle Linux Virtualization Manager sur site existant vers Oracle Cloud Infrastructure (OCI). En intégrant les fonctionnalités réseau d'Oracle Cloud à Open Virtual Network (OVN), vous pouvez établir un pont entre la connectivité entre les ressources sur site et les machines virtuelles déployées par Oracle Linux Virtualization Manager dans OCI via FastConnect.
Remarque : ce tutoriel est uniquement à des fins de test et d'évaluation. La prise en charge d'Oracle Linux Virtualization Manager pour OCI est en cours de développement et n'est pas prise en charge pour la gestion des systèmes OCI. L'utilisation d'OVN avec Oracle Linux Virtualization Manager est en cours d'aperçu de la technologie, ce qui indique qu'une fonctionnalité est toujours en cours de développement.
Présentation et déploiement de la solution
Présentation de la solution
Nous aurons besoin d'un nouveau VCN (10.0.0.0/16
) avec les ressources suivantes :
- Un sous-réseau public (
10.0.11.0/24
) utilisé pour la VNIC principale du moteur hébergé. - Un sous-réseau privé (
10.0.12.0/24
) utilisé pour la carte d'interface réseau virtuelle principale des hôtes de machine virtuelle basés sur le noyau Oracle Linux. - Réseau local virtuel (VLAN) 1000 (
10.0.10.0/24
) utilisé pour la communication entre le moteur hébergé par Oracle Linux Virtualization Manager et les hôtes KVM. - VLAN 1001 (
10.0.20.0/24
) utilisé pour étendre les réseaux virtuels OVN vers OCI. - Une passerelle NAT.
- Une passerelle Internet.
- Une table de routage privée (
0.0.0.0/0
via la passerelle NAT) et l'associer au sous-réseau privé et au VLAN 1001. - Une table de routage publique (
0.0.0.0/0
via la passerelle Internet) et l'associer au sous-réseau public. - Les listes de sécurité doivent permettre :
- Toutes les connexions sortantes (
0.0.0.0/0
) de tous les protocoles. - Toutes les connexions entrantes à partir du CIDR VCN (
10.0.0.0/16
). - Connexion entrante pour tous les protocoles à partir de l'ordinateur client.
- Toutes les connexions sortantes (
Déploiement de solution
-
Créez une instance de machine virtuelle (configuration recommandée : VM.Standard.E5). Flex avec 2 OCPU/24 Go de RAM) exécutant Oracle Linux 8 pour le moteur hébergé. Attachez une carte d'interface réseau virtuelle secondaire à l'instance de machine virtuelle et connectez-la au VLAN 1000.
-
Créez deux instances BM (configuration recommandée : BM.Standard.E5.192) exécutant Oracle Linux 8 qui seront utilisées en tant qu'hôtes KVM. Attachez deux VNIC secondaires à chacun des hôtes BM et connectez-les aux VLAN 1000 et 1001.
Objectifs
- Exécutez Oracle Linux Virtualization Manager version 4.5 dans OCI et autorisez les machines virtuelles à accéder à Internet via la passerelle NAT OCI.
Prérequis
-
Le moteur hébergé par Oracle Linux Virtualization Manager peut s'exécuter sur une machine virtuelle (VM.Standard.E5). Flex avec 2 OCPU/24 Go de RAM - testé).
-
Les hôtes de machine virtuelle basés sur un noyau Oracle Linux peuvent être exécutés sur des hôtes Bare Metal (BM) (BM.Standard.E5.192 - testés).
-
Toutes les ressources BM doivent être créées dans le même domaine de disponibilité.
-
Tous les hôtes peuvent exécuter Oracle Linux 8 (Oracle-Linux-8.10-2024.09.30-0 - testé).
Tâche 1 : configuration du moteur hébergé d'Oracle Linux Virtualization Manager
Nous allons commencer par configurer l'interface secondaire. Le statut de l'interface en cours doit ressembler à ce qui suit (ignorer l'adresse IP privée sur la carte d'interface réseau virtuelle principale) :
[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
Configurez la deuxième interface, enp1s0
, dans le 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'
Installez maintenant Oracle Linux Virtualization Manager version 4.5.
-
Activez le référentiel
ol8_baseos_latest
.[root@olvm-he opc]# dnf config-manager --enable ol8_baseos_latest
-
Installez le package Oracle Linux Virtualization Manager version 4.5, qui active ou désactive automatiquement les référentiels requis.
[root@olvm-he opc]# dnf install -y oracle-ovirt-release-45-el8
-
Exécutez la commande
dnf
pour vérifier que les référentiels requis sont activés.[root@olvm-he opc]# dnf clean all [root@olvm-he opc]# dnf repolist
Les référentiels suivants doivent être activés :
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (Pour VDSM)
ol8_UEKR7
-
Exécutez la commande suivante pour activer tout référentiel manquant.
[root@olvm-he opc]# dnf config-manager --enable <repository-name>
-
Exécutez la commande suivante si votre hôte exécute UEK R7.
dnf install -y kernel-uek-modules-extra
-
Exécutez la commande
ovirt-engine
pour installer le gestionnaire.dnf install -y ovirt-engine --allowerasing
-
Exécutez la commande suivante pour configurer le moteur.
engine-setup
Pour chaque étape de configuration, vous pouvez consulter les recommandations figurant dans la documentation d'installation officielle. Pour plus d'informations, reportez-vous à Options de configuration du moteur.
Tâche 2 : accéder à la console Web d'Oracle Linux Virtualization Manager
Si Oracle Linux Virtualization Manager est installé correctement, vous devez voir les informations d'accès Web affichées dans la console.
http://olvm-he.olvm.defaultvcn.oraclevcn.com:80/ovirt-engine
https://olvm-he.olvm.defaultvcn.oraclevcn.com:443/ovirt-engine.
Remarques :
- Par défaut, le domaine Oracle VCN ne peut pas être résolu publiquement.
- Assurez-vous que la liste de sécurité/le groupe de sécurité réseau configuré pour l'instance autorise les connexions entrantes sur le port 443.
Pour accéder à la console Web du moteur hébergé Oracle Linux Virtualization Manager, vous pouvez ajouter un enregistrement DNS au fichier d'hôtes du système d'exploitation local C:\Windows\System32\drivers\etc\hosts
.
<VM-public-IP> olvm-he.olvm.defaultvcn.oraclevcn.com
Vous pouvez vous authentifier avec le nom utilisateur admin@ovirt
et le mot de passe configuré.
Tâche 3 : configuration des hôtes de machine virtuelle basés sur le noyau Oracle Linux
Nous commençons avec le premier hôte KVM. Pour configurer le deuxième hôte, vous devez utiliser SSH dans le deuxième hôte BM et exécuter les mêmes commandes. Notez que vous devez mettre à jour les adresses MAC et IP lorsque vous configurez l'interface VLAN 1000.
-
Vérifiez que l'hôte KVM dispose de deux cartes d'interface réseau virtuelles secondaires connectées aux VLAN 1000 et 1001.
-
Configurez la carte d'interface réseau virtuelle secondaire dans le 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
Remarque :
02:00:17:14:AA:20
est l'adresse MAC de la carte d'interface réseau virtuelle VLAN 1000 pour le premier hôte KVM (veillez à utiliser l'adresse MAC correcte lorsque vous configurez l'interfaceens340np0.1000
sur le deuxième hôte KVM).10.0.10.11/24
est l'adresse IP que nous allons utiliser pour le premier hôte KVM dans le VLAN 1000.10.0.10.12/24
est l'adresse IP que nous allons utiliser pour le deuxième hôte KVM dans le VLAN 1000.
-
Activez le référentiel
ol8_baseos_latest
.[root@kvm-1 opc]# dnf config-manager --enable ol8_baseos_latest
-
Installez le package Oracle Linux Virtualization Manager version 4.5, qui active ou désactive automatiquement les référentiels requis.
[root@kvm-1 opc]# dnf install -y oracle-ovirt-release-45-el8
-
Exécutez la commande
dnf
pour vérifier que les référentiels requis sont activés.[root@kvm-1 opc]# dnf clean all [root@kvm-1 opc]# dnf repolist
Les référentiels suivants doivent être activés :
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (Pour VDSM)
ol8_UEKR7
-
Exécutez la commande suivante pour activer tout référentiel manquant.
[root@kvm-1 opc]# dnf config-manager --enable <repository-name>
-
Exécutez la commande suivante si votre hôte exécute UEK R7.
[root@kvm-1 opc]# dnf install -y kernel-uek-modules-extra
-
Activez la console Web du poste de pilotage et ouvrez le port du pare-feu.
[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
Tâche 4 : configuration de la zone privée DNS
-
Créez une zone DNS privée dans OCI. Pour plus d'informations, reportez-vous à Création d'une zone DNS privée.
- La zone peut être nommée
olvm.demo
. - Connectez la zone à la vue privée DNS du VCN.
- La zone peut être nommée
-
Créez deux enregistrements DNS pour les deux hôtes KVM et publiez les modifications.
A 10.0.10.11 kvm1.olvm.demo A 10.0.10.12 kvm2.olvm.demo
Tâche 5 : ajouter les hôtes KVM à Oracle Linux Virtualization Manager
-
Connectez-vous à la console Web Oracle Linux Virtualization Manager.
-
Mettez à jour le réseau ovirtmgmt pour utiliser VLAN 1000.
-
Accédez à Network et Networks.
-
Sélectionnez ovirtmgmt et cliquez sur Modifier.
-
Sélectionnez Activer le balisage VLAN, entrez 1000 et cliquez sur OK.
-
-
Ajouter les hôtes KVM.
-
Accédez à Compute et à Hosts.
-
Cliquez sur Nouveau et entrez les informations suivantes.
- Nom : entrez
kvm1.olvm.demo
. - Nom d'hôte : entrez
kvm1.olvm.demo.
- Authentification : sélectionnez Clé publique SSH.
Ajoutez la clé SSH publique au fichier
/root/.ssh/authorized_keys
sur l'hôte KVM et enlevez le contenu existant. - Nom : entrez
-
Cliquez sur OK.
-
Tâche 6 : ajouter les autorités de certification (CA) d'Oracle Linux Virtualization Manager à la liste des autorités de certification racine sécurisées du navigateur
-
Téléchargez le certificat CA à partir de l'adresse suivante :
https://<OLVM-hosted-engine-FQDN>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA
. -
Accédez aux paramètres et aux certificats du navigateur et importez l'autorité de certification Oracle Linux Virtualization Manager dans la liste des autorités de certification racine sécurisées.
Tâche 7 : création d'un domaine de stockage
-
Créez un volume de blocs OCI dans le même domaine de disponibilité que les hôtes KVM.
-
Attachez le volume de blocs au premier hôte KVM et sélectionnez Lecture/écriture - partageable en tant qu'accès.
-
Attachez le même volume de blocs au deuxième hôte KVM et sélectionnez Lecture/écriture - partageable comme Accès.
-
Créez un domaine de stockage dans Oracle Linux Virtualization Manager.
-
Accédez à la console Web Oracle Linux Virtualization Manager, accédez à Stockage et à Domaines.
-
Cliquez sur Nouveau domaine et saisissez les informations suivantes.
- Nom : entrez
iscsi-datavol
. - Type de stockage : sélectionnez iSCSI.
- Hôte : entrez
kvm1.private.zone
. - Adresse : entrez
169.254.2.2
. - Port : entrez
3260
.
- Nom : entrez
-
Cliquez sur Tout connecter.
-
Développez la cible repérée et cliquez sur Ajouter pour l'ID LUN.
-
Cliquez sur Ok pour créer le domaine.
-
Tâche 8 : téléchargement d'une nouvelle image de système d'exploitation
-
Accédez à la console Web Oracle Linux Virtualization Manager, puis à Stockage et à Disques.
-
Cliquez sur Télécharger vers le serveur et sur Démarrer.
-
Fournissez l'image ISO du système d'exploitation. Sélectionnez le domaine de stockage iscsi-datavol et cliquez sur OK. Pour plus d'informations, reportez-vous à Get Ubuntu Server.
Tâche 9 : configuration du réseau virtuel ouvert (OVN)
-
Accédez à la console Web Oracle Linux Virtualization Manager, accédez à Réseau, Réseaux et cliquez sur Nouveau.
-
Saisissez les informations suivantes .
- Nom : Sélectionnez Valeur par défaut.
- Sélectionnez Créer sur un fournisseur externe.
- Fournisseur externe : entrez
ovirt-provider-ovn
. - Sécurité du port réseau : sélectionnez Désactivé.
-
Sélectionnez Sous-réseaux et créez un sous-réseau avec les informations suivantes.
- Nom : Sélectionnez Valeur par défaut.
- CIDR : entrez
10.0.150.0/24
. - Passerelle : entrez
10.0.150.1
.
-
Cliquez sur OK.
Tâche 10 : provisionnement d'une nouvelle machine virtuelle dans Oracle Linux Virtualization Manager
-
Accédez à la console Web Oracle Linux Virtualization Manager, accédez à Compute, Machines virtuelles et cliquez sur Nouveau.
-
Saisissez les informations suivantes .
- Nom : entrez
vm1
. - Dans Images d'instance, cliquez sur Créer et entrez Taille pour qu'elle soit 15 Go.
- nic1 : sélectionnez Par défaut/Par défaut.
- Nom : entrez
-
Cliquez sur Afficher les options avancées, entrez les informations suivantes et cliquez sur OK.
- Options d'initialisation : attachez le CD -
ubuntu-24.04.1-live-server-amd64.iso
.
- Options d'initialisation : attachez le CD -
-
Attendez que le disque soit créé, sélectionnez la machine virtuelle créée, cliquez sur Exécuter et attendez que la machine virtuelle démarre.
-
Pour vous connecter à la console de machine virtuelle, accédez à Console, à Options de console, sélectionnez NoVNC, cliquez sur OK, puis sur Console.
Poursuivez l'installation de l'O/S, notez qu'à ce stade, Internet n'est pas disponible.
Tâche 11 : connexion du réseau virtuel ouvert à OCI VCN
Dans l'image suivante, vous pouvez voir une illustration du réseau logique que nous devons définir dans Oracle Linux Virtualization Manager.
L'accès au VLAN OCI 1001 est fourni via un port de passerelle distribuée. Pour plus d'informations, reportez-vous à Création d'un routeur de passerelle distribuée Open Virtual Network.
-
Configurez les troisièmes VNIC sur les hôtes 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.
-
Exécutez les commandes suivantes à partir du moteur Oracle Linux Virtualization Manager pour afficher la configuration actuelle.
[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"
-
Créez le routeur logique nommé
router
.[root@olvm-he opc]# ovn-nbctl lr-add router
-
Créez un port de routeur pour la connexion au pont
Default
d'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
-
Connectez le pont
Default
au routeur.[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
-
Exécutez la commande suivante pour afficher le réseau logique.
[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"]
-
Créez le pont logique nommé
public
.[root@olvm-he opc]# ovn-nbctl ls-add public
-
Préparez-vous à connecter le port des hôtes KVM locaux au pont logique
public
via le réseauprovider
.[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
-
Connectez
router
aux ponts logiquespublic
à l'aide d'un port de routeur distribué.[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
-
Planifiez le port du routeur (priorité supérieure pour le premier hôte 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
-
Vérifiez la configuration du port du routeur.
[root@olvm-he opc]# ovn-nbctl lrp-get-gateway-chassis router-public router-public-kvm1.olvm.demo 20 router-public-kvm2.olvm.demo 15
-
Définissez le saut suivant pour
0.0.0.0/0
via la passerelle VLAN OCI.[root@olvm-he opc]# ovn-nbctl lr-route-add router "0.0.0.0/0" 10.0.20.1
-
Exécutez la commande suivante pour afficher le récapitulatif de la configuration.
[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"
Nous pouvons confirmer en voyant
Port_Binding cr-router-public
sous la sectionkvm1.olvm.demo
que le port de routeur est associé au premier hôte KVM. -
Mappez les interfaces locales des hôtes KVM, connectés au VLAN 1001, sur le réseau
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
-
Le VLAN OCI fournit des trames uniquement aux adresses MAC associées aux périphériques connectés au VLAN.
Si nous n'utilisons pas NAT, si le propriétaire du port de routeur logique est modifié, nous devons mettre à jour l'adresse MAC du port de routeur logique pour qu'elle corresponde à l'adresse MAC du châssis actif.
Le service suivant s'occupe de cette opération. Mettez à jour la base de données Open Virtual Network SB avec les mappages d'adresses MAC du châssis (requis pour la fonctionnalité du contrôleur de permutation).
[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
-
Créez le fichier nommé
/usr/share/ovirt-provider-ovn/ovn_ha_gw_controller.py
avec le contenu suivant.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()
-
Créez le fichier nommé
/etc/systemd/system/ovn-ha-gateway-controller.service
avec le contenu suivant.[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.
-
Démarrez le service.
systemctl enable ovn-ha-gateway-controller.service systemctl start ovn-ha-gateway-controller.service
Tâche 12 : finalisation de la configuration réseau OCI.
Les paquets provenant de VM1 doivent pouvoir atteindre le VLAN OCI 1001. Notre plan est de permettre à ces paquets d'atteindre Internet.
-
Vous devez attacher une table de routage au VLAN avec la règle suivante : (acheminer
0.0.0.0/0
via la passerelle NAT). -
Pour le trafic revenant d'Internet vers VM1, nous devons gérer le routage pour le CIDR
10.0.150.0/24
. Nous devons définir une adresse IP externe pour le VLAN 1001. Il s'agit de l'adresse IP associée au port de routeur logique,10.0.20.10
.Une fois cette adresse IP définie, nous allons créer une table de routage avec la règle suivante : (acheminer
10.0.150.0/24
à10.0.20.10
) -
Maintenant, nous pouvons associer ce nouveau routage à la passerelle NAT et transférer les paquets pour atteindre VM1.
À ce stade, nous devrions pouvoir accéder à Internet à partir du site VM1.
Liens connexes
Remerciements
- Auteur - Andrei Ilas (architecte cloud principal)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Deploy Oracle Linux Virtualization Manager using the Open Virtualization Network Provider on Oracle Cloud Infrastructure
G19501-02
December 2024