Azure Fv2シリーズ仮想マシンのストレージベンチマーク
仮想マシンのFシリーズに第2世代の「Fv2」シリーズが登場していました。お待ちかねのSkylake搭載で最大3.7GHz(ターボブースト時)とのこと。
Azure 最速の VM「Fv2」シリーズの提供を開始 – IT プロフェッショナルのみなさまへ
最大構成時のIOPSが、キャッシュ付きローカルディスクとはいえ128,000という記述を見かけたので、さっそく恒例のベンチマークを。 このあたりの記事の続きです。
そもそもスペックは?
このあたりをどうぞ。2コア、4GiBメモリ、4,000IOPSから、72コア、144GiB、144,000IOPSまで。
ベンチマーク
F2s(2コア)、F16s(16コア)、F72s(72コア)、の3つのインスタンスをWindowsで立てました。 Cドライブ、Dドライブのほか、FドライブにP30のPremium Storageを接続して測定してみたのですが、結果だけ見ると(ディスクの)スペック以上の値が出てます。
IOPSのまとめ
インスタンスのサイズに比例して見事に上がってます。 FドライブのRandom Writeに実力値が出てますが、相当大きなキャッシュが積まれているようですね。
▼Q= 32,T= 1
サイズ | 測定項目 | Cドライブ | Dドライブ | Fドライブ(P30) | Fドライブ(P30) ※32GiBデータで計測 |
---|---|---|---|---|---|
F2s_v2 | Random Read 4KiB | 4,111 | 4,314 | 4,119 | |
Random Write 4KiB | 4,121 | 4,322 | 3,296 | ||
F16s_v2 | Random Read 4KiB | 32,960 | 33,165 | 32,958 | 32,951 |
Random Write 4KiB | 32,960 | 33,151 | 5,117 | 5,120 | |
F72s_v2 | Random Read 4KiB | 134,593 | 143,956 | 131,560 | 111,246 |
Random Write 4KiB | 130,902 | 143,805 | 5,108 | 5,119 |
こちらは参考までに、Q=1 の結果も載せておきます。
▼Q= 1,T= 1
サイズ | 測定項目 | Cドライブ | Dドライブ | Fドライブ(P30) | Fドライブ(P30) ※32GiBデータで計測 |
---|---|---|---|---|---|
F2s_v2 | Random Read 4KiB | 3,847 | 3,889 | 3,679 | |
Random Write 4KiB | 4,085 | 4,261 | 503 | ||
F16s_v2 | Random Read 4KiB | 32,152 | 7,367 | 16,575 | 10,898 |
Random Write 4KiB | 31,969 | 14,137 | 544 | 515 | |
F72s_v2 | Random Read 4KiB | 24,938 | 7,045 | 21,658 | 27,792 |
Random Write 4KiB | 23,508 | 20,428 | 413 | 417 |
F2s(2コア、4GiBメモリ)
Cドライブ
Dドライブ
Fドライブ
F16s(16コア、32GiBメモリ)
Cドライブ
Dドライブ
Fドライブ
F72s(72コア、144GiBメモリ)
Cドライブ
Dドライブ
Fドライブ
Azureのクラシックポータルで扱えなくなるサービス(予定)
(2017/12/08 追記)
クラシックポータル終息のお知らせが公式にアナウンスされました。
Azure portal update for classic portal users
we will be sunsetting the Azure classic portal on January 8, 2018.
ということで、2018年1月8日から段階的に廃止していくということでしょうか。
(追記終わり)
Azureのクラシックポータルを操作していると、ことあるごとに「xx月xx日以後は新しいポータルのみになるよ」というメッセージが出てくるようになったので、左メニューをひととおり開いて確かめてみました。
結果として、こんな感じでした。
- 仮想ネットワーク: 2017/10/05
- Service Bus: 2017/10/05
- 仮想マシン: 2017/11/15
- クラウドサービス: 2017/11/15
- Recovery Services: 2017/11/30
- Azure Active Directory: 2017/11/30 (2018/1/8 に変わってました: 2017/12/7追記)
- Visual Studio Team Services: 2017/11/30
ストレージや管理証明書、共同管理者の設定などは既に新しいポータルに移行済みですね。 いよいよ秒読みですかねぇ。
Ignite 2017 で気になったAzure新機能
Ignite 2017 にあわせて大量のAzureアップデートが発表されましたね。 こちらのリリース一覧から、自分用の後で読むリストも兼ねて気になったところをピックアップしてみました。
Cloud Platform Release Announcements for September 25, 2017 | Cloud Platform News Bytes Blog
仮想マシン関連
- Availability Zoneが明示的に指定できるようになりました。
- Gシリーズ、HシリーズのVMを値下げ
ネットワーク関連
- DDoS Protection がプレビュー。
- Traffic Managerも強化、「Real User Measurements」「Traffic View」
- Point to Site VPN がMacをサポート。
- ロードバランサーにStandard Tierが登場、HA Portsで柔軟な設定もやりやすく。Multi-Az対応も?
- VNet Peering がリージョン間で張れるように。リージョン間トラフィックも閉域網。
- Azure StorageとSQL DatabaseがVNet内にエンドポイントを持てるように。
- NSGで「Storage」「SQL」といったタグが指定できるようになった。
- Application Security Groupsが登場、NSGより抽象的な層でグループを定義できる。
料金関連
その他
- Azure Batch のレンダリングサービスがGAしました。
- Azure Cloud SHellにPowerShellが登場、コマンドレットもちょっと短く。
- Azure Data Box がリミテッドプレビュー(いわゆるSnowball的なアプライアンス?)
- Azure Files Sync がプレビュー。ファイルサーバーにエージェントを入れるとティアリングしてくれるもの。
- Azure ML Workbenchが登場、クロスプラットフォームなIDE的アプリ、作ったモデルをDocker Imageとして出力できる。
たくさんありますねー。
クラシックのAzure Backup をリソースマネージャーにアップグレードする
既に「2017年10月31日に自動的にアップグレードされるよ」とアナウンスされている件ですが、都合により手動でアップグレードしてみました。アナウンスはこちら。
手順はこちらの記事にあるとおりなので、差分というかハイライトだけ。
- 「アップグレードする前に」の記述はよく読んでから始めましょう。
- Azure PowerShell を最新化しましょう。手順は.msi での更新を案内していますが、Web Platform Installer を使った人はそちらから。
- 手順のサイトからリンクされている .ps1 をダウンロードして実行します。ファイルはこれ → https://aka.ms/vaultupgradescript2
- アップグレード中はプログレスバーが出たりしてプロンプトが占有されますのでご注意を。
- アップグレード後、バックアップポリシー内のタイムゾーンがブランクの状態だったので、念のため指定した方がよさそうです。
実行するコマンドはこんな感じです。
RecoveryServicesVaultUpgrade-1.0.2.ps1 -SubscriptionID [サブスクリプションID] -VaultName "バックアップコンテナー名:" -Location "ロケーション" -ResourceType BackupVault -TargetResourceGroupName "アップグレード後のリソースグループ名"
タイムゾーンの件はこんな感じ。手元の環境では一応JSTでジョブが実行されていたようです。自動アップグレードの時はどうなるんでしょうね。
(追記)
新しい Recovery Services はバックアップの「Pre-Check」が行われるようで、今回の環境であれば「VMのエージェントが最新版じゃない」ってwarningが出てました。クラシックのAzure Backupを使っている環境だとエージェントも古いままということもそれなりにありそうなので、この機会に更新しておきましょう。
Pre-Check についてはこちらのアナウンスをどうぞ。
Linuxのエージェント更新はこちらから。タイトルはGitHubとなってますが、中身はapt-getやyumの手順です。
Azure CLI 2.0 で仮想マシンのイメージを作る & イメージから仮想マシンを作る
少し手を加えた仮想マシンをイメージ化して展開、みたいなことをAzure CLI 2.0で行う手順です。
例によってAzure Cloud Shellを使います。
サブスクリプションの選択
(2017/08/01 追記)
複数のサブスクリプションを扱っている場合には明示的に指定した方が間違いが無いですね。
# 利用可能なサブスクリプションの一覧を見る az account list -o table # サブスクリプションを選択する az account set --subscription [Subscription Id]
(追記ここまで)
仮想マシンのイメージを作る
対象のホストにログインしてdeprovisionを行います。 イメージ化(=汎用化)の前準備で、以下の設定が消えますのでご留意のほど。
- 全てのSSHホストキー
- /etc/resolv.conf 内のネームサーバー構成
- /etc/shadow のrootパスワード
- キャッシュされたDHCPクライアントのリース
- ホスト名を localhost.localdomain にリセット
waagentのdeprovisioningオプションについて詳しくはこちらから。
sudo waagent -deprovision+user -force
この後はすべてAzure CLI上での操作です。
汎用化した後は起動できなくなりますのでご注意を。起動できなくなると困る場合は、先に仮想マシンを複製しましょう(末尾に参考URL記載)。
# 仮想マシンの停止 az vm deallocate --resource-group myRg --name myVm # 仮想マシンの汎用化 az vm generalize --resource-group myRg --name myVm # イメージの生成 az image create --resource-group myRg --name myImage --source myVm
イメージが生成できたら、元の仮想マシンは削除しても構いません。
イメージから仮想マシンを作る
続いてイメージから仮想マシンを作ります。 NICと、それに紐付く諸々はあらかじめ用意されている前提です。諸々の生成についてはこちらをどうぞ。 http://asazure.hatenablog.jp/entry/2017/07/31/213107
セキュリティグループとPublic IP、VNETはNICの側で指定しますので、仮想マシン生成時には指定できません。
# 仮想マシンの生成 (パスワード認証) az vm create --name myVm --resource-group myRg --location japaneast --image myImage --size Standard_DS1 --nics myNic --admin-username myAdminName--admin-password myAdminPassword # 仮想マシンの生成 (公開鍵認証) az vm create --name myVm --resource-group myRg --location japaneast --image myImage --size Standard_DS1 --nics myNic --admin-username myAdminName--ssh-key-value ~/.ssh/id_rsa.pub
(参考) 汎用化しない仮想マシンの複製
そのままコピーする場合はこちらをどうぞ。Managed Disksを複製して、NIC等のリソースは新しく用意して作る手順です。Managed Disksのおかげでだいぶシンプルになりましたね。
Azure CLI 2.0 から手作業でVMを作る
ググると古い情報がヒットしたりしていまいち探しづらい気がしたのでまとめてみました。
イメージの元にするような用途を想定して、パブリックIPアドレスが1つだけ付いてsshができるLinux仮想マシンを立ち上げるところまで。ポータル上から使える Azure Cloud Shell から Azure CLI 2.0 を使います。
Azure Cloud Shell の使い方はこちらから。
ワンライナーで簡単に作るにはこちらの手順をどうぞ。
テンプレ用であればこのワンライナーでも事足りるのですが、今回は動作を理解することも兼ねているのと「名前を付けられるものには付けておきたいよね」ということで、暖かみを感じられる手組でやってみましょう。
サブスクリプションの選択
(2017/08/01 追記)
複数のサブスクリプションを扱っている場合には明示的に指定した方が間違いが無いですね。
# 利用可能なサブスクリプションの一覧を見る az account list -o table # サブスクリプションを選択する az account set --subscription [Subscription Id]
(追記ここまで)
リソースグループの作成
az group create --name [リソースグループ名] --location [ロケーション]
既存のリソースグループを使う場合には不要です。
ロケーションの指定は、特に何も無ければjapaneastかjapanwestあたりで構わないかと思います。ロケーション一覧の取得方法は末尾に。
リソースグループのロケーションと中に入れるリソースのロケーションを別にすることもできますが、見た目としても分かりづらいですし、JSONのテンプレートからデプロイするようなときには「リソースグループと同じ場所」という指定をすることも多いので、できるだけ揃えた方が良いと思います。
仮想ネットワークの作成
シンプルにサブネットが1つだけある仮想ネットワークを作ります。
az network vnet create --name [仮想ネットワーク名] --resource-group [リソースグループ名] --location [ロケーション] --address-prefix [仮想ネットワークのアドレス帯/マスク] --subnet-name [サブネット名] --subnet-prefix [サブネットのアドレス帯/マスク] (例) az network vnet create --name myVnet --resource-group myRg --location japaneast --address-prefix 192.168.0.0/16 --subnet-name subnet1 --subnet-prefix 192.168.1.0/24
パブリックIPアドレスの作成
クラシック仮想マシンの時代はIPアドレスを確保する方法や割り当て状況によって料金が違っていたのですが、いまは確保する毎に一律で料金がかかるようなので、オプションはお好みで指定して大丈夫です。
az network public-ip create --name [IPアドレス名] --resource-group [リソースグループ名] --location [ロケーション] --allocation-method [割り当て方法(動的/静的)] --dns-name [DNS名] (例) az network public-ip create --name myPip --resource-group myRg --location japaneast --allocation-method static --dns-name myVm1
セキュリティグループとルールの作成
1行目でセキュリティグループを作成して、2行目でルールを設定しています。
例ではssh用にインバウンドの22番ポートを開放しています。
az network nsg create --name [セキュリティグループ名] --resource-group [リソースグループ名] --location [ロケーション] az network nsg rule create --name [ルール名] --nsg-name [セキュリティグループ名] --resource-group [リソースグループ名] --access [Allow/Deny] --protocol [Tcp/Udp] --direction [Inbound/Outbound] --priority 1000 --source-address-prefix [Internet/発信元アドレス] --source-port-range ["*"/発信元ポート] --destination-address-prefix ["*"/宛先アドレス] --destination-port-range ["*"/宛先ポート] (例) az network nsg create --name myNsg --resource-group myRg --location japaneast az network nsg rule create --name ssh --nsg-name myNsg --resource-group myRg --access allow --protocol Tcp --direction Inbound --priority 1000 --source-address-prefix Internet --source-port-range "*" --destination-address-prefix "*" --destination-port-range 22
NICの作成と仮想ネットワークへの接続、セキュリティグループやIPアドレスの割り当て
今まで作ったものをまとめてくっつけながらNICを生成します。
プライベートIPアドレスは、オプションを指定しなければ動的になります。ここも費用には関係しませんのでお好みで(どちらも無料)。
本番用だと、LBへの接続もここで行います。
az network nic create --name [NIC名] --resource-group [リソースグループ名] --vnet-name [NICを接続する] --subnet [サブネット名] --network-security-group [セキュリティグループ名] --public-ip-address [IPアドレス名] --private-ip-address [プライベートIPアドレス(固定する場合)] (例) az network nic create --name myNic --resource-group myRg --vnet-name myVnet --subnet subnet1 --network-security-group myNsg --public-ip-address myPip --private-ip-address 192.168.1.5
仮想マシンの作成
ここまでに作ったリソースを元にして仮想マシンを作成します。
この例ではAzure側で用意されているイメージから作っています。イメージ名には自作イメージも指定できます。
デフォルトで Managed Disks で作られます。オプションで明示的に指定するとUnmanaged Disksで作れますが、Managed Disksに流行って欲しいのでそちらは割愛。
az vm create --name [仮想マシン名] --resource-group [リソースグループ名] --location [ロケーション] --image [イメージ名] --size [仮想マシンのサイズ] --nics [NIC名] --admin-username [OSユーザー名] --admin-password [OSパスワード] az vm create --name myVm1 --resource-group myRg --location japaneast --image UbuntuLTS --size Standard_DS1 --nics myNic --admin-username adminuser --admin-password admin.password
あとは完成までしばらくお待ち下さい。Linuxであれば1~2分程度でデプロイ完了です。
パスワードでは無く公開鍵認証を行う場合は「–admin-password」の代わりに「–ssh-key-value ~/.ssh/id_rsa.pub」のように公開鍵を指定して下さい。
おまけ: 各種一覧の取得方法
仮想マシンサイズの一覧はこんな感じで取得出来ます。ロケーションの指定は必須です。
az vm list-sizes --location japaneast -o table
使えるイメージの一覧はこんな感じで取得出来ます。
# ざっくり新しめのイメージを表示 az vm image list -o table # 利用可能な全てのイメージを表示 ※非常に時間がかかります az vm image list --all -o table # パブリッシャーがマイクロソフトの東日本にあるUbuntuのイメージ全て az vm image list --offer Ubuntu --all --location japaneast --publisher Microsoft -o table
使えるロケーション一覧の取得はこちらから。カレントのサブスクリプションで利用できるロケーションの一覧が表示されます。
az account list-locations -o table
今回は割愛しますが、オリジナルイメージの作り方はこちら。 https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/capture-image
Azure Container Instances が登場しましたね
急に登場したような気がするのですが「Azure Container Instances」のパブリックプレビューが始まっていました。 ホストVM無しでいきなりコンテナが動かせるというもの。また楽しそうなサービスが増えてしまいましたね。
既にいくつも日本語の記事が投稿されて、盛り上がってますね。
Azure Container Instances | ブチザッキ
Azure Container Instances は Hypervisor レベルでの分離を備えた次世代のコンテナ実行環境 - しばやん雑記
Azure Container Instances が出た! - 世界のやまさ
何番煎じか分かりませんが、自分用のメモも兼ねて記録しておきます。
対応リージョンは West US, East, US, West Europe の3つ。東南アジアもまだのようですね。
料金体系はこちら。 作成リクエスト毎に料金がかかるほか、メモリはGB/秒で、CPUはコア/秒で料金が発生します。メモリとCPUコア数はコンテナ作成時に指定できます。 1コア/1.5GBメモリで10,479円/月なので、立ち上げっぱなしだとVMよりだいぶ高いですね。
Pricing - Container Instances | Microsoft Azure
基本的なチュートリアルはこちらから。
Create your first Azure Container Instances container | Microsoft Docs
チュートリアルにある「aci-helloworld」程度だと数秒で起動してきます。リソースプロバイダーは「Microsoft.ContainerInstance」でした。IPアドレスも内包しており、単独のリソースとしては作られません。
オーケストレーターは含まれていません。 同時に公開された「Azure Container Instances Connector for Kubernetes」を使うと、既存のK8sクラスタのノードとしてACIを使うことができます。
いい感じにプリミティブで扱いやすそうなサービスが出てきましたね。今後が楽しみです。