Cloudstack networking の内側

16

Click here to load reader

description

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

Transcript of Cloudstack networking の内側

Page 1: Cloudstack networking の内側

Cloudstack networking の内側

Hiroaki KAWAI

Page 2: Cloudstack networking の内側

2

初期導入時

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

▫ VLAN とかも…

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

Page 3: Cloudstack networking の内側

3

そして VM 起動時…

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

DefaultIsolatedNetworkOfferingWithSourceNatService

↑何これ?

Page 4: Cloudstack networking の内側

4

NetworkOffering とは

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

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

SourceNat, StaticNat, PortForwarding, SecurityGroup, NetworkACL, Connectivity

Page 5: Cloudstack networking の内側

5

NetworkOffering

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

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

▫ UI で確認できます

Page 6: Cloudstack networking の内側

6

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

Page 7: Cloudstack networking の内側

7

魔法があるように見える

物理結線

ネットワーク機器

VM

「機能セット」の提供

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

“offer”

魔法

Page 8: Cloudstack networking の内側

8

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

Page 9: Cloudstack networking の内側

9

「使える部品」 = NetworkElement

• NetworkElement▫ Cloudstack用語

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

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

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

実は…

Page 10: Cloudstack networking の内側

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>

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

Page 11: Cloudstack networking の内側

11

NetworkGuru

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

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

▫ 「おぜん立て」をする

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

NetworkGuru NetworkElement NetworkElement NetworkElement

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

Offering で決まる

Page 12: Cloudstack networking の内側

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)

Page 13: Cloudstack networking の内側

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>

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

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

Page 14: Cloudstack networking の内側

14

NetworkGuru, NetworkElement

魔法の正体

物理結線

ネットワーク機器

VM

「機能セット」の提供

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

“offer”

Page 15: Cloudstack networking の内側

15

そして…

Page 16: Cloudstack networking の内側

16

4.1 master branch

• Spring framework の導入▫ ComponentLocator の廃止

いろいろ限界を感じる…

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

▫ applicationContext.xml と componentContext.xml