SlideShare uma empresa Scribd logo
1 de 7
Baixar para ler offline
1	
OpenStackとPythonと私	
日本仮想化技術株式会社
野津 新
アジェンダ	
•  OpenStack
–  概要
•  Python
–  メッセージ処理を一部紹介
•  私
–  Bare-Metal Provisioning in OpenStack
2	
OpenStack概要	
•  クラウド構築ソフトウェア
–  クラウド=AWSみたいなもの
–  VM(仮想マシン)を利用者に提供
–  主にPythonで記述
–  複数の要素で構成
•  Nova: VM管理(IaaS)
–  AWSのEC2相当
–  この話のメイン
•  他の構成要素
–  Quantum: ネットワーク
•  ユーザ(テナント)ごとにVMのネット
ワーク構成を定義
•  OpenFlowなどで実現
–  Swift: オブジェクトストレージ
•  AWSのS3相当
•  単体での使用も可能
–  Horizon(Dashboard): Web UI
Novaの構成要素(プロセス)	
•  Compute: ハイパーバイザ制御
–  KVM,Xen,VMwareなど
–  ハイパーバイザに対応するクラスを定義
•  Glance: イメージ管理
–  Swiftをバックエンドにできる
•  Scheduler: ComputeへのVM割当
–  特定のcomputeに負荷が集中することを
防ぐ
•  Volume/Cinder: ブロックデバイス管理
–  AWSのEBS相当
•  Network:ネットワーク管理
–  Quantumと連携する場合もここで
•  API: ユーザリクエストの処理
–  HTTPサーバ
•  メッセージキュー
–  各構成要素間のリクエストをキューイング
API	
Scheduler	
MQ	
Compute	
Network
②Schedulerに転送
①ユーザがVM起動をリクエスト
③ホストを選択して
VM起動
Glance	
Image	
④パラメータ(アドレスなど)
の決定/セットアップ ⑤VMイメージ
ダウンロード
⑥VM起動
3	
メッセージングの実装	
•  新しくインスタンスを作成する場合を例に
•  computeの
nova.compute.manager.ComputeManager.run_instance()
を実行すればいい
•  ただし・・・
–  呼び出し元はScheduler
–  Scheduler内で直接上記メソッドを呼び出しても無意味
–  →schedulerプロセスからcomputeプロセスへのRPC
•  Schedulerで
nova.compute.rpcapi.ComputeAPI.run_instance()を実行
•  メッセージキューを経由して
ComputeManager.run_instance()が実行される
リクエスト送信	
•  呼び出し側はメッセージキューを(あまり)意識する必要なし
•  メソッド名(run_instance)と引数をメッセージにしてメッセージキューに
送信(cast)
def run_instance(self, ctxt, instance, host, request_spec,
filter_properties, requested_networks,
injected_files, admin_password,
is_first_time):
instance_p = jsonutils.to_primitive(instance)
self.cast(ctxt, self.make_msg('run_instance', instance=instance_p,
request_spec=request_spec, filter_properties=filter_properties,
requested_networks=requested_networks,
injected_files=injected_files, admin_password=admin_password,
is_first_time=is_first_time),
topic=_compute_topic(self.topic, ctxt, host, None))
@staticmethod
def make_msg(method, **kwargs):
return {'method': method, 'args': kwargs}
4	
リクエスト受信	
•  受信されたメッセージはcompute側のディスパッチャへ	
•  委譲先オブジェクト(ComputeManager)のrun_instanceメソッドを呼び
出す
–  文字列→メソッドに変換(getattr)
def dispatch(self, ctxt, version, method, **kwargs):
(省略)	
if not hasattr(proxyobj, method):
continue
if is_compatible:
return getattr(proxyobj, method)(ctxt, **kwargs)
if had_compatible:
raise AttributeError("No such RPC function '%s'" % method)
else:
raise rpc_common.UnsupportedRpcVersion(version=version)	
run_instance本体	
•  ここではメッセージキューを意識する必要なし
•  ハイパーバイザに応じた処理に続く・・・	
nova.compute.manager.ComputeManager:
@exception.wrap_exception(notifier=notifier, publisher_id=publisher_id())
@reverts_task_state
@wrap_instance_fault
def run_instance(self, context, instance, request_spec=None,
filter_properties=None, requested_networks=None,
injected_files=None, admin_password=None,
is_first_time=False):
(省略)
@utils.synchronized(instance['uuid'])
def do_run_instance():
self._run_instance(context, request_spec,
filter_properties, requested_networks, injected_files,
admin_password, is_first_time, instance)
do_run_instance()
5	
Bare-Metal OpenStack	
•  OpenStackのインスタンスを物理マシン上
で直接実行(Bare-Metal)
–  通常OpenStackはVMインスタンスのみサポー
ト
–  仮想化オーバーヘッドが無く高速実行可能
•  OpenStackを拡張した独自実装
–  インスタンス作成時にBare-Metalを選択して起
動
–  OpenStack本体にマージされるよう調整中
B-M OpenStackの想定利用方法	
•  物理・仮想のハイブリッド構成システム全
体をOpenStackで一元管理
–  x86 VMと同じイメージを使用可能
•  高速処理が必要となったシステム、アプリ
ケーションを物理マシン(Bare-Metal)上に
プロビジョニング
•  DR(災害復旧)サイトを柔軟に構成
•  マイクロサーバー群をOpenStackで管理
6	
課題	
•  物理マシンにはハイパーバイザがない
•  ハイパーバイザが行う処理の代替が必要
•  VMの起動は以下のフロー
1.  カーネル/起動RAMディスクの指定
2.  ディスクイメージ
3.  電源ON
4.  他ユーザネットワークとの干渉防止
対策	
実装上の課題	
 対策/利用テクノロジ	
カーネル/RAMディスク
の切り替え
ネットワークブート(PXE)
を利用
ローカルディスクへのイ
メージ書き込み
書き込み用のミニOSを
PXE起動、完了後、書き
込んだイメージで再起動
外部からの強制電源
ON/OFF
IPMIを利用	
ネットワークの分離 OpenFlowを利用
7	
起動シーケンス	
ユーザ	
Nova	
PXEサーバ	
物理マシン	
起動リクエスト	
イメージ書込
用のミニOSで
起動するよう
に設定	
IPMI
電源ON	
ミニOSが
起動	
イメージ
書き込み	
本来の起動
設定に切替	
リブート	
起動完了	
参考	
•  OpenStack
–  http://www.openstack.org/
–  https://launchpad.net/nova/ (BTSなど)
–  https://github.com/openstack/
•  Bare-Metal OpenStack
–  https://github.com/NTTdocomo-openstack/

Mais conteúdo relacionado

Mais procurados

日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
Yuusuke Takeuchi
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 

Mais procurados (20)

BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
 
ソーシャルゲームデザイン配色編2
ソーシャルゲームデザイン配色編2ソーシャルゲームデザイン配色編2
ソーシャルゲームデザイン配色編2
 
Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編
 
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
 
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが
1週間くらいで通信対戦ゲームを作ってみた
 
RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
RAFT: Recurrent All-Pairs Field Transforms for Optical FlowRAFT: Recurrent All-Pairs Field Transforms for Optical Flow
RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
 
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 
三宅 陽一郎 プロフィール(2017_11_11 作成)
三宅 陽一郎 プロフィール(2017_11_11 作成)三宅 陽一郎 プロフィール(2017_11_11 作成)
三宅 陽一郎 プロフィール(2017_11_11 作成)
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
Marp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドMarp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライド
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
 
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
 

Semelhante a OpenStackとPythonと私

OpenStack勉強会
OpenStack勉強会OpenStack勉強会
OpenStack勉強会
Yuki Obara
 
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
irix_jp
 
OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)
Akira Yoshiyama
 
Whats new Apache CloudStack
Whats new Apache CloudStackWhats new Apache CloudStack
Whats new Apache CloudStack
Kimihiko Kitase
 

Semelhante a OpenStackとPythonと私 (20)

OpenStack勉強会
OpenStack勉強会OpenStack勉強会
OpenStack勉強会
 
OpenStack 101
OpenStack 101OpenStack 101
OpenStack 101
 
OpenStack概要
OpenStack概要OpenStack概要
OpenStack概要
 
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
 
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~
 
OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder)
 
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessionsOpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
 
Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)
 
Nova からみる OpenStack プロジェクトの歴史 (rev.3)
Nova からみる OpenStack プロジェクトの歴史 (rev.3)Nova からみる OpenStack プロジェクトの歴史 (rev.3)
Nova からみる OpenStack プロジェクトの歴史 (rev.3)
 
Nova からみる OpenStack プロジェクトの歴史 (rev.4)
Nova からみる OpenStack プロジェクトの歴史 (rev.4)Nova からみる OpenStack プロジェクトの歴史 (rev.4)
Nova からみる OpenStack プロジェクトの歴史 (rev.4)
 
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
 
OSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUGOSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUG
 
SAN ブートでベアメタルクラウド
SAN ブートでベアメタルクラウドSAN ブートでベアメタルクラウド
SAN ブートでベアメタルクラウド
 
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
 
201709 osc josug
201709 osc josug 201709 osc josug
201709 osc josug
 
Nova から見る OpenStack プロジェクトの歴史 (rev.2)
Nova から見る OpenStack プロジェクトの歴史 (rev.2)Nova から見る OpenStack プロジェクトの歴史 (rev.2)
Nova から見る OpenStack プロジェクトの歴史 (rev.2)
 
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
 
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
AWS Black Belt Techシリーズ  AWS  Elastic  BeanstalkAWS Black Belt Techシリーズ  AWS  Elastic  Beanstalk
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
 
Whats new Apache CloudStack
Whats new Apache CloudStackWhats new Apache CloudStack
Whats new Apache CloudStack
 
OpenStack入門 2016/06/10
OpenStack入門 2016/06/10OpenStack入門 2016/06/10
OpenStack入門 2016/06/10
 

Mais de VirtualTech Japan Inc.

Mais de VirtualTech Japan Inc. (20)

5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
 
エンジニアが幸せになれる会社を目指します
エンジニアが幸せになれる会社を目指しますエンジニアが幸せになれる会社を目指します
エンジニアが幸せになれる会社を目指します
 
KubeVirt 201 How to Using the GPU
KubeVirt 201 How to Using the GPUKubeVirt 201 How to Using the GPU
KubeVirt 201 How to Using the GPU
 
KubeVirt 101
KubeVirt 101KubeVirt 101
KubeVirt 101
 
今からはじめる! Linuxコマンド入門
今からはじめる! Linuxコマンド入門今からはじめる! Linuxコマンド入門
今からはじめる! Linuxコマンド入門
 
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
 
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
 
5G時代のアプリケーション開発とは
5G時代のアプリケーション開発とは5G時代のアプリケーション開発とは
5G時代のアプリケーション開発とは
 
hbstudy#88 5G+MEC時代のシステム設計
hbstudy#88 5G+MEC時代のシステム設計hbstudy#88 5G+MEC時代のシステム設計
hbstudy#88 5G+MEC時代のシステム設計
 
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
 
Kubernetes雑にまとめてみた 2019年12月版
Kubernetes雑にまとめてみた 2019年12月版Kubernetes雑にまとめてみた 2019年12月版
Kubernetes雑にまとめてみた 2019年12月版
 
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
 
KubeCon China & MWC Shangai 出張報告
KubeCon China & MWC Shangai 出張報告KubeCon China & MWC Shangai 出張報告
KubeCon China & MWC Shangai 出張報告
 
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
 
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
 
Multi-access Edge Computing(MEC)における”Edge”の定義
Multi-access Edge Computing(MEC)における”Edge”の定義Multi-access Edge Computing(MEC)における”Edge”の定義
Multi-access Edge Computing(MEC)における”Edge”の定義
 
Edge Computing Architecture using GPUs and Kubernetes
Edge Computing Architecture using GPUs and KubernetesEdge Computing Architecture using GPUs and Kubernetes
Edge Computing Architecture using GPUs and Kubernetes
 

Último

Último (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

OpenStackとPythonと私

  • 1. 1 OpenStackとPythonと私 日本仮想化技術株式会社 野津 新 アジェンダ •  OpenStack –  概要 •  Python –  メッセージ処理を一部紹介 •  私 –  Bare-Metal Provisioning in OpenStack
  • 2. 2 OpenStack概要 •  クラウド構築ソフトウェア –  クラウド=AWSみたいなもの –  VM(仮想マシン)を利用者に提供 –  主にPythonで記述 –  複数の要素で構成 •  Nova: VM管理(IaaS) –  AWSのEC2相当 –  この話のメイン •  他の構成要素 –  Quantum: ネットワーク •  ユーザ(テナント)ごとにVMのネット ワーク構成を定義 •  OpenFlowなどで実現 –  Swift: オブジェクトストレージ •  AWSのS3相当 •  単体での使用も可能 –  Horizon(Dashboard): Web UI Novaの構成要素(プロセス) •  Compute: ハイパーバイザ制御 –  KVM,Xen,VMwareなど –  ハイパーバイザに対応するクラスを定義 •  Glance: イメージ管理 –  Swiftをバックエンドにできる •  Scheduler: ComputeへのVM割当 –  特定のcomputeに負荷が集中することを 防ぐ •  Volume/Cinder: ブロックデバイス管理 –  AWSのEBS相当 •  Network:ネットワーク管理 –  Quantumと連携する場合もここで •  API: ユーザリクエストの処理 –  HTTPサーバ •  メッセージキュー –  各構成要素間のリクエストをキューイング API Scheduler MQ Compute Network ②Schedulerに転送 ①ユーザがVM起動をリクエスト ③ホストを選択して VM起動 Glance Image ④パラメータ(アドレスなど) の決定/セットアップ ⑤VMイメージ ダウンロード ⑥VM起動
  • 3. 3 メッセージングの実装 •  新しくインスタンスを作成する場合を例に •  computeの nova.compute.manager.ComputeManager.run_instance() を実行すればいい •  ただし・・・ –  呼び出し元はScheduler –  Scheduler内で直接上記メソッドを呼び出しても無意味 –  →schedulerプロセスからcomputeプロセスへのRPC •  Schedulerで nova.compute.rpcapi.ComputeAPI.run_instance()を実行 •  メッセージキューを経由して ComputeManager.run_instance()が実行される リクエスト送信 •  呼び出し側はメッセージキューを(あまり)意識する必要なし •  メソッド名(run_instance)と引数をメッセージにしてメッセージキューに 送信(cast) def run_instance(self, ctxt, instance, host, request_spec, filter_properties, requested_networks, injected_files, admin_password, is_first_time): instance_p = jsonutils.to_primitive(instance) self.cast(ctxt, self.make_msg('run_instance', instance=instance_p, request_spec=request_spec, filter_properties=filter_properties, requested_networks=requested_networks, injected_files=injected_files, admin_password=admin_password, is_first_time=is_first_time), topic=_compute_topic(self.topic, ctxt, host, None)) @staticmethod def make_msg(method, **kwargs): return {'method': method, 'args': kwargs}
  • 4. 4 リクエスト受信 •  受信されたメッセージはcompute側のディスパッチャへ •  委譲先オブジェクト(ComputeManager)のrun_instanceメソッドを呼び 出す –  文字列→メソッドに変換(getattr) def dispatch(self, ctxt, version, method, **kwargs): (省略) if not hasattr(proxyobj, method): continue if is_compatible: return getattr(proxyobj, method)(ctxt, **kwargs) if had_compatible: raise AttributeError("No such RPC function '%s'" % method) else: raise rpc_common.UnsupportedRpcVersion(version=version) run_instance本体 •  ここではメッセージキューを意識する必要なし •  ハイパーバイザに応じた処理に続く・・・ nova.compute.manager.ComputeManager: @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) @reverts_task_state @wrap_instance_fault def run_instance(self, context, instance, request_spec=None, filter_properties=None, requested_networks=None, injected_files=None, admin_password=None, is_first_time=False): (省略) @utils.synchronized(instance['uuid']) def do_run_instance(): self._run_instance(context, request_spec, filter_properties, requested_networks, injected_files, admin_password, is_first_time, instance) do_run_instance()
  • 5. 5 Bare-Metal OpenStack •  OpenStackのインスタンスを物理マシン上 で直接実行(Bare-Metal) –  通常OpenStackはVMインスタンスのみサポー ト –  仮想化オーバーヘッドが無く高速実行可能 •  OpenStackを拡張した独自実装 –  インスタンス作成時にBare-Metalを選択して起 動 –  OpenStack本体にマージされるよう調整中 B-M OpenStackの想定利用方法 •  物理・仮想のハイブリッド構成システム全 体をOpenStackで一元管理 –  x86 VMと同じイメージを使用可能 •  高速処理が必要となったシステム、アプリ ケーションを物理マシン(Bare-Metal)上に プロビジョニング •  DR(災害復旧)サイトを柔軟に構成 •  マイクロサーバー群をOpenStackで管理
  • 6. 6 課題 •  物理マシンにはハイパーバイザがない •  ハイパーバイザが行う処理の代替が必要 •  VMの起動は以下のフロー 1.  カーネル/起動RAMディスクの指定 2.  ディスクイメージ 3.  電源ON 4.  他ユーザネットワークとの干渉防止 対策 実装上の課題 対策/利用テクノロジ カーネル/RAMディスク の切り替え ネットワークブート(PXE) を利用 ローカルディスクへのイ メージ書き込み 書き込み用のミニOSを PXE起動、完了後、書き 込んだイメージで再起動 外部からの強制電源 ON/OFF IPMIを利用 ネットワークの分離 OpenFlowを利用