pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

OpenStackアーキテクチャメモ(Neutron)

機能と役割

・仮想L2ネットワークの提供
・仮想ルーターの提供
・セキュリティグループ管理
IPアドレス管理とDHCP機能の提供
 ※インスタンスIPアドレスはOpenStackに制御対象であるため、インスタンスのOS側でIPアドレスを変更すると接続できなくなる。
・外部ネットワークからのアクセスを中継
 
 

プロセス

プロセス名 説明
neutron-server REST API提供
neutron-linuxbridge-agent Linux BridgeでL2ネットワーク機能を制御
neutron-openvswitch-agent Open vSwitchでL2ネットワーク機能を制御
neutron-l3-agent L3ネットワーク機能を制御
neutron-dhcp-agent DHCP機能を制御
neutron-metadata-agent metadataサーバへのアクセスを中継
neutron-ns-metadata-proxy metadataサーバへのアクセスを中継

 
 

【neutron-server】

論理ネットワークの構成情報をDBに書き込み、メッセージングサーバ経由で構成変更をエージェントに依頼
停止しても仮想マシンの通信に影響はない。構成変更ができなくなるだけ。
 
 

【neutron-linuxbridge-agent, neutron-openvswitch-agent】

L2仮想ネットワーク機能を実現する。
現在の主流は、neutron-openvswitch-agent。

f:id:pikesaku:20171008222038p:plain

linuxbridgeにopenvswitchどちらの場合も実現することは以下。・
①同一テナント内の仮想マシン間の通信が可能
②同一テナント内の仮想マシン間の通信は物理的に異なるサーバ上に配置されていても可能
③異なるテナントの通信は、それぞれ独立し混在しない
 
上記の実現内部実装が、エージェントにより異なる
neutron-linuxbridge-agentの場合、テナント毎にブリッジ作成&VLANを分けて、異テナント間の通信の混在を避ける。
neutron-openvswitch-agentの場合、統合スイッチ(br-int)に全テナントの仮想マシンを接続しvlan & フローテーブルで異テナント間の通信の混在を避ける。
 
 

【neutron-l3-agent】

仮想ネットワークのルーティング機能。ネットワークネームスペース機能により実現
外部から接続可能なフローティングIPの割当
冗長化は他コンポーネントのように出来ない(書籍執筆時点では手法なし)
 
 

【neutron-dhcp-agent】

仮想サブネットが定義された仮想ネットワーク毎にDHCP機能を提供するdnsmasqが起動
Open vSwitchのポートに割り当てたIPアドレスをdnsmasqがListenすることで実装
DHCPだが一度割り当てられたIPは、その仮想マシンが再起動しても固定で割り当てられる。これは以下フローで実現
仮想マシン起動しdnsmasqがIP割当
②neutron-dhcp-agentが仮想マシンMACアドレス情報と割り当てたIPアドレス情報を取得し、dnsmasqに対し、固定割り当てするよう設定をする。
 
 

【neutron-metadata-agent、neutron-ns-metadata-proxy】

Novaの提供するMetadataサーバへのアクセスを補助
neutron-metadata-agentは仮想ルーター上でhttp://169.254.169.254で待ち受け、必要な情報を付加した上で、Metadataサーバに中継
neutron-ns-metadata-proxyは仮想ルーターがないNWで動作する仮想マシンが、Metadataサーバと連携するためのもの。仮想ルーターがないNWで、neutron-ns-metadata-proxyが起動してneutron-metadata-agentへのアクセスを中継する。結果、Metadataサーバと通信が可能になる。 
 

メモ

Neutron設定ポイント
①物理サーバが、どのNICを通じて外部ネットワークと接続するか?
②外部ネットワークとの接続形式(Trunk? AccessPort等)

stackoverflow.com
 
この情報より以下がわかる。
・複数の外部ネットワークを利用可能になり、以下両方が可能
 インスタンスを物理NWに直接つなげる(プロバイダNW利用)
 ユーザー定義のセルフサービスNW両方につなげる(セルフサービスNW利用)
 
Using multiple external networks in OpenStack Neutronvirtuallylg.wordpress.com
Odd Bits
http://www.marcoberube.com/archives/248
Multiple floating IP pools - OpenStack Networking Guide - current
 
上記の手法で複数の外部ネットワークを作成可能
※external_network_bridgeは空にする