Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Déployez Oracle Linux Virtualization Manager à l'aide du fournisseur de réseau de virtualisation ouvert sur Oracle Cloud Infrastructure
Présentation
Dans ce tutoriel, nous passerons en revue un scénario dans lequel une équipe vise à augmenter l'utilisation d'un parc de noeuds sans système d'exploitation en étendant leur environnement Oracle Linux Virtualization Manager sur place dans Oracle Cloud Infrastructure (OCI). En intégrant les capacités de réseau d'Oracle Cloud au réseau virtuel ouvert (OVN), vous pouvez établir un pont entre la connectivité entre les ressources sur place et les machines virtuelles déployées par Oracle Linux Virtualization Manager dans OCI au moyen de FastConnect.
Note : Ce tutoriel n'est offert qu'à 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 fait l'objet d'un aperçu de technologie, ce qui indique qu'une fonction est toujours en cours de développement.
Aperçu et déploiement des solutions
Aperçu des solutions
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 carte VNIC principale du moteur hébergé. - Un sous-réseau privé (
10.0.12.0/24
) utilisé pour la carte VNIC principale des hôtes de machine virtuelle basée sur le noyau Oracle Linux (KVM). - Virtual Local Area Network (VLAN) 1000 (
10.0.10.0/24
) utilisé pour la communication entre le moteur hébergé Oracle Linux Virtualization Manager et les hôtes KVM. - VLAN 1001 (
10.0.20.0/24
) utilisé pour développer les réseaux virtuels OVN dans OCI. - Une passerelle NAT.
- Une seule passerelle Internet.
- Une table de routage privée (
0.0.0.0/0
au moyen de la passerelle NAT) et associez-la au sous-réseau privé et au réseau VLAN 1001. - Une table de routage publique (
0.0.0.0/0
au moyen de la passerelle Internet) et associez-la au sous-réseau public. - Les listes de sécurité doivent permettre :
- Toutes les connexions sortantes (
0.0.0.0/0
) tous les protocoles. - Toutes les connexions entrantes à partir du bloc CIDR du VCN (
10.0.0.0/16
). - Connexion entrante pour tous les protocoles à partir du PC client.
- Toutes les connexions sortantes (
Déploiement de la solution
-
Créez une instance de machine virtuelle (configuration recommandée : VM.Standard.E5). Flex avec 2 OCPU/24 Go de mémoire vive) exécutant Oracle Linux 8 pour le moteur hébergé. Attachez une carte VNIC secondaire à l'instance de machine virtuelle et connectez-la au réseau VLAN 1000.
-
Créez deux instances sans système d'exploitation (configuration recommandée : BM.Standard.E5.192) exécutant Oracle Linux 8 qui seront utilisées en tant qu'hôtes KVM. Attachez deux cartes vNIC secondaires à chacun des hôtes sans système d'exploitation et connectez-les aux réseaux VLAN 1000 et 1001.
Objectifs
- Exécutez Oracle Linux Virtualization Manager version 4.5 dans OCI et activez les machines virtuelles pour accéder à Internet au moyen de la passerelle OCI NAT.
Préalables
-
Le moteur hébergé d'Oracle Linux Virtualization Manager peut s'exécuter sur une machine virtuelle (VM.Standard.E5). Flex avec 2 OCPU/24 Go de mémoire vive - Testé).
-
Les hôtes KVM (Kernel-based Virtual Machine) Oracle Linux peuvent s'exécuter sur des hôtes sans système d'exploitation (BM) (BM.Standard.E5.192 - testés).
-
Toutes les ressources sans système d'exploitation 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 : Configurer le moteur hébergé d'Oracle Linux Virtualization Manager
Nous allons commencer par configurer l'interface secondaire. Le statut courant de l'interface doit avoir l'apparence suivante (ignorer l'adresse IP privée sur la carte VNIC 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 l'ensemble 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 dans la documentation d'installation officielle. Pour plus d'informations, voir 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é avec succès, vous devriez voir les informations d'accès Web s'afficher dans la console.
http://olvm-he.olvm.defaultvcn.oraclevcn.com:80/ovirt-engine
https://olvm-he.olvm.defaultvcn.oraclevcn.com:443/ovirt-engine.
Notes :
- Par défaut, le domaine du VCN Oracle ne peut pas être résolu publiquement.
- Assurez-vous que la liste de sécurité ou le groupe de sécurité de réseau configuré pour l'instance autorise les connexions entrantes sur le port 443.
Pour accéder à la console Web du moteur hébergé d'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 d'utilisateur admin@ovirt
et le mot de passe configuré.
Tâche 3 : Configurer les hôtes KVM (Oracle Linux Kernel-based Virtual Machine)
Nous commençons par 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. Remarque pour mettre à jour les adresses MAC et IP lorsque vous configurez l'interface VLAN 1000.
-
Vérifiez que l'hôte KVM comporte deux cartes vNIC secondaires, connectées aux réseaux VLAN 1000 et 1001.
-
Configurez la carte VNIC secondaire dans le réseau 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
Note :
02:00:17:14:AA:20
est l'adresse MAC de la carte VNIC VLAN 1000 pour le premier hôte KVM (n'oubliez pas d'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 utiliserons pour le premier hôte KVM du VLAN 1000.10.0.10.12/24
est l'adresse IP que nous utiliserons pour le deuxième hôte KVM du VLAN 1000.
-
Activez le référentiel
ol8_baseos_latest
.[root@kvm-1 opc]# dnf config-manager --enable ol8_baseos_latest
-
Installez l'ensemble 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 cockpit 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 : Configurer la zone privée DNS
-
Créez une nouvelle zone DNS privée dans OCI. Pour plus d'informations, voir Création d'une zone DNS privée.
- La zone peut être nommée
olvm.demo
. - Attachez 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 d'Oracle Linux Virtualization Manager.
-
Mettez à jour le réseau ovirtmgmt pour utiliser VLAN 1000.
-
Naviguez jusqu'à Réseau et Réseaux.
-
Sélectionnez ovirtmgmt et cliquez sur Modifier.
-
Sélectionnez Activer le marquage de réseau VLAN, entrez 1000 et cliquez sur OK.
-
-
Ajoutez les hôtes KVM.
-
Naviguez jusqu'à Calcul et Hôtes.
-
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 supprimez le contenu existant. - Nom : Entrez
-
Cliquez sur Ok.
-
Tâche 6 : Ajouter les autorités de certification d'Oracle Linux Virtualization Manager à la liste des autorités de certification racine de confiance du navigateur
-
Téléchargez le certificat de l'autorité de certification à partir de l'adresse suivante :
https://<OLVM-hosted-engine-FQDN>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA
. -
Naviguez jusqu'au navigateur Paramètres, Certificats et importez l'autorité de certification Oracle Linux Virtualization Manager vers la liste des autorités de certification racine approuvées.
Tâche 7 : Créer un domaine de stockage
-
Créez un nouveau volume par blocs OCI dans le même domaine de disponibilité que les hôtes KVM.
-
Attachez le volume par blocs au premier hôte KVM et sélectionnez Lecture/écriture - partageable comme Accès.
-
Attachez le même volume par blocs au deuxième hôte KVM et sélectionnez Lecture/écriture - partageable comme Accès.
-
Créez un nouveau domaine de stockage dans Oracle Linux Virtualization Manager.
-
Allez à la console Web Oracle Linux Virtualization Manager, naviguez jusqu'à Stockage et Domaines.
-
Cliquez sur New Domain (Nouveau domaine) et entrez 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 détectée et cliquez sur Ajouter pour l'ID lun.
-
Cliquez sur OK pour créer le nouveau domaine.
-
Tâche 8 : Charger une nouvelle image du système d'exploitation
-
Allez à la console Web Oracle Linux Virtualization Manager, naviguez jusqu'à Stockage et Disques.
-
Cliquez sur Charger 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, voir Obtenir le serveur Ubuntu.
Tâche 9 : Configurer le réseau virtuel ouvert (OVN)
-
Allez à la console Web Oracle Linux Virtualization Manager, naviguez jusqu'à Réseau, Réseaux et cliquez sur Nouveau.
-
Entrez les informations suivantes .
- Nom : Sélectionnez Par défaut.
- Sélectionnez Créer sur un fournisseur externe.
- Fournisseur externe : Entrez
ovirt-provider-ovn
. - Sécurité des ports réseau : Sélectionnez Désactivé.
-
Sélectionnez Sous-réseaux et créez un nouveau sous-réseau avec les informations suivantes.
- Nom : Sélectionnez par défaut.
- CIDR : Entrez
10.0.150.0/24
. - Passerelle : Entrez
10.0.150.1
.
-
Cliquez sur Ok.
Tâche 10 : Provisionner une nouvelle machine virtuelle dans Oracle Linux Virtualization Manager
-
Allez à la console Web Oracle Linux Virtualization Manager, naviguez jusqu'à Calcul, Machines virtuelles et cliquez sur Nouveau.
-
Entrez les informations suivantes .
- Nom : Entrez
vm1
. - Dans Images d'instance, cliquez sur Créer et entrez Taille comme 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 de démarrage : Attachez un CD -
ubuntu-24.04.1-live-server-amd64.iso
.
- Options de démarrage : Attachez un 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, naviguez jusqu'à Console, Options de console, sélectionnez NoVNC, cliquez sur OK, puis sur Console.
Poursuivez l'installation du système d'exploitation, notez qu'Internet n'est pas disponible à l'étape.
Tâche 11 : Connecter le réseau virtuel ouvert au VCN OCI
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 1001 pour OCI est fourni au moyen d'un port de passerelle distribuée. Pour plus d'informations, voir Comment créer un routeur de passerelle distribuée de réseau virtuel ouvert.
-
Configurez les troisièmes cartes 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 courante.
[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
au moyen du 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
-
Programmez 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
au moyen de la passerelle VLAN pour 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 voir le sommaire 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
dans la sectionkvm1.olvm.demo
que le port du routeur est associé au premier hôte KVM. -
Mappez les interfaces locales des hôtes KVM, connectés au réseau VLAN 1001, au 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, dans le cas où le propriétaire du port du routeur logique est modifié, nous devons mettre à jour l'adresse MAC du port du 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 SB Open Virtual Network avec les mappings 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 : Finaliser la configuration du réseau OCI.
Les paquets de VM1 doivent pouvoir atteindre le réseau VLAN 1001 pour OCI. Notre plan est de permettre à ces paquets d'atteindre Internet.
-
Vous devez attacher une table de routage au réseau VLAN avec la règle : (Route
0.0.0.0/0
au moyen d'une passerelle NAT). -
Pour le trafic revenant d'Internet vers VM1, nous devons gérer le routage pour 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 du routeur logique,10.0.20.10
.Une fois cette adresse IP définie, nous créerons une nouvelle table de routage avec la règle : (Route
10.0.150.0/24
à10.0.20.10
) -
Maintenant, nous pouvons associer cette nouvelle route à la passerelle NAT et transmettre les paquets pour atteindre VM1.
À ce stade, nous devrions être en mesure d'atteindre Internet à partir de VM1.
Liens connexes
Confirmation
- Auteur - Andrei Ilas (architecte en nuage principal)
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Deploy Oracle Linux Virtualization Manager using the Open Virtualization Network Provider on Oracle Cloud Infrastructure
G19500-02
December 2024