第11章 分散仮想ルーター (DVR) の設定

Distributed Virtual Routing (DVR) により、L3 ルーターを Compute ノードに直接配置することができます。これにより、インスタンスのトラフィックは、初めにネットワークノード経由でルーティングする必要なく、コンピュートノード間 (East-West、水平方向) で転送されます。また、Floating IP の名前空間は、参加する全コンピュートノード間で複製されるので、Floating IP を割り当てられているインスタンスは、ネットワークノード経由でルーティングせずにトラフィックを外部 (North-South、垂直方向) に送信できます。Floating IP アドレスが割り当てられていないインスタンスは引き続き、ネットワークノード経由で SNAT トラフィックをルーティングします。

Red Hat Enterprise Linux OpenStack Platform 7 (kilo) では、分散ルーター使用時の VLAN と VXLAN/GRE の間の相互接続に対するサポートが追加されました。この統合により、DVR での VLANと VXLAN/GRE トンネル間の接続が可能となりました。

注記

DVR は、Red Hat Enterprise Linux OpenStack Platform 7 にテクノロジープレビューとして実装されています。テクノロジープレビューとして提供されている機能のサポートスコープに関する詳しい情報は、https://access.redhat.com/support/offerings/techpreview/ を参照してください。

下図の設定では、初めにネットワークノード経由でルーティングしなくても、別々のサブネット上のインスタンス間で通信を行うことができます。

DVR Overview

11.1. DVR の設定

1. ネットワークノードで、neutron.conf ファイルの router_distributed を有効にします。この設定により、今後作成されるルーターはすべてデフォルトで分散されるようになります。

router_distributed = True

policy.json ファイルを編集して、デフォルトの動作をオーバーライドすることができます。

neutron router-create --distributed=True/False <name>

2. レイヤー 3 エージェントの設定

コンピュートノードの l3_agent.ini ファイルで DVR を有効にします。

agent_mode = dvr

ネットワークノードで、分散ルーターに dvr_snat を設定します。

agent_mode = dvr_snat

3. レイヤー 2 エージェントの設定

ネットワークノードとコンピュートノードで、DVR と、L2 エージェントへの L2 ポピュレーションを有効にします。たとえば、Open vSwitch する場合には、ovs_neutron_plugin.ini ファイルを以下のように編集します。

enable_distributed_routing = True
l2_population = True

4. ML2 で、L2 ポピュレーションメカニズムドライバーを有効にします。

コントローラーで、ml2_conf.ini を編集します。

[ml2]
mechanism_drivers = openvswitch, l2population	#Other values may be listed here as well

コンピュートノードで、ml2_conf.ini を編集します。

[agent]
l2_population = True

5. サービスを再起動して、変更を有効にします。

コントローラーで、以下のサービスを再起動します。

# systemctl restart neutron-server.service
# systemctl restart neutron-l3-agent.service
# systemctl restart neutron-openvswitch-agent.service

コンピュートノードで、以下のサービスを再起動します。

# systemctl restart neutron-l3-agent.service
# systemctl restart neutron-metadata-agent
注記

現在、既存の非分散ルーターを DVR に変換することはできません。ルーターを削除してから、DVR として再度作成する必要があります。