Download - Cloudstack networking の内側

Transcript
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