OpenStackのスケーラブルなネットワーク。 パート1:フラットトポロジ

投稿者:Piotr Siwczak



最近、OpenStackのネットワークは、シンプルで使いにくいモデルから、所有者を完全に分離する機能を備えたより高度なモデルに進化しました。 OpenStackのさまざまなユーザー要件のサポートは、いわゆるを使用して実装されます。 「ネットワーク管理者。」 ネットワークマネージャーは、特定のOpenStackデプロイメントのネットワークトポロジーを決定します。 Essexバージョンから、ユーザーはネットワークマネージャーの3つのオプション(FlatManager、FlatDHCPManager、VlanManager)のいずれかを選択できます。 記事のこの部分では、最初の2つについて検討し、後者については2番目の部分を割り当てます。



FlatManagerとFlatDHCPManagerのマネージャーには多くの共通点があります。 どちらも、単一のブリッジを使用したブリッジネットワークの概念に基づいています。 例として、複数のノードで構成されるネットワークを考えます。



各コンピューティングノードに対して、1つの仮想ブリッジが作成され、その名前はオプションを使用してNova構成で指定されます。



flat_network_bridge=br100







OpenStackによって起動されたすべての仮想マシンは、この専用ブリッジに参加します。



画像

OpenStack Computingノードのネットワークブリッジ



計算ノードへのシングルブリッジアプローチの主な欠点は、Linuxのネットワークブリッジのよく知られた制限です-ブリッジは1つの物理インターフェイスのみに接続できます(制限はVLANを使用して回避できますが、FlatDHCPManagerおよびFlatManagerではサポートされません)。 このため、第2レベルでの分離は不可能であり、すべてのノードは同じARPドメインで動作します。



FlatManagerとFlatDHCPManagerは、クラスター全体に対して1つの「フラットな」IPアドレスプールを定義するという考え方に基づいています。 このアドレス空間は、どの所有者が属しているかに関係なく、すべてのユーザーマシン間で共有されます。 各所有者は、プールで使用可能なアドレスを選択できます。



フラットマネージャー





Network Manager FlatManagerは、最も基本的な一連の操作を提供します。 その役割は、ユーザーマシンをコンピューティングノードのブリッジに接続することだけです。 デフォルトでは、マネージャーはユーザーマシンにIPを構成しません。 このタスクはシステム管理者に任されており、外部DHCPサーバーを使用して実行できます。

画像

FlatManagerを使用したネットワークトポロジ



FlatDHCPManager



Network Manager FlatDHCPManagerは、指定されたユーザーマシンをブリッジに接続し、DHCPサーバーを提供します。



したがって、各コンピューティングノードで:

•ネットワークブリッジは、IPアドレスの「フラット」プールからアドレスを受信します

•dnsmasqプロセスが起動し、ブリッジインターフェイスのIPアドレスをリッスンします

•ブリッジは、コンピューティングノードで実行されているすべてのユーザーマシンのデフォルトゲートウェイとして機能します。



画像

FlatDHCPManagerを使用したネットワークトポロジ

dnsmaqサービスの場合、FlatDHCPManagerネットワークマネージャーは各計算ノードに静的エントリを作成して、特定のユーザーマシンで同じIPアドレスが受信されるようにします。 レコードファイルはNovaデータベースから作成され、MACアドレス、IP、およびマシン名で構成されます。 dnsmasqサーバーは、計算ノードでローカルに実行されているマシンにのみアドレスを配布することが想定されています。 これは、「ホスト」フィールドで「インスタンス」テーブルのレコードをフィルタリングすることで実現されます。 また、デフォルトゲートウェイは、ブリッジインターフェイスのIPアドレスに設定されます。 次の図では、仮想マシンが配置されているコンピューティングノードによってデフォルトゲートウェイが異なることがわかります。

画像

異なるコンピューティングノードで実行されているマシンのネットワークゲートウェイ

以下は、vm_1およびvm_3マシンのルーティングテーブルです。それぞれに異なるデフォルトゲートウェイがあります。



ルート@ vm_1:〜#route -n

カーネルIPルーティングテーブル

宛先ゲートウェイGenmaskフラグメトリックRef使用Iface

0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0



ルート@ vm_3:〜#route -n

カーネルIPルーティングテーブル

宛先ゲートウェイGenmaskフラグメトリックRef使用Iface

0.0.0.0 10.0.0.4 0.0.0.0 UG 0 0 0 eth0



デフォルトでは、「フラット」ネットワーク内のすべての仮想マシンは、所有者に関係なく、お互いを見ることができます。 nova.confから次のフラグを使用して、分離を実現できます。



allow_same_net_traffic=False







これにより、セキュリティグループを使用して解決されるまで、マシン間のトラフィック(同じ所有者内であっても)をブロックするiptablesポリシーが設定されます。



実用的な観点から、「フラット」なネットワークマネージャーは、所有者自体が存在しないか、その数が非常に限られている、均一で比較的小さな社内クラウドに適しているように見えます。 通常、ユースケースは、動的にスケーラブルなWebサーバーまたはHPCクラスターです。 このようなタスクの場合、通常、外部DCHPサーバーまたはOpenStackが提供するdnsmasqプロセスのいずれかによって管理されるIPアドレスの単一のスペースがあれば十分です。 一方、すべての仮想マシンは同じL2ドメインに存在する必要があるため、このソリューションはスケーラビリティの点で制限されています。



スケーラビリティと所有権の分離に関する制限は、ネットワークマネージャーVlanManagerである程度削除されます。これについては、次の投稿で説明します。



英語のオリジナル記事



All Articles