次に、インスタンスからパッケージのアップデートなどで外部ネットワークへアクセスする際のNeutronの動作を見てみます。
OpenStackからNeutronへネットワーク作成が指示されると、Neutronのプロセス「neutron-l3-agent」がルーター用のNamespaceを作成します。さらに作成したNamespace内でiptablesやip forwardingを設定/実行します。また、インスタンスと一対一でひも付いたNAT用のグローバルIPアドレス(floating IP)が割り当てられます。これは外部ネットワークのゲートウェイとなるインターフェースのエイリアスとして付与されます。これでルーターの作成と設定は完了です。
インスタンスが外部ネットワークへアクセスする際の動作は以下の通りです。
次に、起動したインスタンスでWebサーバーなどを立ち上げて外部からアクセスさせるケースを見てみましょう。外部接続用のルーターは既に上記で作成していますので割愛します。
これも動作は非常に単純です。
上記の三つのケースを通じて、Neutronを構成するソフトウェアと基本的な動作をご理解いただけたかと思います。
ここからは、複数のテナントを構成する場合に、どのような実装になるのかを表したのが下図です。テナントAとテナントBを作成しています。
注目していただきたいのは、下記の三点です。
最後に、OpenStackマルチノード構成の場合を見てみましょう。マルチノード構成の場合は大きく二点が変更になります。
まず、インスタンスが動作するコンピュートノードで行われていたネットワーク処理が専用物理サーバー(ネットワークノード)に集約されます。コンピュートノードとネットワークノードのbr-intがGREやVXLANなどのL3トンネリングプロトコルを介して接続されます。その詳細を表しているのが下図です。接続のためにブリッジ「br-tun」が作成され、br-tunの間が(この図では)GREトンネリングで結ばれているのがお分かりいただけるかと思います。
今回はNeutronに求められる要件とその実装について解説しました。次回はあなた自身に擬似的にNeutronになっていただきます。Neutronが行っている操作をコマンドラインレベルで再現し、より深い理解を目指しましょう。
Copyright © ITmedia, Inc. All Rights Reserved.