第2章 ML2 メカニズムドライバーを OVS から OVN に移行する
2.1. ML2 メカニズムドライバーを OVS から OVN に移行するための環境の準備 リンクのコピーリンクがクリップボードにコピーされました!
環境の評価と準備は、移行を成功させるために重要です。Red Hat Technical Account Manager または Global Professional Services は、以下の手順での実施を案内します。
前提条件
- デプロイメントは、最新の RHOSP 16.2 バージョンを使用している。つまり、OpenStack バージョンのアップグレードまたは更新が必要な場合は、まずアップグレードまたは更新を実行し、続いて ML2/OVS から ML2/OVN への移行を実施します。
各サブネットプールで少なくとも 1 つの IP アドレスが使用可能である。
OVN メカニズムドライバーは、サブネットごとにメタデータポートを作成します。各メタデータポートは、IP アドレスプールから IP アドレスを要求します。
- Red Hat Technical Account Manager または Global Professional Services と連携して移行を計画し、プロアクティブケースを作成している。How to submit a Proactive Case を参照してください。
手順
ML2/OVN ステージデプロイメントを作成し、ターゲット ML2/OVN デプロイメントのベースライン設定を取得し、ターゲットデプロイメントの実現可能性をテストします。
計画された移行後の実稼働環境要デプロイメントと同じ基本的なロール、ルーティング、およびトポロジーを使用して、ステージデプロイメントを設計します。
overcloud-deploy.shファイルと、環境ファイルなど、デプロイメントによって参照されるすべてのファイルを保存します。移行ターゲット環境を設定するには、この手順の後半でこれらのファイルが必要になります。注記これらのファイルは、ステージデプロイメントの作成および移行でのみ使用してください。移行後に再利用しないでください。
ML2/OVS デプロイメントで VXLAN または GRE プロジェクトネットワークを使用する場合は、setup-mtu-t1 の手順を実施した後に最大 24 時間待機します。
- この待機時間により、仮想マシンインスタンスは DHCP リースを更新し、新しい MTU 値を受け取ることができます。この間に、一部のインスタンスに MTU を手動で設定し、一部のインスタンスを再起動する必要がある場合があります。
- 24 時間はデフォルト設定の 86400 秒に基づいた時間です。実際の時間は、/var/lib/config-data/puppet-generated/neutron/etc/neutron/dhcp_agent.ini dhcp_renewal_time および /var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.conf dhcp_lease_duration のパラメーターにより異なります。
python3-networking-ovn-migration-tool をインストールします。
sudo dnf install python3-networking-ovn-migration-tool @container-toolsコンテナーツールがまだ存在しない場合、
@container-tools引数はそれもインストールします。アンダークラウドにディレクトリーを作成し、Ansible Playbook をコピーします。
mkdir ~/ovn_migration cd ~/ovn_migration cp -rfp /usr/share/ansible/networking-ovn-migration/playbooks .ML2/OVN ステージデプロイメントファイルを
~/ovn_migrationなどの移行ホームディレクトリーにコピーします。ステージ移行デプロイメントファイルには、
overcloud-deploy.shと、環境ファイルなど、デプロイメントによって参照されるすべてのファイルが含まれます。overcloud-deploy.shのコピーの名前をovercloud-deploy-ovn.shに変更します。このスクリプトは移行にのみ使用してください。他の目的には使用しないでください。以下のリストで移行シナリオを確認し、
overcloud-deploy-ovn.shのopenstack deployコマンドをカスタマイズするための適切な手順を実施します。- シナリオ 1: DVR から DVR へコンピュートノードが外部ネットワークに接続できる
以下の環境ファイルを overcloud-deploy-ovn.sh の
openstack deployコマンドに追加します。環境ファイルは以下の順序で追加します。このコマンドの例では、デフォルトのneutron-ovn-dvr-ha.yamlファイルを使用します。別のファイルを使用する場合は、コマンドのファイル名を置き換えます。-e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-dvr-ha.yaml \ -e $HOME/ovn-extras.yaml
- シナリオ 2: 集中ルーティングから集中ルーティングへ (DVR なし)
-
デプロイメントで SR-IOV が使用されている場合は、
roles_data.yamlファイルのOS::TripleO::Services::OVNMetadataAgentを Controller ロールに追加します。 移行前のカスタムブリッジマッピングを維持します。
ネットワーカーまたはネットワーカー/コントローラー複合ノードで以下のコマンドを実行し、現在のブリッジマッピングを取得します。
sudo podman exec -it neutron_ovs_agent crudini --get /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs bridge_mappings出力例
datacentre:br-ex,tenant:br-isolated-
アンダークラウドで、ブリッジマッピング用の環境ファイル (
/home/stack/neutron_bridge_mappings.yaml) を作成します。 環境ファイルでデフォルト値を設定します。以下に例を示します。
parameter_defaults: ComputeParameters: NeutronBridgeMappings: "datacentre:br-ex,tenant:br-isolated"
以下の環境ファイルを overcloud-deploy-ovn.sh の
openstack deployコマンドに追加します。環境ファイルは以下の順序で追加します。お使いの環境で SR-IOV が使用されない場合は、neutron-ovn-sriov.yaml ファイルを省略します。ovn-extras.yaml ファイルは存在していませんが、openstack deployコマンドを実行する前に ovn_migration.sh スクリプトにより作成されます。-e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-ha.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-sriov.yaml \ -e /home/stack/ovn-extras.yaml \ -e /home/stack/neutron_bridge_mappings.yaml- カスタムのネットワーク変更は、移行前と同じままにします。
-
デプロイメントで SR-IOV が使用されている場合は、
- シナリオ 3: 集中ルーティングから DVR へ (Geneve タイプドライバーおよび
br-ex経由で外部ネットワークに接続されたコンピュートノードを使用) - 警告
ML2/OVS デプロイメントで集中ルーティングおよび VLAN プロジェクト (テナント) ネットワークが使用される場合は、DVR を使用する ML2/OVN に移行しないでください。集中ルーティングを使用する ML2/OVN に移行できます。この制限の進捗を追跡するには、Bug 1766930 を参照してください。
コンピュートノードが
br-exブリッジを介して外部ネットワークに接続されていることを確認します。たとえば、compute-dvr.yaml 等の環境ファイルで以下のように設定します。type: ovs_bridge # Defaults to br-ex, anything else requires specific # bridge mapping entries for it to be used. name: bridge_name use_dhcp: false members: - type: interface name: nic3 # force the MAC address of the bridge to this interface primary: true
すべてのユーザーに
overcloud-deploy-ovn.shファイルの実行権限があることを確認します。このスクリプトには、移行プロセス中に実行権限が必要です。$ chmod a+x ~/overcloud-deploy-ovn.shexportコマンドを使用して、以下の移行関連の環境変数を設定します。以下に例を示します。$ export PUBLIC_NETWORK_NAME=my-public-networkSTACKRC_FILE: アンダークラウドの stackrc ファイル。
デフォルト: ~/stackrc
OVERCLOUDRC_FILE: アンダークラウドの overcloudrc ファイル。
デフォルト: ~/overcloudrc
OVERCLOUD_OVN_DEPLOY_SCRIPT: デプロイメントスクリプト。
デフォルト: ~/overcloud-deploy-ovn.sh
PUBLIC_NETWORK_NAME: パブリックネットワークの名前。
デフォルト: public
IMAGE_NAME: テストサーバーのブートに使用する glance イメージの名前または ID。
デフォルト: cirros
イメージは、検証前/検証後のプロセス時に自動的にダウンロードされます。
VALIDATE_MIGRATION: 移行リソースを作成して移行を検証します。移行スクリプトは、移行開始前にサーバーを起動し、移行後にサーバーが到達可能であることを検証します。
デフォルト: True
警告移行の検証には、少なくとも 2 つの利用可能な Floating IP アドレス、2 つのネットワーク、2 つのサブネット、2 つのインスタンス、および 2 つの admin ルーターが必要です。
また、PUBLIC_NETWORK_NAME で指定されるネットワークには、利用可能な Floating IP アドレスが必要で、アンダークラウドから ping できる必要があります。
お使いの環境がこれらの要件を満たさない場合には、VALIDATE_MIGRATION を False に設定します。
SERVER_USER_NAME: 移行インスタンスへのロギングに使用するユーザー名。
デフォルト: cirros
DHCP_RENEWAL_TIME: DHCP エージェント設定ファイルで設定する DHCP 更新時間 (秒単位)。
デフォルト: 30
ovn-migration ディレクトリーにあり、
ovn_migration.sh generate-inventoryコマンドを実行して、インベントリーファイルhosts_for_migrationおよびansible.cfgファイルを生成します。$ ovn_migration.sh generate-inventory | sudo tee -a /var/log/ovn_migration_output.txthosts_for_migrationファイルで正確性を確認してください。- リストがお使いの環境と一致していることを確認します。
- 各ノードに ovn コントローラーがあることを確認します。
- リスト見出し ([ovn-controllers] など) がリスト項目に含まれていないことを確認します。
- ovn 移行ディレクトリーから、ansible -i hosts_for_migration -m ping all コマンドをすべて ping します。
元のデプロイメントで VXLAN または GRE を使用している場合は、最大伝送単位 (MTU) 値を調整する必要があります。OVS メカニズムドライバーから OVN メカニズムドライバーへの移行のための MTU の調整 に進みます。
元のデプロイメントで VLAN ネットワークを使用している場合は、MTU 調整をスキップして、OVS メカニズムドライバーから OVN メカニズムドライバーへの移行のためのコンテナーイメージの準備 に進みます。