OSSのクラウド基盤「Eucalyptus」を使う(2)--仮想ネットワークの実装方式

箕浦真(VA Linux Systems Japan)
2009-06-16 11:00:00
  • このエントリーをはてなブックマークに追加

 インスタンスとクラウド外のトラフィックも、すべてCCが制御します。クラウド外からインスタンスにアクセスするためのIPアドレス(パブリックIPアドレス)は、CCに十分な数だけ設定します。

 インスタンスが起動すると、CCはパブリックIPアドレスのプールから1つアドレスを取り出し、インスタンスに割り当てます。具体的には、自身にそのIPアドレスを振り、iptablesのNATテーブルに、そのIPアドレスとローカルIPアドレスを結び付けるNATルール(SNATおよびDNAT)を追加します。

 Elastic IPアドレス(EIP)も同じプールから割り当てられます。EIPを取得(AllocateAddress)すると、パブリックIPアドレスのプールからアドレスを1つ取り出し、ユーザーに割り当てます。インスタンスに割り当てる(AssociateAddress)と、既に割り当てられていたパブリックIPアドレスをインスタンスからはがして(つまり、NATルールを削除して自身のIPアドレスも削除する)プールに戻し、EIPを割り当てます(すなわち、自身のIPアドレスとSNATルールを追加する)。

 以上の様子を、2-図2に示します。

2-図2 【2-図2】Eucalyptusの仮想ネットワーク(画像クリックで拡大表示)

 なお、この図では全体構成として「前回の記事の【図2】」を前提とし、フロントエンドノードの「eth0」が専用ネットワークに、「eth1」が社内ネットワークに、それぞれ接続されているものとしています。また、各インスタンスのパブリックIPアドレスは、実際にはフロントエンドノードの「eth0」側に振られますが、図のように考えた方が分かりやすいでしょう。この構成で動作するのは、LinuxのARPが「特殊な動作」をすることによります。

 もう1つ、インスタンスメタデータやユーザーデータのためのHTTPサーバはCLCで実装されています。インスタンスからメタデータやユーザーデータにアクセスするためには、「169.254.169.254」にHTTP接続します (*2) が、このアドレスはCCが自身の動作するホストに割り当てています。接続に使うポート80は、CLCの使うポートにリダイレクトされています。これが、CCとCLCが同一ホストで動いていなければならない理由です。逆にインスタンスメタデータやユーザーデータの機能を使わなければ、CCとCLCを別のホストで動作させることも可能だと思います。

(*2) 169.254.0.0/16は、RFC3330で規定されたリンクローカルアドレスですので、「前回の記事の図1」によれば本来はNCかCCが処理する必要があるはずです。

その他のモード

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]