Cloudstack networking の内側

Post on 10-Jun-2015

826 views 4 download

description

Presentation at Japanese cloudstack user group 11th meeting at Osaka. This slide shows what NetworkOffering, NetworkGuru and NetworkElement is.

Transcript of Cloudstack networking の内側

Cloudstack networking の内側

Hiroaki KAWAI

2

初期導入時

• ウィザードに従うと…▫ IP アドレスをたくさん入力する…

▫ VLAN とかも…

• PhysicalNetwork…• トラフィックの種類…

3

そして VM 起動時…

• 普通に VM を起動させようとすると…

DefaultIsolatedNetworkOfferingWithSourceNatService

↑何これ?

4

NetworkOffering とは

• 「ネットワーク機能セット」をまとめたもの▫ Network function

• 組み込みの機能▫ Vpn, Dhcp, Dns, Gateway, Firewall, Lb, UserData,

SourceNat, StaticNat, PortForwarding, SecurityGroup, NetworkACL, Connectivity

5

NetworkOffering

• さっきの Default.....NatService は▫ Dhcp, Dns, Firewall, Gateway, Lb, PortForwarding,

SourceNat, StaticNat, UserData, Vpn が有効になってます

▫ UI で確認できます

6

ネットワークがわかりにくい…なぜか

7

魔法があるように見える

物理結線

ネットワーク機器

VM

「機能セット」の提供

「使える部品」を使って「何とか」実現する

“offer”

魔法

8

魔法の内側を見てみましょう

9

「使える部品」 = NetworkElement

• NetworkElement▫ Cloudstack用語

• 例えば▫ 「DHCP の機能」は「Virtual Router」の機能を使って実現

DHCP の機能 = Network.Service Virtual Router = Network.Provider (NetworkElement)

• どんな部品があるかは、UI の表示で垣間見られる

実は…

10

components.xml

• 読んだことありますか?▫ /etc/cloud/management/components.xml にあります

• これは何?▫ DI コンテナの設定ファイル

▫ 「プラグイン機構」と理解しても構いません

▫ ComponentLocator が起動時に読み込んで、

management server のセットアップを行ないます。

<adapters key="com.cloud.network.element.NetworkElement"> <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/> <adapter name="Ovs" class="com.cloud.network.element.OvsElement"/> <adapter name="ExternalDhcpServer" class="com.cloud.network.element.ExternalDhcpElement"/> <adapter name="BareMetal" class="com.cloud.network.element.BareMetalElement"/> <adapter name="SecurityGroupProvider" class="com.cloud.network.element.SecurityGroupElement"/> <adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/> <adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/></adapters>

ここにあるものが全て!!

11

NetworkGuru

• 部品間の調整役▫ ある意味一番魔法を使っているもの

▫ NetworkElement が協調動作できるようにする

▫ 「おぜん立て」をする

▫ Network ひとつにつき、ひとつ選出される

NetworkGuru NetworkElement NetworkElement NetworkElement

ネットワーク操作時の処理の流れ

Offering で決まる

12

NetworkGuru の調べ方

• もっとも簡単な方法は SQL▫ SELECT name,guru_name FROM networks

mysql> select name,guru_name from networks;+------+---------------------+| name | guru_name |+------+---------------------+| NULL | PublicNetworkGuru || NULL | PodBasedNetworkGuru || NULL | ControlNetworkGuru || NULL | StorageNetworkGuru || net1 | SspNetworkGuru |+------+---------------------+5 rows in set (0.00 sec)

13

components.xml (again)

• NetworkGuru もプラグイン的に読み込まれます

<adapters key="com.cloud.network.guru.NetworkGuru"> <adapter name="StorageNetworkGuru" class="com.cloud.network.guru.StorageNetworkGuru"/> <adapter name="ExternalGuestNetworkGuru" class="com.cloud.network.guru.ExternalGuestNetworkGuru"/> <adapter name="PublicNetworkGuru" class="com.cloud.network.guru.PublicNetworkGuru"/> <adapter name="PodBasedNetworkGuru" class="com.cloud.network.guru.PodBasedNetworkGuru"/> <adapter name="ControlNetworkGuru" class="com.cloud.network.guru.ControlNetworkGuru"/> <adapter name="DirectNetworkGuru" class="com.cloud.network.guru.DirectNetworkGuru"/> <adapter name="DirectPodBasedNetworkGuru" class="com.cloud.network.guru.DirectPodBasedNetworkGuru"/> <adapter name="OvsGuestNetworkGuru" class="com.cloud.network.guru.OvsGuestNetworkGuru"/> <adapter name="PrivateNetworkGuru" class="com.cloud.network.guru.PrivateNetworkGuru"/> <adapter name="NiciraNvpGuestNetworkGuru" class="com.cloud.network.guru.NiciraNvpGuestNetworkGuru"/></adapters>

ここにあるものが全て!!

この中のどれかがネットワークに割り当たっているはずです。

14

NetworkGuru, NetworkElement

魔法の正体

物理結線

ネットワーク機器

VM

「機能セット」の提供

「使える部品」を使って「何とか」実現する

“offer”

15

そして…

16

4.1 master branch

• Spring framework の導入▫ ComponentLocator の廃止

いろいろ限界を感じる…

▫ より標準的でこなれた仕組みに乗り換える

▫ applicationContext.xml と componentContext.xml