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
200
可用性セットを検証してみた@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
150
Azureユーザー、AWSの話分かりたい@JAWS Festa 懇親会LT
ryutarokimura
0
100
Other Decks in Programming
See All in Programming
Functional Event Sourcing using Sekiban
tomohisa
0
110
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
120
3rd party scriptでもReactを使いたい! Preact + Reactのハイブリッド開発
righttouch
PRO
1
610
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
280
CSC509 Lecture 13
javiergs
PRO
0
110
Vapor Revolution
kazupon
2
1.2k
watsonx.ai Dojo #4 生成AIを使ったアプリ開発、応用編
oniak3ibm
PRO
1
230
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
1.2k
Flutterを言い訳にしない!アプリの使い心地改善テクニック5選🔥
kno3a87
1
230
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
3
1.2k
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
3
750
我々のデザインシステムは Chakra v3 にアップデートします
shunya078
2
590
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
31
6.3k
The Cult of Friendly URLs
andyhume
78
6k
Ruby is Unlike a Banana
tanoku
97
11k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Rails Girls Zürich Keynote
gr2m
94
13k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Gamification - CAS2011
davidbonilla
80
5k
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… 次回、手動で計画的メンテナンスを起こして可用性の検証(泣)