浅草橋青空市場

Microsoft Azure のニュースや情報を中心にあれこれと

Azure Fv2シリーズ仮想マシンのストレージベンチマーク

仮想マシンのFシリーズに第2世代の「Fv2」シリーズが登場していました。お待ちかねのSkylake搭載で最大3.7GHz(ターボブースト時)とのこと。

Azure 最速の VM「Fv2」シリーズの提供を開始 – IT プロフェッショナルのみなさまへ

最大構成時のIOPSが、キャッシュ付きローカルディスクとはいえ128,000という記述を見かけたので、さっそく恒例のベンチマークを。 このあたりの記事の続きです。

asazure.hatenablog.jp

asazure.hatenablog.jp

そもそもスペックは?

このあたりをどうぞ。2コア、4GiBメモリ、4,000IOPSから、72コア、144GiB、144,000IOPSまで。

docs.microsoft.com

ベンチマーク

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ドライブ f:id:yhara90:20171026214127p:plain

Dドライブ f:id:yhara90:20171026214149p:plain

Fドライブ f:id:yhara90:20171026214202p:plain

F16s(16コア、32GiBメモリ)

Cドライブ f:id:yhara90:20171026214219p:plain

Dドライブ f:id:yhara90:20171026214237p:plain

Fドライブ f:id:yhara90:20171026214249p:plain

F72s(72コア、144GiBメモリ)

Cドライブ f:id:yhara90:20171026214307p:plain

Dドライブ f:id:yhara90:20171026214318p:plain

Fドライブ f:id:yhara90:20171026214329p:plain

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日以後は新しいポータルのみになるよ」というメッセージが出てくるようになったので、左メニューをひととおり開いて確かめてみました。

f:id:yhara90:20171004124003p:plain

結果として、こんな感じでした。

  • 仮想ネットワーク: 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 VPNMacをサポート。
  • ロードバランサーにStandard Tierが登場、HA Portsで柔軟な設定もやりやすく。Multi-Az対応も?
  • VNet Peering がリージョン間で張れるように。リージョン間トラフィックも閉域網。
  • Azure StorageとSQL DatabaseがVNet内にエンドポイントを持てるように。
  • NSGで「Storage」「SQL」といったタグが指定できるようになった。
  • Application Security Groupsが登場、NSGより抽象的な層でグループを定義できる。

料金関連

  • Reserved VM Instances でVMが割引になります(いわゆるRI)。
  • Cloudyn が「Cost Management」となって無料で使えます(コスト管理)。

その他

  • 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.microsoft.com

手順はこちらの記事にあるとおりなので、差分というかハイライトだけ。

docs.microsoft.com

  • 「アップグレードする前に」の記述はよく読んでから始めましょう。
  • Azure PowerShell を最新化しましょう。手順は.msi での更新を案内していますが、Web Platform Installer を使った人はそちらから。
  • 手順のサイトからリンクされている .ps1 をダウンロードして実行します。ファイルはこれ → https://aka.ms/vaultupgradescript2
  • アップグレード中はプログレスバーが出たりしてプロンプトが占有されますのでご注意を。
  • アップグレード後、バックアップポリシー内のタイムゾーンがブランクの状態だったので、念のため指定した方がよさそうです。

実行するコマンドはこんな感じです。

RecoveryServicesVaultUpgrade-1.0.2.ps1 -SubscriptionID [サブスクリプションID] -VaultName "バックアップコンテナー名:" -Location "ロケーション" -ResourceType BackupVault -TargetResourceGroupName "アップグレード後のリソースグループ名"

タイムゾーンの件はこんな感じ。手元の環境では一応JSTでジョブが実行されていたようです。自動アップグレードの時はどうなるんでしょうね。 f:id:yhara90:20170828221924p:plain

(追記)

新しい Recovery Services はバックアップの「Pre-Check」が行われるようで、今回の環境であれば「VMのエージェントが最新版じゃない」ってwarningが出てました。クラシックのAzure Backupを使っている環境だとエージェントも古いままということもそれなりにありそうなので、この機会に更新しておきましょう。

f:id:yhara90:20170829003238p:plain

f:id:yhara90:20170829003334p:plain

Pre-Check についてはこちらのアナウンスをどうぞ。

azure.microsoft.com

Linuxのエージェント更新はこちらから。タイトルはGitHubとなってますが、中身はapt-getやyumの手順です。

docs.microsoft.com

Azure CLI 2.0 で仮想マシンのイメージを作る & イメージから仮想マシンを作る

少し手を加えた仮想マシンをイメージ化して展開、みたいなことをAzure CLI 2.0で行う手順です。

CLIによる仮想マシンの作り方はこちらからどうぞ。

asazure.hatenablog.jp

例によってAzure Cloud Shellを使います。

docs.microsoft.com

サブスクリプションの選択

(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オプションについて詳しくはこちらから。

docs.microsoft.com

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のおかげでだいぶシンプルになりましたね。

docs.microsoft.com

Azure CLI 2.0 から手作業でVMを作る

ググると古い情報がヒットしたりしていまいち探しづらい気がしたのでまとめてみました。
イメージの元にするような用途を想定して、パブリックIPアドレスが1つだけ付いてsshができるLinux仮想マシンを立ち上げるところまで。ポータル上から使える Azure Cloud Shell から Azure CLI 2.0 を使います。

Azure Cloud Shell の使い方はこちらから。

docs.microsoft.com

ワンライナーで簡単に作るにはこちらの手順をどうぞ。

docs.microsoft.com

テンプレ用であればこのワンライナーでも事足りるのですが、今回は動作を理解することも兼ねているのと「名前を付けられるものには付けておきたいよね」ということで、暖かみを感じられる手組でやってみましょう。

サブスクリプションの選択

(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.microsoft.com

既にいくつも日本語の記事が投稿されて、盛り上がってますね。

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を使うことができます。

いい感じにプリミティブで扱いやすそうなサービスが出てきましたね。今後が楽しみです。