Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Implante o Oracle Linux Virtualization Manager usando o Provedor de Rede de Virtualização Aberta no Oracle Cloud Infrastructure
Introdução
Neste tutorial, percorreremos um cenário em que uma equipe visa aumentar a utilização de uma frota de nós bare metal, estendendo seu ambiente Oracle Linux Virtualization Manager local existente para a Oracle Cloud Infrastructure (OCI). Ao integrar os recursos de rede da Oracle Cloud com a Open Virtual Network (OVN), você pode conectar a conectividade entre recursos locais e as máquinas virtuais (VMs) implantadas do Oracle Linux Virtualization Manager na OCI por meio do FastConnect.
Observação: Este tutorial é apenas para fins de teste e avaliação; o suporte do Oracle Linux Virtualization Manager para OCI está em desenvolvimento e, na verdade, não é suportado para gerenciar sistemas OCI. O uso do OVN com o Oracle Linux Virtualization Manager está em visualização de tecnologia, indicando que um recurso ainda está em desenvolvimento.
Visão Geral e Implantação da Solução
Visão Geral da Solução
Precisaremos de uma nova VCN (10.0.0.0/16
) com os seguintes recursos:
- Uma sub-rede pública (
10.0.11.0/24
) usada para a VNIC principal do mecanismo hospedado. - Uma sub-rede privada (
10.0.12.0/24
) usada para a VNIC principal dos hosts de KVM (Máquina Virtual Baseada no Kernel) do Oracle Linux. - Rede Virtual de Área Local (VLAN) 1000 (
10.0.10.0/24
) usada para comunicação entre o mecanismo hospedado do Oracle Linux Virtualization Manager e os hosts KVM. - VLAN 1001 (
10.0.20.0/24
) usada para expandir as redes virtuais OVN para a OCI. - Um Gateway NAT.
- Um Gateway de Internet.
- Uma tabela de roteamento privada (
0.0.0.0/0
por meio do gateway NAT) e associe-a à sub-rede privada e à VLAN 1001. - Uma tabela de roteamento pública (
0.0.0.0/0
por meio do gateway de internet) e associe-a à sub-rede pública. - As listas de segurança devem permitir:
- Todas as conexões de saída (
0.0.0.0/0
) de todos os protocolos. - Todas as conexões de entrada do CIDR da VCN (
10.0.0.0/16
). - Conexão de entrada para todos os protocolos do PC cliente.
- Todas as conexões de saída (
Implantação de solução
-
Crie uma instância de VM (configuração recomendada: VM.Standard.E5. Flex com 2 OCPUs/24 GB de RAM) executando o Oracle Linux 8 para o mecanismo hospedado. Anexe uma VNIC secundária à instância da VM e conecte-a à VLAN 1000.
-
Crie duas instâncias BM (configuração recomendada: BM.Standard.E5.192) executando o Oracle Linux 8 que será usado como hosts KVM. Anexe duas VNICs secundárias a cada um dos hosts BM e conecte-as às VLANs 1000 e 1001.
Objetivos
- Execute o Oracle Linux Virtualization Manager Release 4.5 no OCI e permita que as VMs acessem a Internet por meio do gateway NAT do OCI.
Pré-requisitos
-
O mecanismo hospedado no Oracle Linux Virtualization Manager pode ser executado em uma VM (VM.Standard.E5. Flex com 2 OCPUs/24 GB de RAM - testado).
-
Os hosts de Máquina Virtual baseada em Kernel (KVM) do Oracle Linux podem ser executados em hosts Bare Metal (BM) (BM.Standard.E5.192 - testados).
-
Todos os recursos BM devem ser criados no mesmo domínio de disponibilidade (AD).
-
Todos os hosts podem executar o Oracle Linux 8 (Oracle-Linux-8.10-2024.09.30-0 - testado).
Tarefa 1: Configurar o Mecanismo Hospedado do Oracle Linux Virtualization Manager
Vamos começar configurando a interface secundária. O status da interface atual deve ser semelhante (ignore o endereço IP privado na VNIC principal):
[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 a segunda interface, enp1s0
, na 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'
Agora, instale o Oracle Linux Virtualization Manager Release 4.5.
-
Ative o repositório
ol8_baseos_latest
.[root@olvm-he opc]# dnf config-manager --enable ol8_baseos_latest
-
Instale o pacote Oracle Linux Virtualization Manager Release 4.5, que ativa ou desativa automaticamente os repositórios necessários.
[root@olvm-he opc]# dnf install -y oracle-ovirt-release-45-el8
-
Execute o comando
dnf
para verificar se os repositórios necessários estão ativados.[root@olvm-he opc]# dnf clean all [root@olvm-he opc]# dnf repolist
Os seguintes repositórios devem ser ativados:
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (Para VDSM)
ol8_UEKR7
-
Execute o comando a seguir para ativar qualquer repositório ausente.
[root@olvm-he opc]# dnf config-manager --enable <repository-name>
-
Execute o comando a seguir se o host estiver executando o UEK R7.
dnf install -y kernel-uek-modules-extra
-
Execute o comando
ovirt-engine
para instalar o gerenciador.dnf install -y ovirt-engine --allowerasing
-
Execute o comando a seguir para configurar o mecanismo.
engine-setup
Para cada etapa de configuração, você pode verificar as recomendações na documentação de instalação oficial. Para obter mais informações, consulte as Opções de Configuração do Mecanismo.
Tarefa 2: Acessar a Console Web do Oracle Linux Virtualization Manager
Se o Oracle Linux Virtualization Manager for instalado com sucesso, você verá as informações de acesso à Web sendo exibidas no console.
http://olvm-he.olvm.defaultvcn.oraclevcn.com:80/ovirt-engine
https://olvm-he.olvm.defaultvcn.oraclevcn.com:443/ovirt-engine.
Observações:
- Por padrão, o domínio da VCN da Oracle não pode ser resolvido publicamente.
- Certifique-se de que a lista de segurança/NSG configurada para a instância permita conexões de entrada na porta 443.
Para acessar a console web do mecanismo hospedado pelo Oracle Linux Virtualization Manager, você pode adicionar um registro de DNS ao arquivo de hosts do Sistema Operacional (SO) local C:\Windows\System32\drivers\etc\hosts
.
<VM-public-IP> olvm-he.olvm.defaultvcn.oraclevcn.com
Você pode autenticar com o nome de usuário admin@ovirt
e a senha configurada.
Tarefa 3: Configurar os Hosts de KVM (Máquina Virtual Baseada no Kernel) do Oracle Linux
Estamos começando com o primeiro host KVM. Para configurar o segundo host, você precisa usar SSH no segundo host BM e executar os mesmos comandos. Observe para atualizar os endereços MAC e IP ao configurar a interface VLAN 1000.
-
Confirme se o host KVM tem duas VNICs secundárias, conectadas às VLANs 1000 e 1001.
-
Configure a VNIC secundária na 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
Observação:
02:00:17:14:AA:20
é o endereço MAC da VNIC VLAN 1000 para o primeiro host KVM (certifique-se de usar o endereço MAC correto ao configurar a interfaceens340np0.1000
no segundo host KVM).10.0.10.11/24
é o endereço IP que usaremos para o primeiro host KVM na VLAN 1000.10.0.10.12/24
é o endereço IP que usaremos para o segundo host KVM na VLAN 1000.
-
Ative o repositório
ol8_baseos_latest
.[root@kvm-1 opc]# dnf config-manager --enable ol8_baseos_latest
-
Instale o pacote Oracle Linux Virtualization Manager Release 4.5, que ativa ou desativa automaticamente os repositórios necessários.
[root@kvm-1 opc]# dnf install -y oracle-ovirt-release-45-el8
-
Execute o comando
dnf
para verificar se os repositórios necessários estão ativados.[root@kvm-1 opc]# dnf clean all [root@kvm-1 opc]# dnf repolist
Os seguintes repositórios devem ser ativados:
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (Para VDSM)
ol8_UEKR7
-
Execute o comando a seguir para ativar qualquer repositório ausente.
[root@kvm-1 opc]# dnf config-manager --enable <repository-name>
-
Execute o comando a seguir se o host estiver executando o UEK R7.
[root@kvm-1 opc]# dnf install -y kernel-uek-modules-extra
-
Ative o console web do cockpit e abra a porta do 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
Tarefa 4: Configurar a Zona Privada de DNS
-
Crie uma nova zona de DNS privada no OCI. Para obter mais informações, consulte Criando uma Zona Privada de DNS.
- A zona pode ser nomeada
olvm.demo
. - Anexe a zona à view privada de DNS da VCN.
- A zona pode ser nomeada
-
Crie dois registros DNS para os dois hosts KVM e publique as alterações.
A 10.0.10.11 kvm1.olvm.demo A 10.0.10.12 kvm2.olvm.demo
Tarefa 5: Adicionar os hosts KVM ao Oracle Linux Virtualization Manager
-
Conecte-se à console web do Oracle Linux Virtualization Manager.
-
Atualize a rede ovirtmgmt para usar VLAN 1000.
-
Navegue até Rede e Redes.
-
Selecione ovirtmgmt e clique em Editar.
-
Selecione Ativar tag de VLAN, digite 1000 e clique em Ok.
-
-
Adicione os hosts KVM.
-
Navegue até Compute e Hosts.
-
Clique em Novo e especifique as seguintes informações.
- Nome: Digite
kvm1.olvm.demo
. - Nome do Host: Digite
kvm1.olvm.demo.
- Autenticação: Selecione Chave Pública SSH.
Adicione a chave SSH pública ao arquivo
/root/.ssh/authorized_keys
no host KVM e remova o conteúdo existente. - Nome: Digite
-
Clique em Ok.
-
Tarefa 6: Adicionar as Autoridades de Certificação (CA) do Oracle Linux Virtualization Manager à Lista de Autoridades de Certificação Raiz Confiáveis do Browser
-
Faça download do certificado da CA no seguinte endereço:
https://<OLVM-hosted-engine-FQDN>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA
. -
Navegue até as Definições, Certificados do navegador e importe a CA do Oracle Linux Virtualization Manager para a lista de autoridades de certificação raiz confiável.
Tarefa 7: Criar um Novo Domínio de Armazenamento
-
Crie um novo Volume em Blocos do OCI dentro do mesmo domínio de disponibilidade dos hosts KVM.
-
Anexe o volume em blocos ao primeiro host KVM e selecione Leitura/gravação - compartilhável como Acesso.
-
Anexe o mesmo volume em blocos ao segundo host KVM e selecione Leitura/Gravação - compartilhável como Acesso.
-
Crie um novo domínio de armazenamento no Oracle Linux Virtualization Manager.
-
Vá para a console web do Oracle Linux Virtualization Manager, navegue até Storage e Domains.
-
Clique em Novo Domínio e digite as informações a seguir.
- Nome: Digite
iscsi-datavol
. - Tipo de Armazenamento: Selecione iSCSI.
- Host: Digite
kvm1.private.zone
. - Endereço: Informe
169.254.2.2
. - Porta: Digite
3260
.
- Nome: Digite
-
Clique em Logar Tudo.
-
Expanda o destino descoberto e clique em Adicionar para o ID da Lun.
-
Clique em Ok para criar o novo domínio.
-
Tarefa 8: Fazer Upload de uma Nova Imagem do Sistema Operacional
-
Vá para a console web do Oracle Linux Virtualization Manager, navegue até Armazenamento e Discos.
-
Clique em Carregar e Iniciar.
-
Forneça a imagem ISO do SO. Selecione o domínio de armazenamento iscsi-datavol e clique em Ok. Para obter mais informações, consulte Obter Servidor Ubuntu.
Tarefa 9: Configurar Rede Virtual Aberta (OVN)
-
Vá para a console web do Oracle Linux Virtualization Manager, navegue até Rede, Redes e clique em Novo.
-
Digite as seguintes informações.
- Name: Selecione Default.
- Selecione Criar no provedor externo.
- Provedor Externo: Digite
ovirt-provider-ovn
. - Segurança da Porta de Rede: Selecione Desativado.
-
Selecione Sub-redes e crie uma nova sub-rede com as informações a seguir.
- Name: Selecione default.
- CIDR: Digite
10.0.150.0/24
. - Gateway: Digite
10.0.150.1
.
-
Clique em Ok.
Tarefa 10: Provisionar uma Nova Máquina Virtual no Oracle Linux Virtualization Manager
-
Vá para a console web do Oracle Linux Virtualization Manager, navegue até Compute, Virtual Machines e clique em Novo.
-
Digite as seguintes informações.
- Nome: Digite
vm1
. - Em Imagens da Instância, clique em Criar e digite Tamanho para ser 15 GB.
- nic1: Selecione Padrão/Padrão.
- Nome: Digite
-
Clique em Mostrar Opções Avançadas, especifique as informações a seguir e clique em Ok.
- Opções de Inicialização: Anexe o CD -
ubuntu-24.04.1-live-server-amd64.iso
.
- Opções de Inicialização: Anexe o CD -
-
Aguarde a criação do disco, selecione a VM criada, clique em Executar e aguarde o início da VM.
-
Para estabelecer conexão com a console da VM, navegue até Console, Opções da Console, selecione NoVNC, clique em Ok e, em seguida, clique em Console.
Continue a instalar o sistema operacional, observe que, no estágio, a Internet não está disponível.
Tarefa 11: Conectar a Rede Virtual Aberta à VCN do OCI
Na imagem a seguir, você pode ver uma ilustração da rede lógica que precisamos definir no Oracle Linux Virtualization Manager.
O acesso à VLAN 1001 do OCI é fornecido por meio de uma porta de gateway distribuído. Para obter mais informações, consulte How to create an Open Virtual Network distributed gateway router.
-
Configure as terceiros VNICs nos hosts 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.
-
Execute os comandos a seguir no mecanismo do Oracle Linux Virtualization Manager para exibir a configuração atual.
[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"
-
Crie o roteador lógico chamado
router
.[root@olvm-he opc]# ovn-nbctl lr-add router
-
Crie a porta do roteador para conexão com a ponte
Default
do 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 a ponte
Default
ao roteador.[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
-
Execute o comando a seguir para exibir a rede 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"]
-
Crie a ponte lógica chamada
public
.[root@olvm-he opc]# ovn-nbctl ls-add public
-
Prepare-se para conectar a porta dos hosts KVM locais à ponte lógica
public
por meio da redeprovider
.[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 o
router
às pontes lógicaspublic
usando uma porta de roteador distribuído.[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 a porta do roteador (prioridade maior para o primeiro 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
-
Verifique a configuração da porta do roteador.
[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 o próximo salto para
0.0.0.0/0
por meio do gateway de VLAN do OCI.[root@olvm-he opc]# ovn-nbctl lr-route-add router "0.0.0.0/0" 10.0.20.1
-
Execute o comando a seguir para ver o resumo da configuração.
[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 vendo
Port_Binding cr-router-public
na seçãokvm1.olvm.demo
que a porta do roteador está associada ao primeiro host KVM. -
Mapeie interfaces locais dos hosts KVM, conectados à VLAN 1001, para a rede
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
-
A VLAN do OCI está entregando quadros apenas para os endereços MAC associados aos dispositivos conectados à VLAN.
Se não estivermos usando NAT, caso o proprietário da porta do roteador lógico seja alterado, precisamos atualizar o endereço MAC da porta do roteador lógico para corresponder ao endereço MAC do chassi ativo.
O serviço a seguir cuida dessa operação. Atualizar o banco de dados SB de Rede Virtual Aberta com os mapeamentos de endereço MAC do chassi (necessários para a funcionalidade do 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
-
Crie o arquivo chamado
/usr/share/ovirt-provider-ovn/ovn_ha_gw_controller.py
com o conteúdo a seguir.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()
-
Crie o arquivo chamado
/etc/systemd/system/ovn-ha-gateway-controller.service
com o conteúdo a seguir.[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 o serviço.
systemctl enable ovn-ha-gateway-controller.service systemctl start ovn-ha-gateway-controller.service
Tarefa 12: Finalizar a Configuração de Rede do OCI.
Os pacotes do VM1 devem ser capazes de acessar a OCI VLAN 1001. Nosso plano é permitir que esses pacotes cheguem à Internet.
-
Você deve anexar uma tabela de roteamento à VLAN com a regra: (Roteie
0.0.0.0/0
por meio do gateway NAT). -
Para o tráfego que retorna da Internet em direção a VM1, precisamos tratar o roteamento do CIDR
10.0.150.0/24
. Precisamos definir um IP externo para VLAN 1001. Este é o endereço IP associado à porta do roteador lógico,10.0.20.10
.Com esse endereço IP definido, criaremos uma nova tabela de roteamento com a regra: (Rota de
10.0.150.0/24
a10.0.20.10
) -
Agora, podemos associar essa nova rota ao gateway NAT e encaminhar os pacotes para chegar a VM1.
Nesta fase, devemos ser capazes de chegar à Internet a partir do VM1.
Links Relacionados
Confirmações
- Autor - Andrei Ilas (Master Principal Cloud Architect)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Deploy Oracle Linux Virtualization Manager using the Open Virtualization Network Provider on Oracle Cloud Infrastructure
G19504-02
December 2024