ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
Oracle Cloud Infrastructureでのオープン仮想ネットワーク・プロバイダを使用したOracle Linux Virtualization Managerのデプロイ
イントロダクション
このチュートリアルでは、チームが既存のオンプレミスのOracle Linux Virtualization Manager環境をOracle Cloud Infrastructure (OCI)に拡張することで、ベア・メタル・ノードのフリートの使用率を高めることを目的とするシナリオについて説明します。Oracle Cloudのネットワーキング機能をOpen Virtual Network (OVN)と統合することで、FastConnectを介して、OCIのオンプレミス・リソースとOracle Linux Virtualization Managerデプロイ済仮想マシン(VM)間の接続をブリッジできます。
ノート:このチュートリアルはテストおよび評価のみを目的としています。OCIに対するOracle Linux Virtualization Managerのサポートは開発中であり、OCIシステムの管理は実際にはサポートされていません。Oracle Linux Virtualization ManagerでのOVNの使用はテクノロジ・プレビューで、機能が開発中であることを示しています。
ソリューションの概要とデプロイメント
ソリューションの概要
次のリソースで新しいVCN (10.0.0.0/16
)が必要になります:
- ホスト・エンジンのプライマリVNICに使用される1つのパブリック・サブネット(
10.0.11.0/24
)。 - Oracle Linuxカーネルベースの仮想マシン(KVM)ホストのプライマリVNICに使用される1つのプライベート・サブネット(
10.0.12.0/24
)。 - Oracle Linux Virtualization Managerホスト・エンジンとKVMホスト間の通信に使用されるVirtual Local Area Network (VLAN) 1000 (
10.0.10.0/24
)。 - OVN仮想ネットワークをOCIに拡張するために使用されるVLAN 1001 (
10.0.20.0/24
)。 - 1つのNAT Gateway。
- 1つのインターネット・ゲートウェイ。
- 1つのプライベート・ルート表(
0.0.0.0/0
からNATゲートウェイ)をプライベート・サブネットおよびVLAN 1001に関連付けます。 - 1つのパブリック・ルート表(インターネット・ゲートウェイを介した
0.0.0.0/0
)をパブリック・サブネットに関連付けます。 - セキュリティ・リストでは、次のことが可能です。
- すべてのエグレス接続(
0.0.0.0/0
)のすべてのプロトコル。 - VCN CIDR (
10.0.0.0/16
)からのすべてのイングレス接続。 - クライアントPCからのすべてのプロトコルのイングレス接続。
- すべてのエグレス接続(
ソリューション・デプロイメント
-
1つのVMインスタンスを作成します(推奨構成: VM.Standard.E5)。ホストされるエンジン用にOracle Linux 8が実行されている2 OCPU/24GB RAMのFlex。セカンダリVNICをVMインスタンスにアタッチし、VLAN 1000に接続します。
-
KVMホストとして使用されるOracle Linux 8を実行する2つのBMインスタンス(推奨構成: BM.Standard.E5.192)を作成します。2つのセカンダリVNICを各BMホストに接続し、それらをVLAN 1000および1001に接続します。
目的
- OCIでOracle Linux Virtualization Managerリリース4.5を実行し、仮想マシンがOCI NATゲートウェイを介してインターネットにアクセスできるようにします。
前提条件
-
Oracle Linux Virtualization Managerホスト・エンジンは、VM (VM.Standard.E5)で実行できます。2 OCPU/24GB RAMのFlex - テスト済)。
-
Oracle Linuxカーネルベースの仮想マシン(KVM)ホストは、ベア・メタル(BM)ホスト(BM.Standard.E5.192 - テスト済)で実行できます。
-
すべてのBMリソースを同じ可用性ドメイン(AD)に作成する必要があります。
-
すべてのホストでOracle Linux 8を実行できます(Oracle-Linux-8.10-2024.09.30-0 - テスト済)。
タスク1: Oracle Linux Virtualization Managerホスト・エンジンの設定
まず、セカンダリ・インタフェースを構成します。現在のインタフェース・ステータスは次のようになります(プライマリVNICのプライベートIPアドレスは無視してください)。
[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
VLAN 1000で2番目のインタフェースenp1s0
を構成します。
[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'
次に、Oracle Linux Virtualization Managerリリース4.5をインストールします。
-
ol8_baseos_latest
リポジトリを有効にします。[root@olvm-he opc]# dnf config-manager --enable ol8_baseos_latest
-
Oracle Linux Virtualization Managerリリース4.5パッケージをインストールすると、必要なリポジトリが自動的に有効または無効になります。
[root@olvm-he opc]# dnf install -y oracle-ovirt-release-45-el8
-
dnf
コマンドを実行して、必要なリポジトリが有効になっていることを確認します。[root@olvm-he opc]# dnf clean all [root@olvm-he opc]# dnf repolist
次のリポジトリを有効にする必要があります:
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (VDSMの場合)
ol8_UEKR7
-
次のコマンドを実行して、欠落しているリポジトリを有効にします。
[root@olvm-he opc]# dnf config-manager --enable <repository-name>
-
ホストでUEK R7を実行している場合は、次のコマンドを実行します。
dnf install -y kernel-uek-modules-extra
-
ovirt-engine
コマンドを実行して、マネージャをインストールします。dnf install -y ovirt-engine --allowerasing
-
エンジンを構成するには、次のコマンドを実行します。
engine-setup
各構成ステップについて、公式のインストール・ドキュメントで推奨事項を確認できます。詳細は、エンジンの構成オプションを参照してください。
タスク2: Oracle Linux Virtualization Manager Webコンソールへのアクセス
Oracle Linux Virtualization Managerが正常にインストールされると、コンソールにWebアクセス情報が表示されます。
http://olvm-he.olvm.defaultvcn.oraclevcn.com:80/ovirt-engine
https://olvm-he.olvm.defaultvcn.oraclevcn.com:443/ovirt-engine.
ノート:
- デフォルトでは、Oracle VCNドメインはパブリックに解決できません。
- インスタンスに対して構成されたセキュリティ・リスト/NSGで、ポート443でのイングレス接続が許可されていることを確認します。
Oracle Linux Virtualization Managerホスト・エンジンのWebコンソールにアクセスするには、DNSレコードをローカル・オペレーティング・システム(OS)のホスト・ファイルC:\Windows\System32\drivers\etc\hosts
に追加します。
<VM-public-IP> olvm-he.olvm.defaultvcn.oraclevcn.com
admin@ovirt
ユーザー名および構成済パスワードを使用して認証できます。
タスク3: Oracle Linuxカーネルベースの仮想マシン(KVM)ホストの設定
最初のKVMホストから開始します。2番目のホストを構成するには、2番目のBMホストにSSHで接続し、同じコマンドを実行する必要があります。VLAN 1000インタフェースを設定するときにMACアドレスとIPアドレスを更新することに注意してください。
-
KVMホストに2つのセカンダリVNICがあり、VLAN 1000および1001に接続されていることを確認します。
-
VLAN 1000でセカンダリ VNICを設定します。
[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
ノート:
02:00:17:14:AA:20
は、最初のKVMホストのVLAN 1000 VNICのMACアドレスです(2番目のKVMホストでインタフェースens340np0.1000
を設定する場合は、必ず正しいMACアドレスを使用してください)。10.0.10.11/24
は、VLAN 1000の最初のKVMホストに使用するIPアドレスです。10.0.10.12/24
は、VLAN 1000の2番目のKVMホストに使用するIPアドレスです。
-
ol8_baseos_latest
リポジトリを有効にします。[root@kvm-1 opc]# dnf config-manager --enable ol8_baseos_latest
-
Oracle Linux Virtualization Managerリリース4.5パッケージをインストールすると、必要なリポジトリが自動的に有効または無効になります。
[root@kvm-1 opc]# dnf install -y oracle-ovirt-release-45-el8
-
dnf
コマンドを実行して、必要なリポジトリが有効になっていることを確認します。[root@kvm-1 opc]# dnf clean all [root@kvm-1 opc]# dnf repolist
次のリポジトリを有効にする必要があります:
ol8_baseos_latest
ol8_appstream
ol8_kvm_appstream
ovirt-4.5
ovirt-4.5-extra
ol8_gluster_appstream
- (VDSMの場合)
ol8_UEKR7
-
次のコマンドを実行して、欠落しているリポジトリを有効にします。
[root@kvm-1 opc]# dnf config-manager --enable <repository-name>
-
ホストでUEK R7を実行している場合は、次のコマンドを実行します。
[root@kvm-1 opc]# dnf install -y kernel-uek-modules-extra
-
cockpit Webコンソールをアクティブ化し、ファイアウォール・ポートを開きます。
[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
タスク4: DNSプライベート・ゾーンの設定
-
OCIで新しいプライベートDNSゾーンを作成します。詳細は、プライベートDNSゾーンの作成を参照してください。
- ゾーンには
olvm.demo
という名前を付けることができます。 - VCNのDNSプライベート・ビューにゾーンをアタッチします。
- ゾーンには
-
2つのKVMホストに対して2つのDNSレコードを作成し、変更を公開します。
A 10.0.10.11 kvm1.olvm.demo A 10.0.10.12 kvm2.olvm.demo
タスク5: Oracle Linux Virtualization ManagerへのKVMホストの追加
-
Oracle Linux Virtualization Manager Webコンソールに接続します。
-
VLAN 1000を使用するように ovirtmgmtネットワークを更新します。
-
「ネットワーク」および「ネットワーク」に移動します。
-
ovirtmgmtを選択し、「編集」をクリックします。
-
「VLANタグ付けの有効化」を選択し、1000と入力して「OK」をクリックします。
-
-
KVMホストを追加します。
-
「コンピュート」および「ホスト」に移動します。
-
「新規」をクリックして、次の情報を入力します。
- 名前:
kvm1.olvm.demo
と入力します。 - ホスト名:
kvm1.olvm.demo.
と入力します - Authentication: 「SSH Public Key」を選択します。
KVMホストの
/root/.ssh/authorized_keys
ファイルに公開SSHキーを追加し、既存のコンテンツを削除します。 - 名前:
-
「OK」をクリックします
-
タスク6: ブラウザの信頼できるルート認証局リストへのOracle Linux Virtualization Manager認証局(CA)の追加
-
次のアドレスからCA証明書をダウンロードします:
https://<OLVM-hosted-engine-FQDN>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA
。 -
ブラウザの「設定」、「証明書」に移動し、Oracle Linux Virtualization Manager CAを信頼できるルート認証局のリストにインポートします。
タスク7: 新しいストレージドメインの作成
-
KVMホストと同じ可用性ドメイン内に新しいOCI Block Volumeを作成します。
-
ブロック・ボリュームを最初のKVMホストにアタッチし、「アクセス」として「読取り/書込み- 共有可能」を選択します。
-
2番目のKVMホストに同じブロック・ボリュームをアタッチし、「アクセス」として「読取り/書込み- 共有可能」を選択します。
-
Oracle Linux Virtualization Managerで新しいストレージ・ドメインを作成します。
-
Oracle Linux Virtualization Manager Webコンソールに移動し、「ストレージ」および「ドメイン」に移動します。
-
「新規ドメイン」をクリックして、次の情報を入力します。
- 名前:
iscsi-datavol
と入力します。 - ストレージタイプ:「iSCSI」を選択します。
- ホスト:
kvm1.private.zone
と入力します。 - アドレス:
169.254.2.2
と入力します。 - ポート:
3260
と入力します。
- 名前:
-
「すべてログイン」をクリックします。
-
検出されたターゲットを展開し、LUN IDの「追加」をクリックします。
-
新しいドメインを作成するには、「OK」をクリックします。
-
タスク8: 新しいオペレーティング・システム・イメージのアップロード
-
Oracle Linux Virtualization Manager Webコンソールに移動し、「ストレージ」および「ディスク」に移動します。
-
「アップロード」および「開始」をクリックします。
-
OS ISOイメージを指定します。iscsi-datavolストレージドメインを選択し、「Ok」をクリックします。詳細は、Ubuntu Serverの取得を参照してください。
タスク9: オープン仮想ネットワーク(OVN)ネットワーキングの設定
-
Oracle Linux Virtualization Manager Webコンソールに移動し、「ネットワーク」、「ネットワーク」に移動して「新規」をクリックします。
-
次の情報を入力します
- 名前: 「デフォルト」を選択します。
- 「外部プロバイダに作成」を選択します。
- 外部プロバイダ:
ovirt-provider-ovn
と入力します。 - ネットワーク・ポート・セキュリティ: 「無効」を選択します。
-
「サブネット」を選択し、次の情報で新しいサブネットを作成します。
- 名前: defaultを選択します。
- CIDR:
10.0.150.0/24
と入力します。 - ゲートウェイ:
10.0.150.1
と入力します。
-
「OK」をクリックします
タスク10: Oracle Linux Virtualization Managerでの新しい仮想マシンのプロビジョニング
-
Oracle Linux Virtualization Manager Webコンソールに移動し、「コンピュート」、「仮想マシン」に移動して「新規」をクリックします。
-
次の情報を入力します
- 名前:
vm1
と入力します。 - 「インスタンス・イメージ」で、「作成」をクリックし、「サイズ」に15GBと入力します。
- nic1: 「デフォルト/デフォルト」を選択します。
- 名前:
-
「拡張オプションの表示」をクリックし、次の情報を入力して「OK」をクリックします。
- ブート・オプション: CDのアタッチ-
ubuntu-24.04.1-live-server-amd64.iso
。
- ブート・オプション: CDのアタッチ-
-
ディスクが作成されるまで待機し、作成されたVMを選択し、「実行」をクリックして、VMが起動するまで待機します。
-
VMコンソールに接続するには、「コンソール」、「コンソール・オプション」、NoVNC、「OK」、「コンソール」の順にクリックします。
OSのインストールを続行します。段階的に、インターネットは使用できません。
タスク11: オープン仮想ネットワークとOCI VCNの接続
次の図に、Oracle Linux Virtualization Managerで定義する必要がある論理ネットワークの図を示します。
OCI VLAN 1001へのアクセスは、分散ゲートウェイ・ポートを介して提供されます。詳細は、「Open Virtual Network分散ゲートウェイ・ルーターの作成方法」を参照してください。
-
KVMホストで3番目のVNICを構成します。
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.
-
Oracle Linux Virtualization Managerエンジンから次のコマンドを実行して、現在の設定を表示します。
[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"
-
router
という名前の論理ルーターを作成します。[root@olvm-he opc]# ovn-nbctl lr-add router
-
Oracle Linux Virtualization Manager
Default
ブリッジに接続するためのルーター・ポートを作成します。[root@olvm-he opc]# ovn-nbctl lrp-add router router-ovirt-default 40:44:00:00:00:03 10.0.150.1/24
-
Default
ブリッジをルーターに接続します。[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
-
次のコマンドを実行して、論理ネットワークを表示します。
[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"]
-
public
という名前の論理ブリッジを作成します。[root@olvm-he opc]# ovn-nbctl ls-add public
-
provider
ネットワークを介して、ローカルKVMホスト・ポートを論理ブリッジpublic
に接続する準備をします。[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
-
分散ルーター・ポートを使用して、
router
をpublic
論理ブリッジに接続します。[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
-
ルーター・ポートをスケジュールします(最初の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
-
ルーターポートの構成を確認します。
[root@olvm-he opc]# ovn-nbctl lrp-get-gateway-chassis router-public router-public-kvm1.olvm.demo 20 router-public-kvm2.olvm.demo 15
-
OCI VLANゲートウェイを介して
0.0.0.0/0
のネクスト・ホップを定義します。[root@olvm-he opc]# ovn-nbctl lr-route-add router "0.0.0.0/0" 10.0.20.1
-
次のコマンドを実行して、構成のサマリーを確認します。
[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"
kvm1.olvm.demo
セクションのPort_Binding cr-router-public
で、ルーター・ポートが最初のKVMホストに関連付けられていることを確認できます。 -
VLAN 1001に接続されているKVMホストのローカル・インタフェースを
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
-
OCI VLANは、VLAN接続デバイスに関連付けられたMACアドレスにのみフレームを配信します。
NATを使用していない場合は、論理ルーターポートの所有者が変更された場合、論理ルーターポートのMACアドレスをアクティブシャーシのMACアドレスと一致するように更新する必要があります。
次のサービスがこの操作を処理します。Open Virtual Network SBデータベースをシャーシのMACアドレスマッピングで更新します(スイッチオーバーコントローラ機能に必要)。
[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
-
次の内容で
/usr/share/ovirt-provider-ovn/ovn_ha_gw_controller.py
という名前のファイルを作成します。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()
-
次の内容で
/etc/systemd/system/ovn-ha-gateway-controller.service
という名前のファイルを作成します。[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.
-
サービスを起動します。
systemctl enable ovn-ha-gateway-controller.service systemctl start ovn-ha-gateway-controller.service
タスク12: OCIネットワーキング構成の確定
VM1からのパケットは、OCI VLAN 1001に到達できる必要があります。私たちの計画は、これらのパケットがインターネットに到達できるようにすることです。
-
次のルールを使用して、ルート表をVLANにアタッチする必要があります(NATゲートウェイを介して
0.0.0.0/0
をルーティングします)。 -
インターネットからVM1に向かうトラフィックの場合、CIDR
10.0.150.0/24
のルーティングを処理する必要があります。VLAN 1001の外部IPを定義する必要があります。これは、論理ルーター・ポート10.0.20.10
に関連付けられたIPアドレスです。このIPアドレスを定義すると、次のルールで新しいルーティング表が作成されます。(ルート
10.0.150.0/24
から10.0.20.10
) -
これで、この新しいルートをNATゲートウェイに関連付け、パケットを転送してVM1に到達できるようになりました。
この段階では、VM1からインターネットにアクセスできるようにする必要があります。
関連リンク
承認
- 著者 - Andrei Ilas (マスター・プリンシパル・クラウド・アーキテクト)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Deploy Oracle Linux Virtualization Manager using the Open Virtualization Network Provider on Oracle Cloud Infrastructure
G19505-02
December 2024