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=1525520https://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 のデータベースサーバーに接続します。
ovn components

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 をデプロイする場合は、以下のステップを実行してください。

  1. OVN ML2 メカニズムドライバーを有効化して、必要な設定オプションを生成します。
  2. コントローラーノードに OVN データベースサーバーと ovn-northd をデプロイします。
  3. 各コンピュートノードに 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-servermaster モードで実行すると、データベースへの書き込みアクセスが許可されますが、その他のスレーブの ovsdb-server サービスはすべて master からローカルにデータベースを複製し、書き込みアクセスは許可しません。

この理由から、ベースプロファイルと HA プロファイルは両シナリオをサポートするために提供されます。ベースプロファイルを使用する場合には、OVN データベースサーバーはブートストラップコントローラーでのみ起動されます (デプロイメントに複数のコントローラーがある場合)。HA プロファイルが有効化されている場合には、OVN データベースサーバーは全コントローラーで起動され、次に pacemaker は master ロールとして機能するコントローラーを 1 つ選択します。

10.8. ベースプロファイルの使用

ベースプロファイル用の YAML ファイルは tripleo-heat-templates/puppet/services/ovn-dbs.yaml にあります。このサービスが有効化されると、OVN データベースはブートストラップコントローラーでのみ起動されます。

たとえば、デプロイメントに 3 つのコントローラー (controller-0controller-1controller-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-1controller-2 では起動されないので、HAproxy は常に、controller-0 上で実行されている OVN データベースサーバーにトラフィックをリダイレクトします。

10.9. Pacemaker HA プロファイルの使用

このプロファイル用の YAML ファイルは tripleo-heat-templates/puppet/services/pacemaker/ovn-dbs.yaml にあります。有効化すると、OVN データベースサーバーは Pacemaker によって管理され、puppet-tripleoovn: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-controllerovn-controller の起動時に渡された UNIX ソケットパス (例: unix:/var/run/openvswitch/db.sock) を使用して (conf.db をホストする) ローカルの ovsdb-server に接続します。

ovn-controller サービスは、「Open_vSwitch」テーブルの external_ids コラムに特定のキーと値のペアがあることを想定します。puppet-ovnpuppet-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 を参照してください。