Help us understand the problem. What is going on with this article?

Mirantis OpenStack DVR 徹底解剖(第一回)

More than 3 years have passed since last update.

OpenStack Liberty ベースである Mirantis OpenStack(以下、MOS)8.0 をベースに
DVR の動作を確認してみました。

これから複数回に分けて紹介していきたいと思います。

第一回は、DVRの説明と環境の説明をしてきます。

DVR とは

まず、DVR とは何かについて説明してきたいと思います。

従来の Neutron を使用したネットワークでは、外部ネットワークへの通信や異なるサブネットへの通信は、
すべて Network Node 上の仮想ルータを通る仕組みとなっています。

スライド1.PNG

しかし、上記の構成の場合、
Network Node の仮想ルータがSPOF(Single Point of Failure, 単一障害点)となっており、
負荷の集中によるレスポンス低下なども起こりうる状態となっています。

その問題を解消するため、DVRが登場しました。
DVRを使用した場合、
外部ネットワークへの通信、異なるサブネットへの通信ともに自ホストの仮想ルータを使用するため、
負荷が分散され、万が一仮想ルータに障害が発生した場合の影響範囲を自ホストのみに最小化することが可能となります。

注:ただし、North-South 通信で、Floating IP を使用せず NAT を使用する場合は、
DVR 構成の場合でも、DVR を使用しない場合と同様、Network Node の仮想ルータを使用します。

スライド2.PNG

使用環境

まず検証した環境を以下に示します。
今回は、Compute ノードと Storage ノードを1台に集約し、
OpenStack としては、合計2台の構成を取っています。
apc-env.png

ネットワーク

以下、ネットワークについて簡単な説明となります。

ネットワーク名 説明
Public 外部ネットワークへの接続に使用
Management OpenStack の管理用ネットワーク
Private OpenStack の内部通信用ネットワーク
Storage ストレージ用ネットワーク
Admin(PXE) Fuel Master(※) と各ノードとの通信で使用

デプロイ後の設定確認

全体構成

上記の環境でデプロイすると出来上がった環境がこちらになります。
blog_default_controller (1).png
blog_default_compute (1).png
青背景:UP している NIC およびスイッチ
グレー:DOWN している NIC およびスイッチ(br-int および br-tun はポートのみ UP している状態)

少々複雑なので、次回以降、簡略化した以下の図を用いて説明していきます。
simple_default_controller (1).png
simple_default_compute (1).png

VRRP(L3HA) については、今回省略しました。
別の記事で別途記載させていただこうと思います。

詳細

Linux ブリッジ

controller01 / compute01

名称 説明
br-fw-admin Admin(PXE) ネットワーク通信用ブリッジ
br-mgmt Management ネットワーク通信用ブリッジ
br-ex Public ネットワーク通信用ブリッジ
br-mesh Private ネットワーク通信用ブリッジ
br-storage Storage ネットワーク通信用ブリッジ
qbr*** 仮想マシンと br-int をつなぐためのブリッジ

OVS ブリッジ

controller01 / compute01

名称 説明
br-floating Floating IP 使用時、および外部通信時に使用されるブリッジ
br-tun VXLAN や GRE トンネル使用して内部ホスト間での通信に使用されるブリッジ
br-int 内部通信で主に使用されるブリッジ

NameSpace

controller01

名称 説明
snat-*** 仮想 NAT
qrouter-*** 仮想ルータ
qdhcp-*** 仮想 DHCP
haproxy-*** HAProxy

compute01

名称 説明
fip-*** Floating IP
qrouter-*** 仮想ルータ

Neutron 設定

/etc/neutron/neutron.conf(抜粋)

controller01
[DEFAULT]
router_distributed = True   # DVRを使用するため 'True' を設定
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin
l3_ha = False
# dvr_base_mac = fa:16:3f:00:00:00    # DVRを使用する際、使用する自ホストのMAC(後述)は、デフォルト値を使用
compute01
[DEFAULT]
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin
auth_strategy = keystone
# dvr_base_mac = fa:16:3f:00:00:00    # DVRを使用する際、使用する自ホストのMAC(後述)は、デフォルト値を使用

/etc/neutron/l3_agent.ini(抜粋)

controller01
[DEFAULT]
agent_mode = dvr_snat    # DVRおよびNAT機能
compute01
[DEFAULT]
agent_mode = dvr    # DVR機能

/etc/neutron/plugins/ml2/ml2_conf.ini(抜粋)

controller01
[ml2]
type_drivers = local,flat,vlan,gre,vxlan
tenant_network_types = flat,vxlan
mechanism_drivers =openvswitch,l2population
extension_drivers =port_security
[ml2_type_gre]
tunnel_id_ranges =2:65535
[ml2_type_vxlan]
vni_ranges =2:65535
vxlan_group =224.0.0.1
[securitygroup]
enable_security_group = True
[ovs]
tunnel_bridge=br-tun
enable_tunneling=True
integration_bridge=br-int
bridge_mappings=physnet1:br-floating
[agent]
enable_distributed_routing=True   # DVRを使用するため 'True' を設定
prevent_arp_spoofing=True
arp_responder=True
polling_interval=2
drop_flows_on_start=False
vxlan_udp_port=4789
l2_population=True
tunnel_types=vxlan
compute01
[ovs]
tunnel_bridge=br-tun
enable_tunneling=True
integration_bridge=br-int
bridge_mappings=physnet1:br-floating
[agent]
enable_distributed_routing=True   # DVRを使用するため 'True' を設定
prevent_arp_spoofing=True
arp_responder=True
polling_interval=2
drop_flows_on_start=False
vxlan_udp_port=4789
l2_population=True
tunnel_types=vxlan

注釈

※ Fuel Master ・・・ MOS のデプロイおよび管理用ノード

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした