概要
Azure DevTest Labs、最近じわりと維持費が上がった気がしませんか?テスト用のVMをまとめて発行したり管理したりと何かと便利なDevTest Labsですが、便利なだけに維持費が上がると辛いところです。内訳を見ると、どうも Load Balancer の費用がかさんでいるような・・・?
という問題を解決した話です。
最初に結論まとめ
管理上の必要が無ければ、発行する時のネットワーク設定のIPを「共有」ではなく「パブリック」にしましょう。これで、 Load Balancer の費用がかさまなくなります。(代わりにIPアドレスの費用が掛かりますが、 Load Balancer と比べるとだいぶ小さいです)
パブリックIPにした場合でも、NSGでの管理をVMごとにやる必要はありません。仮想ネットワークは1つにまとめられるので、NSGを仮想ネットワークのサブネットに入れておけば、引き続き全てのVMに対してまとめてNSGでの管理をすることもできます。
説明
発端
DevTest Labs をいつものように使っていたつもりですが、VMをいくつか停止状態のまま置いておいたら、妙に費用が掛かっています。なんだろう・・・?ということで、調べてみました。
停止状態なのでVMのストレージの費用がかかるのは当然ですが、以前はこんな費用にはなっていませんでした。どうも割合としてはストレージよりも、 Load Balancer の費用の方が大きいようです。
原因は
そこで、最近こういう警告が出ていたのを思い出しました。安価な Basic が無くなって Standard だけになるという話です。
Upcoming Retirements on Sept 30, 2025:
Basic Load Balancers and Public IPs: Upgrade existing Basic Load Balancers and Public IPs to Standard SKU. To avoid disruptions post-upgrade, do not rename the load balancer during the upgrade. For more information, see the official announcement or read our upgrade by name guidance.
Default Outbound Access for Private IP VMs: Find out how you can configure your outbound access here for your VMs to ensure continued access.
DevTest Labs でIPアドレス「共有」でVMを作成すると、パブリックIPは1つだけのままでVMに対してポートごとの通信の振り分けをしてくれるので、ネットワーク管理が楽になります。しかしその場合、VMを1つ作るごとに、Load Balancer が1つ作成されます。
見てみると、この Load Balancerが Standard SKU になっていて、結構な費用になっていました。多分この仕組みは前から変わっていないものの、 Load Balancerが Basic SKU の時は無料だったので問題になっていなかったのだと思います。
対策は
VM作成時に「共有」ではなく「パブリック」にすると、VMごとにパブリックIPが1つ振られる形になりますが、Load Balancer は作成されません。
Azure計算機で1ヶ月料金をざっくりと計算してみると・・・(大まかな試算なので、実際の料金は別途調べてください)
- Load Balancer, Standard SKU
- \2,636
- IP Address, Standard SKU
- \527
- Managed Disks, Standard SSD 128GB
- \1,415
Load BalancerとPublic IPではだいぶ費用が違ってきます。Load Balancerは普通の Windows VM のストレージよりも高いですね。
ということは、不都合が無ければ「パブリック」にした方が良さそうです。
「パブリック」にデメリットは無い?
少なくとも私のような使い方の範囲では特にデメリットは無く、唯一気になるNSGの問題も解決可能です。
機能的には、外部公開されているグローバルIPアドレスが1つしか無い「共有」に対して、VMごとに外部公開のグローバルIPアドレスが作成されるようになるため、グローバルIPアドレス単位で何らかの管理をしている場合は問題になります。しかし、テスト用のVMを便利に作る程度の用途であれば、そこまでの管理はしておらずデメリットにならないケースが多いのではないかと思います。(該当する人がいたらすみません、この記事は忘れてください)
一番気になるのは、 NSG (Network Security Group) です。これを使用してアクセス可能なIPやポートのカスタム制限をしていた場合、VMごとにNSGを個別に割り当てないといけないのでしょうか?それは見落としも出そうですし、手間が多い・・・。
いいえ、そんな事はありません。手軽な方法があります。
NSGを個別に設定しなくて良い方法
DevTest Labs の場合、VM作成の度に仮想ネットワークを作成する動きにはなりません。VM作成時のネットワーク設定で選択した仮想ネットワークとサブネットへ、VMが割り当てられます。
DevTest Labs 作成時点では、仮想ネットワークは1つだけです。つまり、仮想ネットワークを追加していなければ、VM作成時には必ずこの仮想ネットワークへ割り当てられます。
なので、この仮想ネットワークのサブネットに対してNSGを割り当てておけば、追加される全てのVMが制御対象になります。VMごとの設定は不要です。
まとめ
DevTest Labs はテスト用のVMをポンポンと作ったり消したりする用途ではとても便利ですが、VMを停止状態で放置した場合の維持費が知らないうちに上がっていました。知らないうちにと言っても警告は出ていたのですが、それがどの費用にどれほど効いてくるのかはピンと来ていませんでした。
同じ状態の人は多いのではないかと思うので、この辺りを見直して、余計な費用が掛からないようにしていきましょう!