Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
可用性セットを検証してみた@GEEKERS NITE #3
Search
Ryutaro Kimura
September 07, 2023
Programming
0
250
可用性セットを検証してみた@GEEKERS NITE #3
イベント:GEEKERS NITE #3(
https://geekersnites.connpass.com/event/294145/
)
初社外LTです!
Ryutaro Kimura
September 07, 2023
Tweet
Share
More Decks by Ryutaro Kimura
See All by Ryutaro Kimura
bUnitを救いたい@Fukuoka.NET #25
ryutarokimura
0
180
Azureユーザー、AWSの話分かりたい@JAWS Festa 懇親会LT
ryutarokimura
0
110
Other Decks in Programming
See All in Programming
『品質』という言葉が嫌いな理由
korimu
0
160
お前もAI鬼にならないか?👹Bolt & Cursor & Supabase & Vercelで人間をやめるぞ、ジョジョー!👺
taishiyade
5
3.9k
Grafana Loki によるサーバログのコスト削減
mot_techtalk
1
120
SwiftUI Viewの責務分離
elmetal
PRO
1
220
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
130
Amazon Bedrock Multi Agentsを試してきた
tm2
1
280
TokyoR116_BeginnersSession1_環境構築
kotatyamtema
0
110
CI改善もDatadogとともに
taumu
0
110
Linux && Docker 研修/Linux && Docker training
forrep
24
4.5k
Honoとフロントエンドの 型安全性について
yodaka
5
330
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
240
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
340
Featured
See All Featured
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Adopting Sorbet at Scale
ufuk
74
9.2k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Building an army of robots
kneath
302
45k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Language of Interfaces
destraynor
156
24k
Transcript
可用性セットを検証してみた ~仮想マシンはうまく冗長化されているの?~ 木村 龍太郎 2023/09/06 GEEKERS NITE #3
2 自己紹介 ⚫ 木村龍太郎 (きむら りゅうたろう) ⚫ オルターブース 23卒 新入社員
⚫ Azure AD B2Cなんもわからん @ryutaro_1019
みなさん、可用性セット使っていますか?
4 可用性セット アンケート ⚫ 「設定して複数のVMのスペアありますよ」 ⚫ 「サーバーに障害があってサービスが停止したら大変だからね」 では 冗長化されているVMの配置も視認しますか?
5 今日のメインテーマ 可用性セットの説明 可用性セットの検証 可用性セットの意味を知ってるだけの状態から 可用性セットの動き・仕組みを理解する 検証してみたら意外な結果に
軽くおさらい
7 可用性セット(Availability Sets)とは ⚫ 同じデータセンター内で仮想マシン(VM)を冗長化する構成 東日本リージョン データセンター②(埼玉) データセンター①(東京) この中での冗長 VM
:それぞれのVMで同じアプリケーションを動かす。 ラック
8 可用性セットとは ⚫ 同じデータセンター内で仮想マシン(VM)を冗長化する構成 ⚫ 電源に障害が発生したりメンテナンスがあってもサービス(VM)の継続可能 東日本リージョン データセンター②(埼玉) データセンター①(東京) メンテ中
他VMはOK
9 冗長化の方法 障害ドメイン(FD:Fault Domain) 電源とネットワークを共有する仮想マシンの 範囲。最大 3。 =サーバーラック 更新ドメイン(UD:Update Domain)
メンテナンス等でハードウェアの再起動が必要 になった時に影響を受ける範囲。最大 20。 =物理サーバー UD① FD① UD③ UD⑤ VM6, FD2, UD5の例 UD② FD② UD④
さて問題です
11 問題 2つ 仮想マシンが10台あります。更新ドメイン9, 障害ドメイン3の時 1. 計画的メンテナンスが起きた場合、最大で何台の仮想マシンが 同時に停止する可能性がありますか? 2. 電源トラブルが起きた場合、最大で何台の仮想マシンが同時に
停止する可能性がありますか? 配置はこう?
12 問題1の考察 仮想マシンが10台あります。更新ドメイン9, 障害ドメイン3の時 1. 計画的メンテナンスが起きた場合、最大で何台の仮想マシンが 同時に停止する可能性がありますか? メンテ中 A. 2台?
13 問題2の考察 仮想マシンが10台あります。更新ドメイン9, 障害ドメイン3の時 2. 電源トラブルが起きた場合、最大で何台の仮想マシンが同時に 停止する可能性がありますか? A. 4台?
よく考えてみる
15 (前提)仮想マシンはちゃんと均等に配置されてる? ⚫ 更新ドメインが不均等かも? 仮想マシンの配置次第で最大停止数が変わる ⚫ VMの配置が不均等? 電源障害時に余計落ちてしまう メンテ時に余計落てしまう
16 公式ドキュメントを確認 ⚫ 最初の仮想マシンと同じ更新ドメインに配置される 引用:可用性セットの概要
ほんとかなぁ^^
18 仮想マシンの配置を確認する方法を発見 ⚫ Azureポータル上で確認できるらしい ⚫ CLIもあった 引用:https://changineer.info/azure/azure_compute/azure_compute_availability_set.html#toc11
公式ドキュメントの検証をしよう
20 仮説? 更新ドメイン数を超えるVMは 最初のVMと同じ更新ドメインに配置される 例えば… VM10、UD9、FD3の場合 左図みたいに10台目は 最初の更新ドメインに配置されるだろう
21 検証方法 1. リソースグループ作成 2. 可用性セットを作成する 3. 仮想マシンを10台作成する 4. 仮想マシンの配置(可用性セット)を確認
5. リソースグループごと削除する ※VMのクオーターに引っかかるので 6. 1~5を3回繰り返す。 (本当は確率が収束するくらい回したかった)
22 可用性セットの作成 ⚫ リソースグループを指定すればOK
23 可用性セットへ仮想マシンを作成 ⚫ Azure CLI×Bashで一発 ⚫ az vm createでVMを1台作成できる。Bashのfor文で10回実行。(約10分) ⚫
“リソースグループ”と”可用性セット”の先を指定すればOK
24 仮想マシンの配置を確認 ⚫ 可用性セットの[Virtual Machines]から確認可能
None
おや???
27 結果 ⚫ VMは均等に割り当てられていたが、、、? ⚫ 余った10台目は最初の更新ドメイン(UD0)に割り当てられる❌ ⚫ 余った10台目は2番目の更新ドメイン(UD1)に割り当てられる⭕ ※3回ともすべて同じ結果 FD0
FD1 FD2 UD0 UD3 UD6 UD1 UD4 UD7 UD2 UD5 UD8 UD1
28 公式ドキュメントと違くない?? ⚫ おかしな点 2つ ⚫ 最初の仮想マシンと同じ更新ドメイン(=UD0)に配置されてない ⚫ (UD1がFD0とFD1に存在する)
29 状況を変えてみる(VM7、FD2、UD5) ⚫ 公式ドキュメント通りの状況だと、記述通りの結果に FD0 FD1 UD0 UD3 UD6 UD1
UD4 UD7
他にも検証したかったがタイムアウト
問題に戻る
32 問題1の答え 仮想マシンが10台あります。更新ドメイン9, 障害ドメイン3の時 1. 計画的メンテナンスが起きた場合、最大で何台の仮想マシンが 同時に停止する可能性がありますか? A. たぶん2台?😅 FD0
FD1 FD2 UD0 UD3 UD6 UD1 UD4 UD7 UD2 UD5 UD8 UD1
33 問題2の答え 仮想マシンが10台あります。更新ドメイン9, 障害ドメイン3の時 2. 電源トラブルが起きた場合、最大で何台の仮想マシンが同時に 停止する可能性がありますか? A. 4台です😊 FD1
FD2 UD1 UD4 UD7 UD2 UD5 UD8 FD0 UD0 UD3 UD6 UD1
34 まとめ ⚫ わかったこと(検証の余地はあるが一旦) ⚫ 公式ドキュメントの間違いかもしれない点を見つけてしまった ⚫ 更新ドメイン数より多い仮想マシンは最初の更新ドメインから割り当て られるとは限らない ⚫
とはいえ、VMと更新ドメインは、障害ドメインに均等に割り 当てられるので、冗長化は不利益なくされてる? ⚫ 学び ⚫ 検証って大事 ⚫ 複数リソース作成する場合 → ポータル < CLI
35 おまけ 計画的メンテナンスのタイミングは自分でいじれる ⚫ オプション ⚫ 今すぐ開始:セルフサービスメンテナンス期間内であれば、メンテナンス を手動で開始できる ⚫ スケジュール:時間を設定して実行
etc… 次回、手動で計画的メンテナンスを起こして可用性の検証(泣)