第10章 Open Virtual Network (OVN) の使用
Open Virtual Network (OVN) は、Open vSwitch ベースの SDN で、インスタンスにネットワークサービスを提供します。本章では、director を使用して OVN をデプロイするために必要な手順について説明します。
OVN は、現在テクノロジープレビュー機能として提供されています。テクノロジープレビューとして提供されている機能のサポートスコープに関する詳しい情報は、https://access.redhat.com/support/offerings/techpreview/ を参照してください。
OVN を ML2 メカニズムドライバーとして使用するデプロイメントの場合は、外部ネットワークに接続可能なノードのみが、その上でルーターゲートウェイポートをスケジューリングする対象になります。 ただし、現在既知の問題があり、全ノードが対象となってしまうため、コンピュートノードが外部に接続できない場合には問題となります。その結果、ルーターゲートウェイポートが外部に接続できないコンピュートノード上でスケジュールされている場合には、外部ネットワークの受信および送信の接続は機能せず、その場合には、ルーターゲートウェイポートをコントローラーノードに再スケジュールする必要があります。回避策として、全コンピュートノードに接続を提供することができます。また、NeutronBridgeMappings を削除するか、datacentre:br-ex に設定することを検討できます。詳しい情報は、https://bugzilla.redhat.com/show_bug.cgi?id=1525520 と https://bugzilla.redhat.com/show_bug.cgi?id=1510879 を参照してください。
10.1. OVN ベースプロファイルのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
ベースプロファイルをデプロイするには、environments/neutron-ml2-ovn.yaml ファイルを openstack overcloud deploy に渡します。以下に例を示します。
openstack overcloud deploy \
--templates /usr/share/openstack-tripleo-heat-templates \
...
-e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-ovn.yaml
....
$ openstack overcloud deploy \
--templates /usr/share/openstack-tripleo-heat-templates \
...
-e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-ovn.yaml
....
10.2. OVN HA プロファイルのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Pacemaker HA プロファイルをデプロイするには、openstack overcloud deploy コマンドに environments/neutron-ml2-ovn-ha.yaml ファイルを渡す必要があります。以下に例を示します。
openstack overcloud deploy \
--templates /usr/share/openstack-tripleo-heat-templates \
...
-e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-ovn-ha.yaml
....
$ openstack overcloud deploy \
--templates /usr/share/openstack-tripleo-heat-templates \
...
-e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-ovn-ha.yaml
....
10.3. OVN コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
OVN には、以下のコンポーネントとサービスが必要です。
-
OVN Northbound (NB) データベースサーバー。コントローラーノード上で実行され、TCP ポート
6641をリッスンします。 -
OVN Southbound (SB) データベースサーバー。コントローラーノード上で実行され、TCP ポート
6642をリッスンします。 -
ovn-northd: コントローラーノード上で実行されます。 -
ovn-controller:OS::Tripleo::Services::OVNControllerが定義されているすべてのコントローラーノードとコンピュートノード上で実行されます。OVN SB データベースサーバーに接続します。 -
ovnML2 メカニズムドライバー。OVN NB および SB のデータベースサーバーに接続します。
10.4. パッケージと依存関係 リンクのコピーリンクがクリップボードにコピーされました!
OVN には以下のパッケージが必要です。
-
openvswitch-ovn-common -
openvswitch-ovn-central -
openvswitch-ovn-host
メインの openvswitch パッケージにはサブパッケージがあります。必要な最小バージョンは OVS 2.7.2 です。これらのパッケージは overcloud-full.qcow2 イメージですでに含まれているはずです。
10.5. director を使用した OVN のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
director を使用して OVN をデプロイする場合は、以下のステップを実行してください。
- OVN ML2 メカニズムドライバーを有効化して、必要な設定オプションを生成します。
-
コントローラーノードに OVN データベースサーバーと
ovn-northdをデプロイします。 -
各コンピュートノードに
ovn-controllerをデプロイします。
以下の director コンポーネントが使用されます。
-
tripleo-heat-templates -
puppet-tripleo -
puppet-neutron -
puppet-ovnおよびpuppet-vswitch(OVN サービスをデプロイするため)
OVN を使用するには、director のデプロイメントで VXLAN ではなく、geneve カプセル化を使用する必要があります。
10.6. OVN コンポーザブルサービス リンクのコピーリンクがクリップボードにコピーされました!
director には、ovn-dbs という名前の OVN 用コンポーザブルサービスがあり、ベースプロファイルとペースメーカー HA プロファイルに 2 つがあります。OVN の Northbound および Southbound データベースは、ovsdb-server サービスによりホストされます。同様に、ovsdb-server プロセスは、ovs-vswitchd と並行して実行され、OVS データベース (conf.db) をホスティングします。
NB データベースのスキーマファイルは /usr/share/openvswitch/ovn-nb.ovsschema に、SB データベースのスキーマファイルは /usr/share/openvswitch/ovn-sb.ovsschema にあります。
10.7. 高可用性 リンクのコピーリンクがクリップボードにコピーされました!
ovsdb-server サービスは現在 active-active モードをサポートしていませんが、master-slave モードでの HA はサポートしています。これは、pacemaker によって、リソースエージェント OCF スクリプトを使用して管理されます。ovsdb-server を master モードで実行すると、データベースへの書き込みアクセスが許可されますが、その他のスレーブの ovsdb-server サービスはすべて master からローカルにデータベースを複製し、書き込みアクセスは許可しません。
この理由から、ベースプロファイルと HA プロファイルは両シナリオをサポートするために提供されます。ベースプロファイルを使用する場合には、OVN データベースサーバーはブートストラップコントローラーでのみ起動されます (デプロイメントに複数のコントローラーがある場合)。HA プロファイルが有効化されている場合には、OVN データベースサーバーは全コントローラーで起動され、次に pacemaker は master ロールとして機能するコントローラーを 1 つ選択します。
10.8. ベースプロファイルの使用 リンクのコピーリンクがクリップボードにコピーされました!
ベースプロファイル用の YAML ファイルは tripleo-heat-templates/puppet/services/ovn-dbs.yaml にあります。このサービスが有効化されると、OVN データベースはブートストラップコントローラーでのみ起動されます。
たとえば、デプロイメントに 3 つのコントローラー (controller-0、controller-1、controller-2) がある場合には、OVN データベースサーバーは controller-0 で起動されます。controller-0 が停止すると、OVN データベースサーバーも利用できなくなり、他のコントローラーでは起動されません。これは単一障害点です。
director は、コントローラーノードの 1 つでアクティブとなる内部ネットワーク用の仮想 IP アドレスを作成します。この仮想 IP は OVN_DBS_VIP にマップされます。OVN ML2 ドライバーと ovn-controller サービスが OVN データベースに接続できるようにするために、puppet-tripleo は以下の HAproxy 設定を各コントローラーノードの haproxy.cfg に生成します。
OVN NB データベースサーバー:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVN SB データベースサーバー:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OVN ML2 メカニズムドライバーは、OVN_DBS_VIP に接続するように (ml2_conf.ini の [ovn] セクションで) 設定されます。
OVN データベースサーバーは controller-1 と controller-2 では起動されないので、HAproxy は常に、controller-0 上で実行されている OVN データベースサーバーにトラフィックをリダイレクトします。
10.9. Pacemaker HA プロファイルの使用 リンクのコピーリンクがクリップボードにコピーされました!
このプロファイル用の YAML ファイルは tripleo-heat-templates/puppet/services/pacemaker/ovn-dbs.yaml にあります。有効化すると、OVN データベースサーバーは Pacemaker によって管理され、puppet-tripleo は ovn:ovndb-servers という名前の pacemaker OCF リソースを作成します。
OVN データベースサーバーは各コントローラーノードで起動し、仮想 IP アドレス (OVN_DBS_VIP) を所有するコントローラーは OVN DB サーバーを master モードで実行します。OVN ML2 メカニズムドライバーと ovn-controller は次に OVN_DBS_VIP 値を使用してデータベースサーバーに接続します。フェイルオーバーが発生した場合には、Pacemaker がこの仮想 IP アドレス (OVN_DBS_VIP) を別のコントローラーに移動し、またそのノードで実行されている OVN データベースサーバーを master に昇格します。
Pacemaker HA プロファイルには OVS バージョン 2.7.2 が必要です。フェイルオーバー機能は、2.7.4 で利用可能になる見込みです。詳しい情報は、https://bugzilla.redhat.com/show_bug.cgi?id=1512568 を参照してください。
10.10. ovn-controller の設定 リンクのコピーリンクがクリップボードにコピーされました!
ovn-controller サービスは各コンピュートノードで実行され、OVN SB データベースサーバーに接続して論理フローを取得します。次にその論理フローを物理 OF フローに変換して、OVS ブリッジ (br-int) に追加します。ovs-vswitchd と通信して OF フローをインストールするために、ovn-controller は ovn-controller の起動時に渡された UNIX ソケットパス (例: unix:/var/run/openvswitch/db.sock) を使用して (conf.db をホストする) ローカルの ovsdb-server に接続します。
ovn-controller サービスは、「Open_vSwitch」テーブルの external_ids コラムに特定のキーと値のペアがあることを想定します。puppet-ovn は puppet-vswitch を使用してこれらのフィールドにデータを読み込みます。puppet-vswitch が external_ids コラムに設定するキーと値のペアは以下のとおりです。
hostname=<HOST NAME> ovn-encap-ip=<IP OF THE NODE> ovn-encap-type=geneve ovn-remote=tcp:OVN_DBS_VIP:6642
hostname=<HOST NAME>
ovn-encap-ip=<IP OF THE NODE>
ovn-encap-type=geneve
ovn-remote=tcp:OVN_DBS_VIP:6642
10.11. 既知の制限事項 リンクのコピーリンクがクリップボードにコピーされました!
本項では、OVN のテクノロジープレビューでの既知の問題または既知の制限事項について説明します。
- Open vSwitch バージョン: Red Hat OpenStack Platform には OVS バージョン 2.7 が同梱されています。
- メタデータ API: この機能には OVS バージョン 2.8 が必要です。
-
L3 ゲートウェイ HA: この機能には OVS バージョン 2.8 が必要です。また、将来のリリースで予定されている
networking-ovnに対する更新も必要です。 - 新規デプロイメントのみ: OVN は新規デプロイメントでのみ利用可能です。既存のデプロイメントには、OVN への移行パスは現在ありません。これは将来のリリースで提供されるようになる予定です。
- IPv6 ルーター: 現在、論理ポートステータスの特定で既知の問題があります。この問題は、OVS バージョン 2.7.4 で対処される予定です。詳しい情報は、https://bugs.launchpad.net/networking-ovn/+bug/1715126 を参照してください。