Cloudstack networking の内側
Click here to load reader
-
Upload
hiroaki-kawai -
Category
Technology
-
view
825 -
download
4
description
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