Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Despliegue de Oracle Linux Virtualization Manager mediante el proveedor de red de virtualización abierta en Oracle Cloud Infrastructure
Introducción
En este tutorial, analizaremos un escenario en el que un equipo tiene como objetivo aumentar la utilización de un conjunto de nodos con hardware dedicado mediante la ampliación de su entorno local existente de Oracle Linux Virtualization Manager a Oracle Cloud Infrastructure (OCI). Al integrar las capacidades de red de Oracle Cloud con Open Virtual Network (OVN), puede conectar la conectividad entre los recursos locales y las máquinas virtuales (VM) desplegadas de Oracle Linux Virtualization Manager en OCI mediante FastConnect.
Nota: Este tutorial es solo para fines de prueba y evaluación; el soporte de Oracle Linux Virtualization Manager para OCI está en desarrollo y, en realidad, no está soportado para gestionar sistemas OCI. El uso de OVN con Oracle Linux Virtualization Manager está en vista previa de tecnología, lo que indica que una función aún está en desarrollo.
Visión General e Despliegue de Soluciones
Visión General de la Solución
Necesitaremos una nueva VCN (10.0.0.0/16
) con los siguientes recursos:
- Una subred pública (
10.0.11.0/24
) utilizada para la VNIC primaria del motor alojado. - Una subred privada (
10.0.12.0/24
) utilizada para la VNIC principal de los hosts de máquina virtual (KVM) basada en el núcleo de Oracle Linux. - Red de área local virtual (VLAN) 1000 (
10.0.10.0/24
) utilizada para la comunicación entre el motor alojado de Oracle Linux Virtualization Manager y los hosts de KVM. - VLAN 1001 (
10.0.20.0/24
) utilizada para ampliar las redes virtuales de OVN a OCI. - Un gateway de NAT.
- Un gateway de Internet.
- Una tabla de rutas privadas (
0.0.0.0/0
a través del gateway de NAT) y asóciela a la subred privada y la VLAN 1001. - Una tabla de rutas públicas (
0.0.0.0/0
a través del gateway de Internet) y asóciela a la subred pública. - Las listas de seguridad deben permitir:
- Todas las conexiones de salida (
0.0.0.0/0
) todos los protocolos. - Todas las conexiones de entrada desde CIDR de VCN (
10.0.0.0/16
). - Conexión de entrada para todos los protocolos desde el equipo cliente.
- Todas las conexiones de salida (
Despliegue de la solución
-
Cree una instancia de VM (configuración recomendada: VM.Standard.E5). Flexible con 2 OCPU/24 GB de RAM) que ejecutan Oracle Linux 8 para el motor alojado. Conecte una VNIC secundaria a la instancia de VM y conéctela a la VLAN 1000.
-
Cree dos instancias BM (configuración recomendada: BM.Standard.E5.192) que ejecuten Oracle Linux 8 que se utilizarán como hosts KVM. Conecte dos VNIC secundarias a cada uno de los hosts BM y conéctelas a las VLAN 1000 y 1001.
Objetivos
- Ejecute Oracle Linux Virtualization Manager versión 4.5 en OCI y permita a las máquinas virtuales acceder a Internet a través del gateway de NAT de OCI.
Requisitos
-
El motor alojado de Oracle Linux Virtualization Manager se puede ejecutar en una máquina virtual (VM.Standard.E5). Flexibilidad con 2 OCPU/24 GB de RAM, probadas).
-
Los hosts de máquina virtual basada en núcleo (KVM) de Oracle Linux se pueden ejecutar en hosts con hardware dedicado (BM) (BM.Standard.E5.192: probado).
-
Todos los recursos con hardware dedicado se deben crear en el mismo dominio de disponibilidad (AD).
-
Todos los hosts pueden ejecutar Oracle Linux 8 (Oracle-Linux-8.10-2024.09.30-0: probado).
Tarea 1: Configuración del motor alojado de Oracle Linux Virtualization Manager
Comenzaremos configurando la interfaz secundaria. El estado de la interfaz actual debe ser similar (ignore la dirección IP privada en la 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
Configure la segunda interfaz, enp1s0
, en 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'
Ahora, instale Oracle Linux Virtualization Manager versión 4.5.
-
Active el repositorio
ol8_baseos_latest
.[root@olvm-he opc]# dnf config-manager --enable ol8_baseos_latest
-
Instale el paquete Oracle Linux Virtualization Manager versión 4.5, que activa o desactiva automáticamente los repositorios necesarios.
[root@olvm-he opc]# dnf install -y oracle-ovirt-release-45-el8
-
Ejecute el comando
dnf
para verificar que los repositorios necesarios estén activados.[root@olvm-he opc]# dnf clean all [root@olvm-he opc]# dnf repolist
Debe activar los siguientes repositorios:
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (Para VDSM)
ol8_UEKR7
-
Ejecute el siguiente comando para activar cualquier repositorio que falte.
[root@olvm-he opc]# dnf config-manager --enable <repository-name>
-
Ejecute el siguiente comando si el host está ejecutando UEK R7.
dnf install -y kernel-uek-modules-extra
-
Ejecute el comando
ovirt-engine
para instalar el gestor.dnf install -y ovirt-engine --allowerasing
-
Ejecute el siguiente comando para configurar el motor.
engine-setup
Para cada paso de configuración, puede consultar las recomendaciones de la documentación de instalación oficial. Para obtener más información, consulte Opciones de Configuración del Motor.
Tarea 2: Acceso a la consola web de Oracle Linux Virtualization Manager
Si Oracle Linux Virtualization Manager se instala correctamente, debe ver la información de acceso web que se muestra en la consola.
http://olvm-he.olvm.defaultvcn.oraclevcn.com:80/ovirt-engine
https://olvm-he.olvm.defaultvcn.oraclevcn.com:443/ovirt-engine.
Notas:
- Por defecto, el dominio de VCN de Oracle no se puede resolver públicamente.
- Asegúrese de que la lista de seguridad/NSG configurados para la instancia permite conexiones de entrada en el puerto 443.
Para acceder a la consola web del motor alojado de Oracle Linux Virtualization Manager, puede agregar un registro de DNS al archivo de hosts del sistema operativo local C:\Windows\System32\drivers\etc\hosts
.
<VM-public-IP> olvm-he.olvm.defaultvcn.oraclevcn.com
Puede autenticarse con el nombre de usuario admin@ovirt
y la contraseña configurada.
Tarea 3: Configuración de los hosts de máquina virtual basada en núcleo (KVM) de Oracle Linux
Comenzamos con el primer host de KVM. Para configurar el segundo host, debe utilizar SSH en el segundo host con hardware dedicado y ejecutar los mismos comandos. Nota para actualizar las direcciones MAC e IP al configurar la interfaz VLAN 1000.
-
Confirme que el host de KVM tenga dos VNIC secundarias conectadas a las VLAN 1000 y 1001.
-
Configure la VNIC secundaria en la 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
es la dirección MAC de la VNIC de VLAN 1000 para el primer host de KVM (asegúrese de utilizar la dirección MAC correcta al configurar la interfazens340np0.1000
en el segundo host de KVM).10.0.10.11/24
es la dirección IP que utilizaremos para el primer host de KVM en la VLAN 1000.10.0.10.12/24
es la dirección IP que utilizaremos para el segundo host KVM en la VLAN 1000.
-
Active el repositorio
ol8_baseos_latest
.[root@kvm-1 opc]# dnf config-manager --enable ol8_baseos_latest
-
Instale el paquete Oracle Linux Virtualization Manager versión 4.5, que activa o desactiva automáticamente los repositorios necesarios.
[root@kvm-1 opc]# dnf install -y oracle-ovirt-release-45-el8
-
Ejecute el comando
dnf
para verificar que los repositorios necesarios estén activados.[root@kvm-1 opc]# dnf clean all [root@kvm-1 opc]# dnf repolist
Debe activar los siguientes repositorios:
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (Para VDSM)
ol8_UEKR7
-
Ejecute el siguiente comando para activar cualquier repositorio que falte.
[root@kvm-1 opc]# dnf config-manager --enable <repository-name>
-
Ejecute el siguiente comando si el host está ejecutando UEK R7.
[root@kvm-1 opc]# dnf install -y kernel-uek-modules-extra
-
Active la consola web de la cabina y abra el puerto de 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
Tarea 4: Configuración de la zona privada de DNS
-
Cree una nueva zona de DNS privada en OCI. Para obtener más información, consulte Creación de una zona de DNS privada.
- La zona se puede denominar
olvm.demo
. - Asocie la zona a la vista privada de DNS de la VCN.
- La zona se puede denominar
-
Cree dos registros DNS para los dos hosts de KVM y publique los cambios.
A 10.0.10.11 kvm1.olvm.demo A 10.0.10.12 kvm2.olvm.demo
Tarea 5: Adición de los hosts de KVM a Oracle Linux Virtualization Manager
-
Conéctese a la consola web de Oracle Linux Virtualization Manager.
-
Actualice la red ovirtmgmt para utilizar VLAN 1000.
-
Navegue hasta Network y Networks.
-
Seleccione ovirtmgmt y haga clic en Editar.
-
Seleccione Activar etiquetado VLAN, introduzca 1000 y haga clic en Aceptar.
-
-
Agregue los hosts de KVM.
-
Vaya a Compute y Hosts.
-
Haga clic en Nuevo e introduzca la siguiente información.
- Nombre: introduzca
kvm1.olvm.demo
. - Nombre de host: introduzca
kvm1.olvm.demo.
- Autenticación: seleccione Clave Pública SSH.
Agregue la clave SSH pública al archivo
/root/.ssh/authorized_keys
en el host de KVM y elimine el contenido existente. - Nombre: introduzca
-
Haga clic en Aceptar.
-
Tarea 6: Adición de las autoridades de certificación (CA) de Oracle Linux Virtualization Manager a la lista de autoridades de certificación raíz de confianza del explorador
-
Descargue el certificado de CA desde la siguiente dirección:
https://<OLVM-hosted-engine-FQDN>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA
. -
Vaya al explorador Settings, Certificates e importe la autoridad de certificación de Oracle Linux Virtualization Manager a la lista de autoridades de certificación raíz de confianza.
Tarea 7: Creación de un nuevo dominio de almacenamiento
-
Cree un nuevo volumen en bloque de OCI en el mismo dominio de disponibilidad que los hosts de KVM.
-
Asocie el volumen en bloque al primer host de KVM y seleccione Read/write - shareable (Lectura/escritura - Compartible) como Access (Acceso).
-
Asocie el mismo volumen en bloque al segundo host de KVM y seleccione Read/Write - shareable (Lectura/escritura - Compartible) como Access (Acceso).
-
Cree un nuevo dominio de almacenamiento en Oracle Linux Virtualization Manager.
-
Vaya a la consola web de Oracle Linux Virtualization Manager y vaya a Storage y Domains.
-
Haga clic en Nuevo Dominio e introduzca la siguiente información.
- Nombre: introduzca
iscsi-datavol
. - Storage Type: seleccione iSCSI.
- Host: introduzca
kvm1.private.zone
. - Dirección: introduzca
169.254.2.2
. - Puerto: introduzca
3260
.
- Nombre: introduzca
-
Haga clic en Conectar a todo.
-
Amplíe el destino detectado y haga clic en Agregar para el ID de LUN.
-
Haga clic en Aceptar para crear el nuevo dominio.
-
Tarea 8: Carga de una nueva imagen del sistema operativo
-
Vaya a la consola web de Oracle Linux Virtualization Manager y vaya a Storage y Disks.
-
Haga clic en Cargar e Iniciar.
-
Proporcione la imagen ISO del sistema operativo. Seleccione el dominio de almacenamiento iscsi-datavol y haga clic en Aceptar. Para obtener más información, consulte Get Ubuntu Server.
Tarea 9: Configuración de redes virtuales abiertas (OVN)
-
Vaya a la consola web de Oracle Linux Virtualization Manager, vaya a Network, Networks y haga clic en New (Nuevo).
-
Introduzca la siguiente información.
- Nombre: seleccione Valor predeterminado.
- Seleccione Crear en proveedor externo.
- Proveedor externo: introduzca
ovirt-provider-ovn
. - Network Port Security: seleccione Disabled.
-
Seleccione Subredes y cree una nueva subred con la siguiente información.
- Nombre: seleccione predeterminado.
- CIDR: introduzca
10.0.150.0/24
. - Gateway: introduzca
10.0.150.1
.
-
Haga clic en Aceptar.
Tarea 10: Aprovisionamiento de una nueva máquina virtual en Oracle Linux Virtualization Manager
-
Vaya a la consola web de Oracle Linux Virtualization Manager, vaya a Recursos informáticos, Máquinas virtuales y haga clic en Nuevo.
-
Introduzca la siguiente información.
- Nombre: introduzca
vm1
. - En Imágenes de instancia, haga clic en Crear e introduzca Tamaño para que sea 15 GB.
- nic1: seleccione Por Defecto/Por Defecto.
- Nombre: introduzca
-
Haga clic en Mostrar opciones avanzadas, introduzca la siguiente información y haga clic en Aceptar.
- Opciones de inicio: Conecte el CD:
ubuntu-24.04.1-live-server-amd64.iso
.
- Opciones de inicio: Conecte el CD:
-
Espere a que se cree el disco, seleccione la VM creada, haga clic en Run (Ejecutar) y espere a que se inicie la VM.
-
Para conectarse a la consola de VM, vaya a Consola, Opciones de consola, seleccione NoVNC, haga clic en Aceptar y, a continuación, haga clic en Consola.
Continúe con la instalación del sistema operativo. Tenga en cuenta que, en la etapa, Internet no está disponible.
Tarea 11: Conexión de la red virtual abierta a la VCN de OCI
En la siguiente imagen, puede ver una ilustración de la red lógica que necesitamos definir en Oracle Linux Virtualization Manager.
El acceso a la VLAN 1001 de OCI se proporciona mediante un puerto de gateway distribuido. Para obtener más información, consulte How to create an Open Virtual Network Distributed Gateway Router.
-
Configure las terceras VNIC en los hosts de 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.
-
Ejecute los siguientes comandos desde el motor de Oracle Linux Virtualization Manager para mostrar la configuración actual.
[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"
-
Cree el enrutador lógico denominado
router
.[root@olvm-he opc]# ovn-nbctl lr-add router
-
Cree un puerto de enrutador para la conexión al puente
Default
de 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
-
Conecte el puente
Default
al enrutador.[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
-
Ejecute el siguiente comando para mostrar la red lógica.
[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"]
-
Cree el puente lógico denominado
public
.[root@olvm-he opc]# ovn-nbctl ls-add public
-
Prepárese para conectar el puerto de hosts de KVM local al puente lógico
public
mediante la redprovider
.[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
-
Conecte
router
a los puentes lógicospublic
mediante un puerto de enrutador distribuido.[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
-
Programe el puerto del enrutador (prioridad más alta para el primer 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
-
Compruebe la configuración del puerto del enrutador.
[root@olvm-he opc]# ovn-nbctl lrp-get-gateway-chassis router-public router-public-kvm1.olvm.demo 20 router-public-kvm2.olvm.demo 15
-
Defina el siguiente salto para
0.0.0.0/0
mediante el gateway de VLAN de OCI.[root@olvm-he opc]# ovn-nbctl lr-route-add router "0.0.0.0/0" 10.0.20.1
-
Ejecute el siguiente comando para ver el resumen de configuración.
[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"
Podemos confirmar mediante
Port_Binding cr-router-public
en la secciónkvm1.olvm.demo
que el puerto del enrutador está asociado al primer host KVM. -
Asigne interfaces locales de los hosts de KVM, conectados a la VLAN 1001, a la red
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 de OCI proporciona marcos solo a las direcciones MAC asociadas a los dispositivos conectados a VLAN.
Si no utilizamos NAT, en el caso de que se cambie el propietario del puerto de enrutador lógico, necesitamos actualizar la dirección MAC del puerto de enrutador lógico para que coincida con la dirección MAC del chasis activo.
El siguiente servicio se encarga de esta operación. Actualice la base de datos Open Virtual Network SB con las asignaciones de direcciones MAC del chasis (necesarias para la funcionalidad del controlador de 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
-
Cree el archivo denominado
/usr/share/ovirt-provider-ovn/ovn_ha_gw_controller.py
con el siguiente contenido.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()
-
Cree el archivo denominado
/etc/systemd/system/ovn-ha-gateway-controller.service
con el siguiente contenido.[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.
-
Inicie el servicio.
systemctl enable ovn-ha-gateway-controller.service systemctl start ovn-ha-gateway-controller.service
Tarea 12: Finalización de la configuración de OCI Networking.
Los paquetes de VM1 deben poder alcanzar la VLAN 1001 de OCI. Nuestro plan es permitir que estos paquetes lleguen a Internet.
-
Debe asociar una tabla de rutas a la VLAN con la regla: (Enrute
0.0.0.0/0
a través del gateway de NAT). -
Para el tráfico que vuelve de Internet hacia VM1, debemos manejar el enrutamiento para CIDR
10.0.150.0/24
. Necesitamos definir una IP externa para la VLAN 1001. Esta es la dirección IP asociada con el puerto de enrutador lógico,10.0.20.10
.Con esta dirección IP definida, crearemos una nueva tabla de enrutamiento con la regla: (Ruta
10.0.150.0/24
a10.0.20.10
) -
Ahora, podemos asociar esta nueva ruta con el gateway de NAT y reenviar los paquetes para llegar a VM1.
En esta etapa deberíamos poder llegar a Internet desde VM1.
Enlaces relacionados
Agradecimientos
- Autor: Andrei Ilas (arquitecto principal maestro en la nube)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visita education.oracle.com/learning-explorer para convertirte en un Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Deploy Oracle Linux Virtualization Manager using the Open Virtualization Network Provider on Oracle Cloud Infrastructure
G19499-02
December 2024