Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第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 ....
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 ....
10.3. OVN コンポーネント
OVN には、以下のコンポーネントとサービスが必要です。
-
OVN Northbound (NB) データベースサーバー。コントローラーノード上で実行され、TCP ポート
6641
をリッスンします。 -
OVN Southbound (SB) データベースサーバー。コントローラーノード上で実行され、TCP ポート
6642
をリッスンします。 -
ovn-northd
: コントローラーノード上で実行されます。 -
ovn-controller
:OS::Tripleo::Services::OVNController
が定義されているすべてのコントローラーノードとコンピュートノード上で実行されます。OVN SB データベースサーバーに接続します。 -
ovn
ML2 メカニズムドライバー。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 データベースサーバー:
Front end : tcp:OVN_DBS_VIP:6641 Backend: tcp:Controller-0-IP:6641 tcp:Controller-1-IP:6641 tcp:Controller-2-IP:6641
OVN SB データベースサーバー:
Front end : tcp:OVN_DBS_VIP:6642 Backend: tcp:Controller-0-IP:6642 tcp:Controller-1-IP:6642 tcp:Controller-2-IP:6642
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
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 を参照してください。