SlideShare a Scribd company logo
1 of 19
Dodai 勉強会 #6
maruoka
確保失敗時に再確保する
処理はどこか
今回のテーマ
背景
 dodaiでは、インスタンス作成時にベアメタルの確保に失敗すると再確保処理が行
われる
 確保に失敗したベアメタルのステータスはERRORとなる
 しかし、過去の事例から以下の様な問題があることがわかっている
 最初に確保失敗したベアメタルはインスタンス返却処理が行われるまで放置される
 返却処理がいつ行われるかは利用者次第なので場合によっては年単位で放置される可能性がある
 台数制限が厳しい中、全く使われないマシンがあるのはリソースの無駄
 インスタンスの返却処理を行うと、最初に確保失敗したベアメタルが返却され、再確保し
たベアメタルは返却処理されない
 dodai内部でどのような処理が行われているかを確認し、問題の解決を検討したい
そこで、原因分析のエントリーポイントとして、
再確保処理のコードを特定する。
背景
 dodaiでは、インスタンス作成時にベアメタルの確保に失敗すると再確保処理が行
われる
 確保に失敗したベアメタルのステータスはERRORとなる
 しかし、過去の事例から以下の様な問題があることがわかっている
 最初に確保失敗したベアメタルはインスタンス返却処理が行われるまで放置される
 返却処理がいつ行われるかは利用者次第なので場合によっては年単位で放置される可能性がある
 台数制限が厳しい中、全く使われないマシンがあるのはリソースの無駄
 インスタンスの返却処理を行うと、最初に確保失敗したベアメタルが返却され、再確保し
たベアメタルは返却処理されない
 dodai内部でどのような処理が行われているかを確認し、問題の解決を検討したい
そこで、原因分析のエントリーポイントとして、
再確保処理のコードを特定する。
状態遷移の確認
状態遷移の確認
インスタンス貸出時にエラーが発生すると、
bm_nodesテーブルのtask_stateをerrorにすることがわかる
bm_nodes → BareMetalNode
 bm_nodesでgrepすると以下のファイルが見つかる。
 https://github.com/dodai-compute-v2/nova/blob/dodai-compute-
v2/nova/virt/baremetal/db/sqlalchemy/models.py#L33-L65
 記述内容からbm_nodesテーブルにO/Rマッピングされるクラスのようだ
BareMetalNodeクラスを
使用しているメソッド
 BareMetalNodeでgrepすると以下のファイルが見つかる
 https://github.com/dodai-compute-v2/nova/blob/dodai-compute-
v2/nova/virt/baremetal/db/api.py
 新しくノードを作るメソッドっぽい
 https://github.com/dodai-compute-v2/nova/blob/dodai-compute-
v2/nova/virt/baremetal/db/sqlalchemy/api.py#L172-L178
 ノードを更新するメソッドっぽい
 https://github.com/dodai-compute-v2/nova/blob/dodai-compute-
v2/nova/virt/baremetal/db/sqlalchemy/api.py#L182-L185
推理
 run instanceに成功するとresource_poolの値が‘0’に更新されるが、
これは、 bm_node_updateメソッドで行われるのでは?
bm_node_updateメソッドを
使っているところ
 bm_node_updateでgrepして以下のメソッドを見つけた
 https://github.com/dodai-compute-v2/nova/blob/dodai-compute-
v2/nova/compute/manager.py#L4085-L4140
 おそらくこの処理
task_stateの列挙型
 先ほどのメソッドに以下のような記述がある
 https://github.com/dodai-compute-v2/nova/blob/dodai-compute-
v2/nova/compute/manager.py#L4091-L4094
 bm_nodeテーブルのtask_stateカラムの値はbaremetal_statesで列挙されてい
るようだ。
 https://github.com/dodai-compute-v2/nova/blob/dodai-compute-
v2/nova/virt/baremetal/baremetal_states.py
baremetal_status
 run instanceでエラーが発生した際に、bm_nodesのtask_stateに書き込まれる値
 baremetal_status.ERRORを使用している箇所を探せば、エラー発生時の処理が見つ
かる
baremetal_states.ERROR使用箇所
 Baremetal_status.ERRORでgrepすると以下のファイルが見つかった
 https://github.com/dodai-compute-v2/nova/blob/dodai-compute-
v2/nova/virt/baremetal/driver.py
 使用しているのは
 L317 (BareMetalDriver.spawn()の中)
 L369 (BareMetalDriver.destroy()の中)
 L603 (DodaiBareMetalDriver.spawn()の中)
 L650 (DodaiBareMetalDriver.spawn()の中)
 L708 (DodaiBareMetalDriver.destroy()の中)
そういえば、DodaiBareMetalDriver.spawn()はベアメタルインスタンスの
起動をやってるんでしたね。(勉強会 #2)
DodaiBareMetalDriver.spawn()
 https://github.com/dodai-compute-
v2/nova/blob/dodai-compute-
v2/nova/virt/baremetal/driver.py#L564-
L662
 とりあえず、is_resycle == trueの場合を読む
 https://github.com/dodai-compute-
v2/nova/blob/dodai-compute-
v2/nova/virt/baremetal/driver.py#L578-L604
 例外が発生したら_update_stateメソッドを
呼んで、task_state = ‘error’にしている
_update_stateメソッドは何している?
 https://github.com/dodai-compute-v2/nova/blob/dodai-compute-
v2/nova/virt/baremetal/driver.py#L120-L133
 → bm_nodeテーブルをアップデートしている
 今回の場合ならtask_stateにerrorを書き込む
DodaiBareMetalDriver.spawn()
 is_resycle == falseの場合
 https://github.com/dodai-compute-
v2/nova/blob/dodai-compute-
v2/nova/virt/baremetal/driver.py#L605-L662
 例外が発生したら_update_stateメソッドを
呼んで、task_state = ‘error’にしているのは
同じ
 その後後始末をしてから、task_state =
‘deleted’にしている
 deletedになるとその後ピリオディックタスク
によって回収されるはず
まとめ
 is_resycle == true => リソースプールに居る and 適用するイメージがデフォル
トイメージ の場合、確保に失敗したらtask_state = ‘error’になる
 is_resycle == falseならtask_state = ‘error’のあとで後始末し、全部成功した
ら’deleted’になってピリオディックタスクに回収される
 task_state = ‘error’になったら、人が確認しないといけない状態だからそこで止まる。という設計方針だったはずだが、上のとお
り一致していない。
 is_resycle == trueの場合もfalseと同じように処理すれば良いのでは?
 Is_resycle == falseの場合でも後始末に失敗したらdeletedに落ちないので、解決までは今一歩
 回収処理であらためて人手対応が必要か(結果的に)チェックされる?
 task_state = ‘error’に落ちるタイミングでインスタンスidを消せば返却処理で正しく返却されない問題は解決するのでは?
 ただし、障害時の調査が難しくなるという弊害が
 →uuid以外にもリレーションがあるので、難しい
 Destroy処理でインスタンスidを持つノードが複数あっても1個しか処理してないのでは
 task_state=‘error’を監視して人手作業を入れやすくしたほうが良いのでは
次回 dodai勉強会 #7
 テーマ: インスタンス確保失敗時のリトライ処理について
 日時: 6/23 10:30~

More Related Content

What's hot

Jcsug21 20140912
Jcsug21 20140912Jcsug21 20140912
Jcsug21 20140912hirokihojo
 
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキストVxRail ChampionClub
 
20180629_VxRailCC_サイジング編_EMC田中様
20180629_VxRailCC_サイジング編_EMC田中様20180629_VxRailCC_サイジング編_EMC田中様
20180629_VxRailCC_サイジング編_EMC田中様VxRail ChampionClub
 
20171207 VxRailチャンピオンクラブ_meetup_ネットワールド石塚
20171207 VxRailチャンピオンクラブ_meetup_ネットワールド石塚20171207 VxRailチャンピオンクラブ_meetup_ネットワールド石塚
20171207 VxRailチャンピオンクラブ_meetup_ネットワールド石塚VxRail ChampionClub
 
Dell EMC Forum 2017_networld_20171026
Dell EMC Forum 2017_networld_20171026Dell EMC Forum 2017_networld_20171026
Dell EMC Forum 2017_networld_20171026VxRail ChampionClub
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)Satoshi Shimazaki
 
NSX-Tから見たvSphere with Kubernetesのネットワーキング
NSX-Tから見たvSphere with KubernetesのネットワーキングNSX-Tから見たvSphere with Kubernetesのネットワーキング
NSX-Tから見たvSphere with KubernetesのネットワーキングTomoyuki Tanigaki
 
vSphere 4の気になる機能を試してみた
vSphere 4の気になる機能を試してみたvSphere 4の気になる機能を試してみた
vSphere 4の気になる機能を試してみたVirtualTech Japan Inc.
 
20171012_VxRailチャンピオンクラブKickOffセミナー_BootUp!ハイパーコンバージド!
20171012_VxRailチャンピオンクラブKickOffセミナー_BootUp!ハイパーコンバージド!20171012_VxRailチャンピオンクラブKickOffセミナー_BootUp!ハイパーコンバージド!
20171012_VxRailチャンピオンクラブKickOffセミナー_BootUp!ハイパーコンバージド!VxRail ChampionClub
 
#02-01 ZFS によるストレージ仮想化 (2012-04-20)
#02-01 ZFS によるストレージ仮想化 (2012-04-20)#02-01 ZFS によるストレージ仮想化 (2012-04-20)
#02-01 ZFS によるストレージ仮想化 (2012-04-20)SolarisJPNight
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)シスコシステムズ合同会社
 
LagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDKLagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDKShuheiUda
 
プライベートクラウドを支えるAMD EPYCサーバ
プライベートクラウドを支えるAMD EPYCサーバプライベートクラウドを支えるAMD EPYCサーバ
プライベートクラウドを支えるAMD EPYCサーバTomohiro Hirano
 
Networld vx railchampionclub_essential point of sizing
Networld vx railchampionclub_essential point of sizingNetworld vx railchampionclub_essential point of sizing
Networld vx railchampionclub_essential point of sizingVxRail ChampionClub
 

What's hot (19)

VIOPS03: VMware参考資料
VIOPS03: VMware参考資料VIOPS03: VMware参考資料
VIOPS03: VMware参考資料
 
Jcsug21 20140912
Jcsug21 20140912Jcsug21 20140912
Jcsug21 20140912
 
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
 
20180629_VxRailCC_サイジング編_EMC田中様
20180629_VxRailCC_サイジング編_EMC田中様20180629_VxRailCC_サイジング編_EMC田中様
20180629_VxRailCC_サイジング編_EMC田中様
 
VIOPS10: サーバーロードマップから考えるクラウドの次
VIOPS10: サーバーロードマップから考えるクラウドの次VIOPS10: サーバーロードマップから考えるクラウドの次
VIOPS10: サーバーロードマップから考えるクラウドの次
 
20171207 VxRailチャンピオンクラブ_meetup_ネットワールド石塚
20171207 VxRailチャンピオンクラブ_meetup_ネットワールド石塚20171207 VxRailチャンピオンクラブ_meetup_ネットワールド石塚
20171207 VxRailチャンピオンクラブ_meetup_ネットワールド石塚
 
Dell EMC Forum 2017_networld_20171026
Dell EMC Forum 2017_networld_20171026Dell EMC Forum 2017_networld_20171026
Dell EMC Forum 2017_networld_20171026
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
 
vSphere 7 へのアップグレードについて
vSphere 7 へのアップグレードについてvSphere 7 へのアップグレードについて
vSphere 7 へのアップグレードについて
 
NSX-Tから見たvSphere with Kubernetesのネットワーキング
NSX-Tから見たvSphere with KubernetesのネットワーキングNSX-Tから見たvSphere with Kubernetesのネットワーキング
NSX-Tから見たvSphere with Kubernetesのネットワーキング
 
vSphere 4の気になる機能を試してみた
vSphere 4の気になる機能を試してみたvSphere 4の気になる機能を試してみた
vSphere 4の気になる機能を試してみた
 
20171012_VxRailチャンピオンクラブKickOffセミナー_BootUp!ハイパーコンバージド!
20171012_VxRailチャンピオンクラブKickOffセミナー_BootUp!ハイパーコンバージド!20171012_VxRailチャンピオンクラブKickOffセミナー_BootUp!ハイパーコンバージド!
20171012_VxRailチャンピオンクラブKickOffセミナー_BootUp!ハイパーコンバージド!
 
#02-01 ZFS によるストレージ仮想化 (2012-04-20)
#02-01 ZFS によるストレージ仮想化 (2012-04-20)#02-01 ZFS によるストレージ仮想化 (2012-04-20)
#02-01 ZFS によるストレージ仮想化 (2012-04-20)
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
 
LagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDKLagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDK
 
プライベートクラウドを支えるAMD EPYCサーバ
プライベートクラウドを支えるAMD EPYCサーバプライベートクラウドを支えるAMD EPYCサーバ
プライベートクラウドを支えるAMD EPYCサーバ
 
vSphere環境での自動化とテスト
vSphere環境での自動化とテストvSphere環境での自動化とテスト
vSphere環境での自動化とテスト
 
Networld vx railchampionclub_essential point of sizing
Networld vx railchampionclub_essential point of sizingNetworld vx railchampionclub_essential point of sizing
Networld vx railchampionclub_essential point of sizing
 
Zeus
ZeusZeus
Zeus
 

Viewers also liked

Экономное отопление для Бизнеса
Экономное отопление для БизнесаЭкономное отопление для Бизнеса
Экономное отопление для БизнесаOleg Yurkov
 
Prezent uchitel
Prezent uchitelPrezent uchitel
Prezent uchitelVe-le-na
 
Recent glacier surface snowpack melt in Novaya Zemlya and Severna
Recent glacier surface snowpack melt in Novaya Zemlya and SevernaRecent glacier surface snowpack melt in Novaya Zemlya and Severna
Recent glacier surface snowpack melt in Novaya Zemlya and SevernaMeng Zhao
 
Rpp kkpi berkarakter for merge
Rpp kkpi berkarakter   for mergeRpp kkpi berkarakter   for merge
Rpp kkpi berkarakter for mergeAgos Agos
 

Viewers also liked (8)

Экономное отопление для Бизнеса
Экономное отопление для БизнесаЭкономное отопление для Бизнеса
Экономное отопление для Бизнеса
 
Prezent uchitel
Prezent uchitelPrezent uchitel
Prezent uchitel
 
Recent glacier surface snowpack melt in Novaya Zemlya and Severna
Recent glacier surface snowpack melt in Novaya Zemlya and SevernaRecent glacier surface snowpack melt in Novaya Zemlya and Severna
Recent glacier surface snowpack melt in Novaya Zemlya and Severna
 
Rpp kkpi berkarakter for merge
Rpp kkpi berkarakter   for mergeRpp kkpi berkarakter   for merge
Rpp kkpi berkarakter for merge
 
Yourprezi
YourpreziYourprezi
Yourprezi
 
Migration Data
Migration Data Migration Data
Migration Data
 
basic_AIDS_presentation
basic_AIDS_presentationbasic_AIDS_presentation
basic_AIDS_presentation
 
Geriatric care
Geriatric careGeriatric care
Geriatric care
 

Recently uploaded

論文紹介: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 UnderstandingToru Tamaki
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介: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...Toru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: 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 Gamesatsushi061452
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 

Recently uploaded (10)

論文紹介: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
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: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...
 
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の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: 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
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Dodai勉強会#6