際際滷

際際滷Share a Scribd company logo
murakumo
クラウドコントロ`ラ
shin5ok
2013.07.23井
murakumo とは
オリジナルのクラウドコントロ`ラ(IaaS)
∀襯泪轡鵝⊆阿咼好肇讒`ジ、ネットワ`ク砿尖のための
web apiの鹿栽であり
コマンドラインツ`ル
F壓、Linux KVM喘
とあるクラウド/レンタルサ`バの児Pとしてサ`ビス戻工嶄
murakumo _kのトリガ`
2012定、輩嬾箸IaaSをBするため{砲鯤爾瓩燭
輝rIaaSがBできるオ`プンソ`スで
勣周を困燭擦襪發里なかった???
OpenStack(輝rDiablo)は、バグが謹くこのまま聞うことはできないと登僅
ないものは恬る
茶も惹ねて
Irg坪では冩梢_kをするrgが怎りないため
繁のオ`プンソ`スとして徭姙で冩梢、_k
どんな繁がmurakumoを聞ったらいい
?クラウドの咾を尖盾して聞いたい繁
?謹なシステム┘魯ぅ僣`バイザやストレ`ジ吉に鬉靴
C嬬が駅勣でない繁
?C嬬やトラブル盾Qを、徭蛍でしたい┐垢戮と房う繁
?Python(Openstack)、Java(Cloudstack)より、Perlが挫きな繁
?Ubuntuより、CentOSの圭が聞いやすい繁
デモ
クリアしたかった勣周
\喘宀としてのこだわり
?CLI(コマンドライン)から畠ての荷恬ができること
?\喘、O協をできるだけ徭啝したい
gHのシステムと砿尖DBの坪否に奮い`いがk伏しないようなシステム
O協の徭啝、徭啜弔淵踪`ルバック
?シンプル&スモ`ルで、\喘メンバに尖盾しやすい撹
HAC嬬吉はC嬬として、翌何ツ`ルとして_kする
クリアしたかった勣周
2013定歪にg喘レベルまで頼撹
サ`ビス並I宀としてのこだわり
_k宀としてのこだわり
?畠てのC嬬をweb apiで旋喘できること
UIや巓xツ`ルが_kしやすい
?コ`ドを100%委燐できて、
トラブルrの鬄∃C嬬の弖紗吉が儻堀にできること
デバッグしやすいツ`ル
?スモ`ルスタ`トが辛嬬で、撹Lに鬉犬できること
麼に聞っている室g
コントロ`ラ
murakumo
ノ`ド
murakumo_node
_k冱Z Perl5.14Perl5.14
_kモジュ`ル
Catalyst、DBIx::Class、
Log::Log4Perl、Data::UUID 麿
Catalyst、Sys::Virt、
Parallel::Prefork 麿
Webサ`バ Nginx、Starman HTTP::Server::PSGI
Jobサ`バ - TheSchwartz
DBサ`バ MySQL5.1゛ SQLite(Job喘
駅コンポ`ネント
RedHat狼の栽
python-virtinst
Libvirt、libguestfs、
Post?x(apiリトライキュ`のため
嘛_Jgみ
プラットフォ`ム
RedHat狼Linux(CentOS6、Scienti?c Linux6吉)RedHat狼Linux(CentOS6、Scienti?c Linux6吉)
murakumoの蒙(撹中
?シンコントロ`ラ、リッチエ`ジェント
徭舵議に咾ノ`ドエ`ジェント 嶷たい碧並は掲揖豚でエ`ジェントが毅輝
駅勣なストレ`ジO協、ネットワ`ク(VLAN/Bridge)O協を徭啜弔謀亢呂靴董g仏
∀襯泪轡鵑臨Bとデ`タベ`スに音屁栽が竃にくい撹
?EY栽なコンポ`ネント
匯何または畠何が唯峭しても、∀襯泪轡鵑睦壱がでる辛嬬來が富ない
コントロ`ラ/ノ`ドは、犹イweb apiでのやりとりなので、ステ`トレスで嬾墾にい
咾崙囮しにくい libvirtのC嬬はなるべく聞わない
?gなセットアップ
CentOS6のサ`バであれば、10蛍殻業のセットアップ
?シンプルで弌さく、メンテナンスしやすい
?スケ`ルアウト/アップに屡贋のノウハウが旋喘できる
Web+DBの\喘ノウハウを聞って、砿尖鵑紗に魗苗
murakumo コンポ`ネントのvS
api client
(cli / web browser)
node
agent
node
job
api
storage
agent
MTA
node
apimodel
コントロ`ラ
ノ`ド
ストレ`ジ
DB
http/https
http/https
http/https
http/https
libvirtd
CentOS6(64bit)鬚 gセットアップ
テンポラリ┐覆鵑舛磴辰藤バ`ジョン
?コントロ`ラ
$ curl -L -s murakumo.55mp.com/install/ ? sudo perl - controller
?ノ`ド
$ curl -L -s murakumo.55mp.com/install/ ? sudo perl - node
プロジェクト、ノ`ドの鞠hをすると、クラウドが旋喘辛嬬になります
?web apiによる∀襯泪轡(KVM)の荷恬/砿尖
?∀襯泪轡鵑臨撹
?∀襯泪轡鵑撹筝
CPU/メモリの護輝、}方ディスク(}方ストレ`ジ)、}方NIC(}方VLAN)、
isoイメ`ジのオンライン秘紋、}方のIP護り輝て、∀觧(virtio)モ`ドの俳紋、
ブリッジ侏∀襯泪轡鵑離汽櫞`ト、ディスクキャッシュモ`ドの筝 吉
?∀襯泪轡鵑離ロ`ン
Linuxはlibguestfsを聞ってネットワ`ク、ホスト兆吉の徭嘖O協が辛嬬
?軟/唯峭/崙唯峭
?ライブマイグレ`ション
?HAgYC嬬
?プロジェクトグル`プ亜▲工`パ`ユ`ザ慙泙砲茲襯螢秋`ス砿尖
?テンプレ`トC嬬
販吭の∀襯泪轡鵑鮃架┘謄鵐廛讒`トとして、麿プロジェクトに巷_辛嬬
murakumoの麼なC嬬 1
?ノ`ドサ`バ麗尖サ`バのステ`タス砿尖、護輝
旋喘リソ`スや塞により、∀襯泪轡鵑鯑咾垢襯立`ドサ`バを徭嘸x協
?}方ネットワ`ク(VLAN)、IPアドレスの砿尖、護輝
?}方のストレ`ジを悲にMみ栽わせが辛嬬
∀襯泪轡鵑1岬朕のディスクをメインストレ`ジ、2岬朕を
バックアップ喘ストレ`ジにO崔する吉の聞い蛍けが辛嬬
?ストレ`ジエ`ジェントとB亊した、ストレ`ジの砿尖、護輝
ストレ`ジの塞(iowait)、腎き否楚によるストレ`ジの徭嘸xk
?ディスクプ`ルによる互堀clone
?鋤峭apiのO協
murakumoの麼なC嬬 2
?murakumo CLIによるコマンドライン荷恬
F壓 26のサブコマンドを旋喘辛嬬
murakumoの麼なC嬬 3
?サブコマンドg佩箭
?恬撹gみの∀襯泪轡鵑厘屍E
$ murakumo vps-de?ne-list
?∀襯泪轡鵑clone(ネットワ`クの徭嘖O協)
$ murakumo vps-template-clone ?
> --uuid d0050b3a-849e-4fdd-bd47-858bc9c17abe ?
> --name mail-server001 --vlan-id 2001 --set-network eth0 --assign-ip
?∀襯泪轡鵑cpu を8、メモリを8GBに筝
$ murakumo vps-de?ne-modify ?
> --uuid daeb61fb-7390-49a1-9639-5b1858298723 ?
> --cpu-number 6 --memory 8192000
?∀襯泪轡鵑鬟薀ぅ屮泪ぅ哀讒`ション
$ murakumo vps-migration --uuid daeb61fb-7390-49a1-9639-5b1858298723?
> --dst-node node005
?畠プロジェクトの∀襯泪轡鵑離ぅ鵐好織鵐垢厘屍E┘工`パ`ユ`ザ`モ`ド)
$ murakumo vps-list-all
CLIの旋喘箭
∀襯泪轡鵑離ぅ鵐好織鵐航屍E
∀襯泪轡鵑淋スペック
CLI (デバッグモ`ド)の旋喘箭
ノ`ドの匯E┘妊丱奪哀譽戰 2)
api箭1 ∀襯泪轡鵑厘屍E
request: GET
https://apiサ`バ:ポ`ト桑催/プロジェクトID/vps/de?ne/list/?key=apiキ`
{
"authed" : 1,
"is_admin" : 1,
"data" : [
{
"update_time" : "2013-06-27 15:46:52",
"memory" : "1024000",
"regist_time" : "2013-06-25 16:46:53",
"cpu_number" : "1",
"name" : "centos6-minimum",
"tag" : "",
"uuid" : "66f332aa-dd6b-11e2-a3a2-6390677a1317"
},
:
(福待)
:
{
"update_time" : "2013-06-27 15:51:08",
"memory" : "1024000",
"regist_time" : "2013-06-27 15:50:40",
"cpu_number" : "1",
"name" : "nat",
"tag" : "",
"uuid" : "e1687a5a-def5-11e2-b984-4aee677a1317"
}
],
"tag" : "",
"project_id" : "COMMON",
"message" : "",
"result" : 1
}
response body:
api箭2 ∀襯泪轡鵑clone
request: POST
https://apiサ`バ:ポ`ト桑催/プロジェクトID/vps/de?ne/clone/テンプレ`トのuuid/?
key=apiキ`
request body:
{
"set_network" : "eth0",
"name" : "clone-vps001",
"assign_ip" : 1,
"vlan_id" : "4001"
}
response body:
{
"job_uuid" : "588edb82-e25d-11e2-a59e-1bce677a1317",
"uuid" : "66f332aa-dd6b-11e2-a3a2-6390677a1317",
"node" : "murakumo-node001:3000",
"message" : "",
"authed" : 1,
"is_admin" : 1,
"project_id" : "COMMON",
"result" : 1
}
掲揖豚ジョブとしてI尖されるため、k佩された job_uuid について、apiでY惚をい栽わせる侘塀
https://github.com/shin5ok/murakumo/wiki/api%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88
apiドキュメント恬撹嶄
murakumo 駅勣C匂?スペック
?コントロ`ラ喘サ`バ : murakumoをインスト`ル
1つ參貧のNICをもったサ`バ
∀觧されていてもok(ただし murakumoの砿尖和參翌のもの
?ノ`ド : murakumo_node をインスト`ル
∀觧屶址C嬬cpu(}方コア)をもった麗尖サ`バ
恷詰2つ參貧、できれば4つ參貧のNIC
ストレ`ジネットワ`ク喘は、10Gbps參貧の。囃が竃るものを容X
?ストレ`ジ
NFSストレ`ジ}方のストレ`ジを揖rに旋喘辛嬬
ストレ`ジエ`ジェントを聞う栽は、Linux(PC-Unix)でNFSをBすること
?サ`ビス喘スイッチ坤哀踪`バル、eネットワ`ク
タグVLANをサポ`トしたスイッチ
?ストレ`ジ喘、砿尖喘のスイッチ
宥械のL2スイッチ
サ`ビス喘スイッチ タグVLAN
murakumo
コントロ`ラ
murakumo_node
ノ`ドサ`バ
murakumo_node
ノ`ドサ`バNFSストレ`ジ
ストレ`ジスイッチ
砿尖セグメント喘スイッチ
vps vps vps vps
vps vps vps vps
グロ`バル1 グロ`バル2
murakumoの恷弌撹イメ`ジ(g喘レベル)
ストレ`ジ
砿尖サ`バ
ストレ`ジスイッチ
サ`ビス喘スイッチ タグVLAN
プライベ`トネットワ`ク喘スイッチ
砿尖セグメント喘スイッチ
murakumoのイメ`ジ
サ`ビス喘スイッチ タグVLAN
DB DB
コントロ
`ラ
ストレ
`ジ
砿尖サ
`バ
ストレ
`ジ
砿尖サ
`バ
ストレ`
ジ
ストレ`
ジ
ospf吉
vrrp
コントロ
`ラ
ノ`ドサ`バ蛤
ストレ`ジスイッチ
レプリケ`ション
vip
bondingによる庇L晒/謹嶷晒
?ネットワ`クC嬬の
OpenFlowオ`バ`レイネットワ`クを聞ったVLAN崙泙粒
?プロジェクト阿縫螢秋`スquotaをg廾
旋喘できるcpu方、揖r∀襯泪轡麁喨など
?ストレ`ジC嬬の
ストレ`ジ何蛍をプラグイン晒し、iSCSIやその麿蛍柊ストレ`ジ吉に
鬉任るように篇嶄
?徭嘖O協/砿尖C嬬の晒
ChefとのB亊
?RESTful API晒
?寄トなノ`ド紗への
ノ`ド方為岬、∀襯泪轡麒認岬ト
換岷圭鬚悗
書瘁のtodo
リソ`ス
ソ`ス砿尖
https://github.com/shin5ok/murakumo
https://github.com/shin5ok/murakumo_node
https://github.com/shin5ok/murakumo_storage_agent
apiドキュメント(恬撹嶄
https://github.com/shin5ok/murakumo/wiki/api%E3%83%89%E3%82%AD
%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88
Thank you for your time.

More Related Content

murakumo クラウドコントロ`ラ