Windows Azure Training Kit – December Update

Windows Azure Training Kit が更新されています。

更新内容を抜粋すると以下の通り

  • [New Presentations] 33 updated/new PowerPoint presentations
  • [New Hands-On lab] Running a parametric sweep application with the Windows Azure HPC Scheduler
  • [New Hands-On lab] Running SOA Services with the Windows Azure HPC Scheduler
  • [New Hands-On lab] Running MPI Applications with the Windows Azure HPC Scheduler
  • [New Demo] Node.js On Windows Azure
  • [New Demo] Image Rendering Parametric Sweep Application with the Windows Azure HPC Scheduler
  • [New Demo] BLAST Parametric Sweep Application with the Windows Azure HPC Scheduler
  • [Renamed Lab] Connecting Applications through Windows Azure Service Bus (formerly Introduction to Service Bus Part 1)
  • [Renamed Lab] Windows Azure Service Bus Advanced Configurations (formerly Introduction to Service Bus Part 2)

HPC絡みやNode.js等もあり盛りだくさんですね。

Windows Azure Active Directory ?

どうもWindows Azure AppFabric ACSの部分がカテゴリというかビルディングブロックというかブランドというか、 Windows Azure Active Directory という名前になった様子?

IdPとしての機能は無く、今まで通りACSが主体ですが紛らわしいですねw

SQL Azure 管理ポータル更新 & 150GB化 & 新機能追加!

そういうわけで ブラウザベースの SQL Azure 管理ポータル も新しくなりました。

DBサイズも150GBまで作成できるように拡張されていたり、Federation(シャーディング)やクエリ実行プランの確認、利用状況の把握なども簡単にできます。

凄く便利ですね!

あ、新管理ポータルは出たばかりホヤホヤのSilverlight 5ランタイムが必要なので注意しましょう。

まぁなんていうか門外漢なので淡泊に紹介だけ(ぁ

Windows Azure SDK おさらい

Windows Azure SDK 1.6 でだいぶ名称かわったりしました。わかりにくいですよね?もう少しだけ補足しとこうかなと思います。(以前の投稿の補足ですね)

1. Windows Azure Libraries for .NET 1.6

※Web PIからでもいいのですがダウンロードセンターにも個別で公開されています。

以前の投稿でWindows Azure AppFabric SDKがWindows Azure Libraries for .NET 1.6になった的な話でしたが本当でしょうか。見てみましょう。

実際に単体でインストールすると、以下のファイル群しかインストールされません。

ServiceBusとCacheのみですね。それ以外は無いみたいです。ということで少し内容は変わってますがWindows Azure AppFabric SDKはWindows Azure Libraries for .NET 1.6 になったというのがわかります。
※それ以外が含まれてないという意味で

じゃ次。

2. Windows Azure SDK for .NET

Windows Azure SDK for .NET という名前になったこのSDKは何が含まれてるんでしょう?ちょっとWeb PIの依存関係でも見てましょう。

なんだかいろいろありますねー。このうちWindows Azure EmulatorとWindows Azure Authoring Toolsはなんだか怪しいですね(?)

ではWindows Azure Emulatorから見てみましょう。こいつは文字通りエミュレータのようですね。

インストールが終わるとエミュレータのみインストールされます。

もちろん起動もしますよ!

でも本当はSQL Server 2008 Expressが必要だったり、もう少し依存関係は複雑なはずです。(ちょっと使ったイメージが綺麗じゃなかったですね…)
でもまぁエミュレータに必要なものだけがインストールされるようです。

さてもう一方のWindows Azure Authoring Toolsですが、こちらは以前のSDKのイメージに近いですね。

以前のSDKからEmulatorを抜いたものがWindows Azure Authoring Toolsだと思うといいかも。

で、最後はVisual Studio用のWindows Azure Tools for Visual Studioですね。

これらをまとめてWindows Azure SDK for .NET といってるようです。

実際にはURL Rewrite 2.0とか関連する(依存する)コンポーネントがあるわけですけどザックリとどんなものかはわかるかなと思います。
※ダウンロードセンターにも動作要件が書いてるのでそちらも参照

ま、普通にインストールポイントからインストールしようとすると全部まとめてインストールできますし、あまりこの辺気にしないんですけど。

こまけぇことはキニスンナ!

CSEncryptで$が入力できなかったり

ふとWindows Azure SDK 1.5に付属するCSEncryptコマンドを使って暗号化されたパスワードな文字列を生成して、RDPのユーザーパスワードに設定して配置後、接続しようとするとどうも認証ではじかれる。

管理ポータルから再設定したらちゃんと入れるし、Visual Studioを使用してCSCFGファイル作れば問題なし=CSEncryptが何かおかしい。という状況に陥りました。

打ち間違いもなく、何ならコピペでやってるから絶対同じなのにおかしいなぁ~と思ってよくよく、ゆっくりと入力してみると…

あああ! $ が入力されなイイイイイイ!!

タイプしても、ペーストしてもスルー!!!/(^o^)\

というわけで原因はCSEncryptで(というかPowerShellで?)$が入力できない、ということでした。ちゃんちゃん。

 

いやいやいや、入力できないと困ります。

ということでどうするかといいますと。リダイレクトすればいいわけですねー。

こんなファイルを用意しまして、

という感じで標準入力にリダイレクトしてあげるといいようです。

ちなみにちゃんと$込で暗号化されてるのか不安ですよね。ちょっと復号してみてみましょう。

[Reflection.Assembly]::LoadWithPartialName("System.Security")
$source = "<Base64な暗号化された文字列>"
$thumbprint = "<証明書の拇印>"
$store = new-object System.Security.Cryptography.X509Certificates.X509Store My,CurrentUser
$store.Open("ReadOnly")
$cert = $store.Certificates.Find(0,$thumbprint,0)
$env = new-object Security.Cryptography.Pkcs.EnvelopedCms
$env.Decode([Convert]::FromBase64String($source))
$env.Decrypt($cert)
[Text.Encoding]::UTF8.GetString($env.ContentInfo.Content)

こんな感じのコマンドをPowerShell上で実行してあげると復号して元文字列を取り出せます。
結果は同じ、$もOKですね!

※ちなみに暗号化には公開鍵を、復号には秘密鍵を利用しているので暗号化する際に使用した秘密鍵付証明書が個人用証明書ストアに保存されてないとダメです。逆に言えば秘密鍵付証明書(とパスワード)があれば簡単に復号できちゃいますということで。

今日はこの挙動に悩まされた一日でした…とほほ。

Windows AzureのCTPやらの利用許諾はどうなってるのか

Windows Azureで提供されるCTPやBeta機能のTerms of Use(利用規約)はどうなってるのか?よくわからなかったので中の人に聞いてみました。(2011年10月28日時点の内容です)

image

というわけで、 Windows Azure Platform の法的情報 に準ずるということで、つまるところSLAはないですが利用にあたって商用利用やら本番環境での利用は問題なさそうですね。

image

ベータやらCTPはSLAないよってのは このへん に書いてますと。
ドッグフードもぐもぐしてる方ならよくご存知かと思いますが、当然ながら互換性はないし機能がそのまま使えるかもわからない、サポートやバグ修正の基準もGA(General Availability)レベルじゃないので期待しないでねとのこと。

自己責任で面倒見れない場合はお勧めしませんということです。

image

ただし、今時点でベータ扱いのVM Roleだけは例外。SLAもあります。

あと分かりにくいですけど、SQL Azure Reportingみたいに、CTP利用時に個別にライセンスが表示されるやつはそちらに準拠すると思うので注意ください。

それから、Windows Azure Connect Endpoint Software(クライアント側のアプリ)みたいなのはそれぞれEULA持ってるみたいなので注意。

最後になりましたが、お答えくださいました中の人、さとうなおきさんありがとうございました。

Ruby on Rails を Windows Azure で使用する

Ruby on Rails を Windows Azrue上で使用するためのホワイトペーパーが公開されています。

作者は日本Rubyの会のartonさんです。この間のThe Microsoft Conference 2011 (MSC)のセッションでもartonさんがスピーカーでこのあたりのお話をしていましたので、ご存知の方もいらっしゃるかも。

目次をみてもわかる通り、単にNougakuDoやNougakuDo Companionだけの話に留まらず、技術的にかなり踏み込んでWindows+RoRを解説してるので勉強になるかと。

http.sysで動くEnnou、ステキですね!

また荒井省三さんが裏話というか、背景含めていろいろ書かれるようなのでこちらも期待です。

Twitterでも見かけましたが、ぜひ英訳して欲しいですね!

In-place UpdateがUpdateされました

唐突なアナウンスですがWindows AzureのIn-place Update機能が更新されたようです。まぁWindows Azure側の話なので、こちらで何か修正等があるわけではありませんし、既に展開されてるのでみんな恩恵にあずかれます。

元ネタ:Announcing Improved In-place UpdatesOverview of Updating a Windows Azure Service

変更内容ですが、簡単にいうと以下のケースにおいて今までIn-place Updateが出来なかったのですが、それができるようになりました
( ゚Д゚ノノ"☆パチパチパチパチ

  • 仮想マシンのサイズ変更(スケールアップ/スケールダウン) ※たとえばSサイズからLサイズ、SサイズからXSとか
  • ローカルストレージの増加
  • デプロイされてるロールの追加・削除
  • エンドポイントの数や種類の変更

今まで再デプロイとかVIPスワップで対応しないと行けなかったのがIn-place Updateでもいけるのは嬉しいですね!

※ちなみにIn-place UpgradeなのかIn-place Updateなのかははっきりしてほしいですがw(管理ポータルとか見る限りUpgradeだとは思いますけど元ネタのBlogに合わせてます。どっちでもいいんじゃないですかね)

変更できる項目が元ネタのところにまとまってるのでそのまま持ってこようと思います。

変更内容 In-place Update VIP Swap 再デプロイ
Guest OSのバージョン OK OK OK
.NET Trustレベル OK OK OK
仮想マシンのサイズ OK
注意:仮想マシンのサイズを変更するとローカルデータが破棄されます。
Management APIを使用してこの変更を行う場合は強制フラグが必要です
メモ:Azure SDK 1.5以上が必要
OK OK
ローカルストレージの設定 OK(ただし増加のみ)
メモ:Azure SDK 1.5以上が必要
OK OK
ロールの追加または削除 OK OK OK
特定ロールのインスタンス数 OK OK OK
サービスエンドポイントの数や種類の変更 OK
メモ:Azure SDK 1.5以上が必要
エンドポイントが更新されるので、一時的に可用性が損なわれる(接続できなくなる瞬間がある)
NG OK
ConfigurationSettingsの名前と値 OK OK OK
ConfigurationSettingsの値 OK OK OK
証明書の追加 OK OK OK
既存の証明書の変更 OK OK OK
新しいコードのデプロイ OK OK OK

再デプロイは基本的にまっさらな状態でデプロイになるので、まぁこの辺の制約はないわけで。
VIP SwapもIPアドレス付け替えと考えると、サービスエンドポイントが変わらなければOK(つまりそこだけNG)なので納得ですね。

In-place Updateで仮想マシン(インスタンス)のサイズやロール数を変更する場合は、アップグレードダイアログの「VMサイズまたはロール数の更新を許可する」にチェックを付けましょう。付けずに更新しようとするとエラーになります。(Management APIでやる場合も同様に強制フラグをOnにして実行しましょう)

さて他にも幾つか追加された機能がありまして。

In-place Updateをキャンセル/ロールバックなど細かくコントロールすることができます。
アップグレードモードが自動の場合はこれらはよしなにしてくれますが、マニュアルモードの場合、管理ポータルやManagement APIを使って細かく制御できます。

このへん詳しく載っていますので参照ください↓

 

まとめ

ということで、アップグレード手法をまとめるとこんな感じですかね(コピペですけど)

更新方法 説明 メリット デメリット
In-place 新しいパッケージを今稼働してるインスタンスやサービス上に適用する方法 1つのデプロイで済む
各ロールで2インスタンス以上あれば可用性を維持したまま更新できる
更新してる間、更新対象のロールはダウンするのでサービス提供能力が落ちます。
全インスタンスが更新されるまでの間、新旧2つのバージョンのサービスコードが稼働するので動作に差がでてしまいます
VIP Swap 新しいパッケージを別の領域(ステージング)に展開し、IPアドレスを付け替える方法(サービスをスワップする) サービスダウンタイムや提供機能のロスが無い 少なくとも2つデプロイ(プロビジョニングとステージング)が実行されてる必要がある(スワップするのに必要)
再デプロイ 稼働してるサービスを削除して新しいパッケージをデプロイする方法 1つのデプロイで済む サービス削除するので、提供していたサービスはダウンする。デプロイが変わるとIPアドレスも変わるので、DNSの伝達に時間がかかるケースもある