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
390
可用性セットを検証してみた@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
290
Azureユーザー、AWSの話分かりたい@JAWS Festa 懇親会LT
ryutarokimura
0
120
Other Decks in Programming
See All in Programming
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
6
690
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
220
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
Python’s True Superpower
hynek
0
110
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
1
130
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
280
生成AIを活用したソフトウェア開発ライフサイクル変革の現在値
hiroyukimori
PRO
0
110
SourceGeneratorのススメ
htkym
0
200
Metaprogramming isn't real, it can't hurt you
okuramasafumi
0
100
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
300
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
180
The Pragmatic Product Professional
lauravandoore
37
7.1k
Why Our Code Smells
bkeepers
PRO
340
58k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
180
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
210
Visualization
eitanlees
150
17k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
250
Technical Leadership for Architectural Decision Making
baasie
2
250
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Rails Girls Zürich Keynote
gr2m
96
14k
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… 次回、手動で計画的メンテナンスを起こして可用性の検証(泣)