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
230
可用性セットを検証してみた@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
170
Azureユーザー、AWSの話分かりたい@JAWS Festa 懇親会LT
ryutarokimura
0
100
Other Decks in Programming
See All in Programming
Androidアプリのモジュール分割における:x:commonを考える
okuzawats
1
260
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
1.3k
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
530
Package Traits
ikesyo
1
150
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
200
php-conference-japan-2024
tasuku43
0
410
バグを見つけた?それAppleに直してもらおう!
uetyo
0
210
BEエンジニアがFEの業務をできるようになるまでにやったこと
yoshida_ryushin
0
100
Go の GC の不得意な部分を克服したい
taiyow
3
990
ゆるやかにgolangci-lintのルールを強くする / Kyoto.go #56
utgwkk
2
790
MCP with Cloudflare Workers
yusukebe
2
270
Zoneless Testing
rainerhahnekamp
0
150
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
521
39k
4 Signs Your Business is Dying
shpigford
182
21k
Optimizing for Happiness
mojombo
376
70k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
RailsConf 2023
tenderlove
29
960
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Designing Experiences People Love
moore
139
23k
Faster Mobile Websites
deanohume
305
30k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
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… 次回、手動で計画的メンテナンスを起こして可用性の検証(泣)