SlideShare a Scribd company logo
自作仮想化基盤
「n0stack」の紹介
ぱろっく
hnron
h-otter
kyontan
法政大学
日本工学院八王子専門学校
電気通信大学
電気通信大学
- ContainerSIG (Special Interest Group)
- But...
- No
- No
- No Jail
Attention!
- ContainerSIG (Special Interest Group)
- But...
- We use
Attention!
自己紹介 (@hnron)
- 日本工学院八王子専門学校
- ITスペシャリスト科 4年
- ICTSC (第3-6回 参加) (第7-9回 運営)
- 自宅ラック勢
- OpenStack
- 自宅にBGPフルルートが来てたり
自己紹介 (@h-otter)
- 電気通信大学 総合情報学科 3年
セキュリティコース
- ICTSC運営 (第6 ~ 9回)
- アルバイト @
- 自宅ラック勢
- openstack on k8s
自己紹介 (ぱろっく)
- @porisuteru
- 法政大学 理工学部 4年
知的情報処理研究室
- ICTSC運営委員(第5 - 9回)
- アルバイト @
- インターン @
- 機械学習✖️セキュリティを研究
- @sukukyon
- https://monora.me
- 電気通信大学 情報理工学部 3年
- 元 ICTSC 運営委員 (第5 - 8回)
- アルバイト @ &
- 就活中 (?)
自己紹介 (@kyontan)
自宅サーバ群 (FreeBSD, CoreOS, ...)
ICTトラブルシューティングコンテスト
- 通称 ICTSC (ICT Trouble Shooting Contest)
- https://icttoracon.net
- 学生によるインフラ技術を中心に出題される
トラブルシューティング大会
- 次回は第9回@さくらインターネット株式会社 大阪本社
自作仮想化基盤 「n0stack」の紹介
開発の動機
- これまでは CloudStack や OpenStack を用いていた
- CloudStack はネットワークの構造等の自由度が低く、
ICTSC に用いるのが難しかった
- OpenStack は比較的自由度が高かったが、ICTSC で使う際に
毎回特殊な構築の仕方を取る必要があった
- どちらを用いた場合でも、学習コストや不具合が発生した時の
デバッグのコストがとても高かった
- クラウドを理解するためにクラウドを作ってみる
We introduce …
全体の構成
- 各コンポーネントやエージェントを分割して開発
- リソースをそれぞれ抽象化するエージェントを作る
- IaaSとしてコンポーネントをまとめる
- Compute, Network, Volume の依存は比較的大きい
- ex. Nova と Neutron と Cinder
→ OpenStackやKubernetesの構造を参考にしながら粒度を調整
インターフェイス (OpenStack)
- VMを作るには…
- Neutron でネットワークを作って
- Neutron でサブネット・ポートを作って
- Nova で VM を立てて…
- Cinder でディスクをつくって
- いろいろアタッチして…
- Heat…? Murano…?
インターフェイス (Kubernetes)
- サービスを提供するには…
- PersistentVolumeつくって
- Deploymentを作って
- Service作って
- いろいろ制約を追加して…
- いろいろタグでアタッチして…
しんどい
インターフェイス (n0core)
- VMを作るには…
- procedure という
1つのリクエストを投げるだけ
- リソースの依存関係を解決
- 効率的なスケジューリング
- resource: vm
name: hello_vm
power_state: started
attachments:
- resource: volume
size: 10G
- resource: port
network:
type: vlan
vlan_id: 10
subnets:
- cidr: 10.0.1.0/24
- RESTful API
- 全ては HTTP でやる
- デバッグのしやすさを重視
- 疎結合
- agent 同士の依存を減らす
- マイクロサービスに近い
- agent は比較的密結合である
- 破綻
Architecture (0.1)
- MQ を導入
- 到達性を重視
- 容易にリトライが可能
- Scheduler / Conductor
- agent 間の調整 / 管理
- データフローを一方向に
Architecture (0.2)
Architecture (0.2)
- API Gateway
- HTTP / MQ の変換
- n0auth, n0image
- HTTP 依存部は外部へ
メッセージの流れ
- Scheduler が
必要な agent へ命令
Architecture (0.2)
メッセージの流れ
- エラーがあれば
Conductor → Scheduler で
再スケジューリング
Architecture (0.2)
Architecture (0.2)
- 依存関係があると……
- Scheduler
→ Agent
→ Conductor
→ Scheduler
→ Agent
→ ...
- 依存関係があると……
- Scheduler
→ Agent
→ Conductor
→ Scheduler
→ Agent
→ ...
必要ないのでは?
Architecture (0.2)
全体の構成 (Latest)
依存関係の通知を
Agent から直接 Agent へ
- VM に必要なディスク
... ポート
- ポート ... ネットワーク
全体の構成 (Latest)
依存関係の通知を
Agent から直接 Agent へ
- VM に必要なディスク
... ポート
- ポート ... ネットワーク
n0core
- Core Component
全体の構成 (Latest)
Messaging
- 全てのメッセージは N0stackMessage である
- Protobuf はそれ自身の型情報を持たない
N0stackMessage
Request Procedure Notification
Simple
Notification
Create
VM
Requests..
Create
Network
Delete
VM
Pulsar
- Yahoo! が日米で開発した MQ (メッセージングキュー)
- レイテンシの低さがウリ
- メッセージは ZooKeeper / BookKeeper で伝達/保持
- (acknowledgement を返すまでメッセージを保持できる)
- 今は Apache Incubator の配下で開発続行中
- n0stack の MQ として採用
- MQ の扱いになれておらず色々苦労中
Messaging
- Protobuf (Protocol buffer) 3 を全体で採用
- agent 間でのスキーマの統一
- 文字列/数値等の最低限の型は保証できる
- 列挙型もある
- Protobuf 3 では全てのフィールドが optional (なくてもよい)
- シリアライズできたからといってエラーが起きないわけではない
- API Gateway
- クライアント (WebUI, CLI) からのリクエストのルーティング
- Authentication, Authorization
- Kong, Traefik などを使いたい (未検証)
- 未着手
n0gateway
api
Clients
MQ
api
- HTTP - MQ の橋渡し
YAML, JSON, ...
Protobuf
scheduler
- ホストのリソースを元に
VMのスケジューリング
- filter / weight
- APIから送られてくる
procedureの分割
- 各コンポーネントへ
リソースの作成リクエストを送る
networker
- 外部ネットワークから
VMへの疎通を確保
- n0stack側から外部の
router/switch を操作
- NAPALM
- BGPで外部のrouterに
VMのIPを/32で広報
- GoBGP
porter
- VMのnetworkを抽象化
- ブリッジの作成 &
DHCP による IPアドレスの割当
- 複数のタイプに対応
- flat
- vlan
- ...
volumer
- VMイメージ等の管理
- リソースプールの作成
- 作成
- 削除
- ダウンロード
- マイグレーション
compute
- VMの管理
- 作成
- 起動
- 停止
- 複製
- デバイス追加
- スペック変更
- マイグレーション
compute
- ハイパーバイザにKVMを使用
- libvirtを用いてKVMを管理
libvirt
- RedHat が主体となって開発している OSS
- KVM や Xen などのハイパーバイザを管理する抽象化ライブラリ
- C / Python / Java などから API を利用可能
libvirt を使う理由
- 将来的に様々なハイパーバイザに対応させやすい
- Linux Containers (LXC) もサポートしている
- コンテナの管理も可能に(?)
進捗
着手し始めた部分
- Scheduler
- Compute
- Volumer
- Porter
- Networker
: Procedure 設計
: ほぼ完成
: Attach 以外ほぼ完成
: MQと結合以外は完成
: gobgp 検証中
- 0.1 Release (Soon)
- 色が濃い部分の基本動作
- (0.2, ...)
- 1.0: 全体の完成
- ICTSC9 (2018/3/3, 4)
- 導入判断は 2017/12 😂
- 間に合わせたい
Schedule
様々な形でのサポートを
お願いします!! 🙏
Thanks / Check it out!

More Related Content

PDF
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
PPTX
ネットワークプログラマビリティ勉強会
Tomoya Hibi
 
PDF
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Tomoya Hibi
 
PDF
Lagopus Router
Tomoya Hibi
 
PDF
Lagopus + DockerのDPDK接続
Tomoya Hibi
 
PDF
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Tomoya Hibi
 
PDF
Lagopus Router v19.07.1
Tomoya Hibi
 
PDF
Lagopusで試すFirewall
Tomoya Hibi
 
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
ネットワークプログラマビリティ勉強会
Tomoya Hibi
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Tomoya Hibi
 
Lagopus Router
Tomoya Hibi
 
Lagopus + DockerのDPDK接続
Tomoya Hibi
 
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Tomoya Hibi
 
Lagopus Router v19.07.1
Tomoya Hibi
 
Lagopusで試すFirewall
Tomoya Hibi
 

What's hot (20)

PDF
Osc2018tokyo spring-20180224
Tomoya Hibi
 
PPTX
Lagopus workshop@Internet weekのそば
Yoshihiro Nakajima
 
PDF
QUICとNATと
Yuya Rin
 
PDF
NPStudy LT Lagopus Router v19.07
Tomoya Hibi
 
PDF
Lagos running on small factor machine
Lagopus SDN/OpenFlow switch
 
PPTX
Project calico introduction - OpenStack最新情報セミナー 2017年7月
VirtualTech Japan Inc.
 
PDF
Lagopusで試すFW
Tomoya Hibi
 
PPTX
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
VirtualTech Japan Inc.
 
PDF
20170329 container technight-第一回勉強会
Minehiko Nohara
 
PDF
君にもできる! にゅーとろん君になってみよー!! 「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
VirtualTech Japan Inc.
 
PPTX
VPP事始め
npsg
 
PDF
OpenStackネットワーキング管理者入門 - OpenStack最新情報セミナー 2014年8月
VirtualTech Japan Inc.
 
PDF
openstack_neutron-ovs_osc2014tf_20141019
Takehiro Kudou
 
PDF
NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月
VirtualTech Japan Inc.
 
PDF
Kernel vm-2014-05-25
Hirochika Asai
 
PDF
Lagopus & NFV with Vhost (Tremaday#9)
Tomoya Hibi
 
PDF
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
シスコシステムズ合同会社
 
PDF
「宣言的プログラミング」とSDNのひとつの形態
npsg
 
PPTX
Contrail overview open stack days tokyo-feb2015
Nachi Ueno
 
PDF
Lagopus Project (Open Source Conference)
Tomoya Hibi
 
Osc2018tokyo spring-20180224
Tomoya Hibi
 
Lagopus workshop@Internet weekのそば
Yoshihiro Nakajima
 
QUICとNATと
Yuya Rin
 
NPStudy LT Lagopus Router v19.07
Tomoya Hibi
 
Lagos running on small factor machine
Lagopus SDN/OpenFlow switch
 
Project calico introduction - OpenStack最新情報セミナー 2017年7月
VirtualTech Japan Inc.
 
Lagopusで試すFW
Tomoya Hibi
 
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
VirtualTech Japan Inc.
 
20170329 container technight-第一回勉強会
Minehiko Nohara
 
君にもできる! にゅーとろん君になってみよー!! 「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
VirtualTech Japan Inc.
 
VPP事始め
npsg
 
OpenStackネットワーキング管理者入門 - OpenStack最新情報セミナー 2014年8月
VirtualTech Japan Inc.
 
openstack_neutron-ovs_osc2014tf_20141019
Takehiro Kudou
 
NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月
VirtualTech Japan Inc.
 
Kernel vm-2014-05-25
Hirochika Asai
 
Lagopus & NFV with Vhost (Tremaday#9)
Tomoya Hibi
 
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
シスコシステムズ合同会社
 
「宣言的プログラミング」とSDNのひとつの形態
npsg
 
Contrail overview open stack days tokyo-feb2015
Nachi Ueno
 
Lagopus Project (Open Source Conference)
Tomoya Hibi
 
Ad

Similar to 自作仮想化基盤 「n0stack」の紹介 (20)

PDF
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Etsuji Nakai
 
PDF
20130803 OSC@Kyoto CloudStackユーザー会
samemoon
 
PDF
OpenStack概要
Akira Yoshiyama
 
PDF
OpenStack Updates
Masanori Itoh
 
PDF
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
 
PDF
話題のNode-REDでIoTアプリを作ってみよう
Kimihiko Kitase
 
PDF
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
Masanori Itoh
 
PDF
"NAZE? NANI? CloudStack" on OSC Sendai 2011 / May 21 2011
Masahito Zembutsu
 
PDF
CloudStack Ecosystem Day - OpenStack/Swift
irix_jp
 
PPTX
Fluxflex meetup 2011 in Tokyo
Kyosuke Inoue
 
PDF
OSC2012-KANSAI@Kyoto JOSUG
Hideki Saito
 
PPT
2010 04クラウド技術講座
sisawa
 
PDF
OpenStack入門 2016/06/10
株式会社 NTTテクノクロス
 
PDF
OSC 2011 Tokyo/Spring OpenStackプレゼン
Masanori Itoh
 
PDF
Wakame-vnet / Open Source Project for Virtual Network & SDN
axsh co., LTD.
 
PDF
Cloud Foundry: Open Platform as a Service
Shunsuke Kurumatani
 
PDF
Whats new Apache CloudStack
Kimihiko Kitase
 
PDF
Apache cloudstack4.0インストール
Yasuhiro Arai
 
PDF
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
Masanori Itoh
 
PPT
vFabricを触ろう
土岐 孝平
 
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Etsuji Nakai
 
20130803 OSC@Kyoto CloudStackユーザー会
samemoon
 
OpenStack概要
Akira Yoshiyama
 
OpenStack Updates
Masanori Itoh
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
 
話題のNode-REDでIoTアプリを作ってみよう
Kimihiko Kitase
 
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
Masanori Itoh
 
"NAZE? NANI? CloudStack" on OSC Sendai 2011 / May 21 2011
Masahito Zembutsu
 
CloudStack Ecosystem Day - OpenStack/Swift
irix_jp
 
Fluxflex meetup 2011 in Tokyo
Kyosuke Inoue
 
OSC2012-KANSAI@Kyoto JOSUG
Hideki Saito
 
2010 04クラウド技術講座
sisawa
 
OpenStack入門 2016/06/10
株式会社 NTTテクノクロス
 
OSC 2011 Tokyo/Spring OpenStackプレゼン
Masanori Itoh
 
Wakame-vnet / Open Source Project for Virtual Network & SDN
axsh co., LTD.
 
Cloud Foundry: Open Platform as a Service
Shunsuke Kurumatani
 
Whats new Apache CloudStack
Kimihiko Kitase
 
Apache cloudstack4.0インストール
Yasuhiro Arai
 
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
Masanori Itoh
 
vFabricを触ろう
土岐 孝平
 
Ad

自作仮想化基盤 「n0stack」の紹介

Editor's Notes

  • #2: @palloc
  • #3: @palloc
  • #4: @palloc
  • #5: @naoki
  • #6: @h-otter
  • #7: @palloc
  • #8: @kyontan
  • #9: @kyontan
  • #10: @palloc (ここまでを2分で終わらせる)
  • #11: @palloc
  • #12: @h-otter
  • #13: @h-otter
  • #14: @h-otter
  • #15: @h-otter
  • #16: @h-otter
  • #17: @h-otter
  • #18: @kyontan
  • #19: @kyontan
  • #20: @kyontan
  • #21: @kyontan
  • #22: @kyontan
  • #23: @kyontan
  • #24: @kyontan
  • #27: @kyontan
  • #28: @kyontan
  • #29: @kyontan
  • #30: @kyontan
  • #31: @kyontan
  • #32: @kyontan
  • #33: @naoki ホストのリソースとfilter, weightなどの情報を元にVMのスケージューリングを行います APIから送られてくるプロシージャの分割を行って、各ホストのコンポーネントへ、リソースの作成リクエストを送っています。
  • #34: @naoki networkerコンポーネントは、 外部ネットワークからVMへの疎通を確保するためのコンポーネントで、 n0stack側から外部のrouter/switchを操作し、BGPなどの設定を行います。 その後に、BGPで、VMに割当てられたIPを/32で広報します // あとは、NAPALMを使用してホスト間のL2の // 他はgottyで
  • #35: @h-otter
  • #36: @naoki
  • #37: @palloc
  • #38: @palloc
  • #39: @palloc
  • #40: @palloc
  • #41: @palloc
  • #42: @palloc
  • #43: @palloc
  • #44: @palloc