Windows Azure

Windows Azure上でのRedisについて新しい更新を報告します。
64ビットバージョンを新たにリリースしました。
Windowsフルサポートへ向けた重要な一歩です。
Microsoft Open Technologiesのgithubリポジトリからダウンロードすることができます。

64ビット版のリリースに合わせて、シングルコマンドラインツールを使用して、Windows Azure PaaSソリューション上でRedisを展開できるようにするWindows Azureインストーラーをリリースしました。
ツールはここで提供しており、ステップバイステップのチュートリアルを提供しています。

Microsoft Open Technologiesのパブリックgithubリポジトリを使用して、コミュニティとの会話を実施しています。

現在、2つの追加メジャーステップに向けて準備を進めています。

  • ストレス テスト
    マイクロソフトのテストチームは、すでにテストに取り組んでいますが、Windows Azure上でのRedisの信頼性と保証するために、確実にプロダクション環境下で使用できるようにする前に、より広範囲なストレステストを必要としています。
  • Redis 2.6
    マイクロソフトの開発チームは、Linux上の2.6バージョンに対応するために注力しています。

さらに開発者が簡単にRedisをデプロイできるように、nuGetやWebPIでのサポートを予定しています。これらは、すぐに提供できるように計画しています。

One step closer to full support for Redis on Windows, MS Open Tech releases 64-bit and Azure installer」を抜粋して意訳した投稿です。

Windows Azure

先日リリースされたWindows Azure モバイルサービスの新機能に「バックグラウンド ジョブ (CRONジョブ) を簡単にスケジュールできる機能」があります。
このジョブスケジュールの対象は、Windows Azureモバイルサービスに限定されているわけではなく、対象はクラウドサービスでも、Windows Azure SQL Databaseseでも良いのです。

Windows Azureモバイルサービスの新機能と謳われているので、見落としがちな点ですよね。
気づいていなかったのは、温いAzurerな自分だけかもしれませんが(^^;

Windows Azure Webサイトに定期的にアクセスしウォームアップし続ける

Windows Azure Webサイトの無料や共有インスタンスの場合、5~20分ほどアクセスが無かった場合はシャットダウンされてリソースが解放されます。そーすると、初回アクセス時に、レスポンスが遅く感じる事象が発生します。

Windows Azureモバイルサービスのジョブスケジューラーで15分起きにリクエストを送信することで、常時ウォームアップし続けることが可能になります。
素敵だけど、怒られそうな話ですね!

早速、試してみましょう!
ちなみに、無料モードのWindows Azure モバイルサービスでは最大1つのスケジュールタスクしか作成できないので注意してください。

定期的にアクセスするジョブを作成する方法

Windows Azureモバイルサービスを作成し、モバイルサービスのインスタンスを選択します。
インスタンスのヘッダーメニューから「スケジューラー」を選択します。

image

新しいジョブの作成ダイアログが開きますので、任意の情報を入力します。

image

ジョブを作成すると、スケジューラーのジョブ一覧にジョブが表示されます。
ジョブを選択すると、ジョブの詳細画面に遷移します。

image

ジョブの詳細画面のヘッダメニューで、スクリプトを選択します。
image

スクリプトを入力できますので、任意の情報を入力します。
image

ちなみに、ここではhttps://gist.github.com/4392905で公開されているコードを使用しています。

function warmup() {
    warmUpSite("http://tempsdm.azurewebsites.net/");
    warmUpSite("http://sandrino.azurewebsites.net/");
    warmUpSite("http://myapp.cloudapp.net/");
}

function warmUpSite(url) {
    console.info("warming up: " + url);
    
    var req = require('request');
    req.get({ url: url }, function(error, response, body) {
        if (!error) {
            console.info("hot hot hot! " + url);
        } else {
            console.error('error warming up ' + url + ': ' + error);
        }       
    });
}

console.infoやconsole.errorで、Windows Azureモバイルサービスのログ画面にログを出力できます。

保存したら、画面下部のメニューから「一度だけ実行する」をクリックします。

このボタンはタスクが正常に登録できたのか、正しく動作するのかを確認するために使用するボタンです。

ログを確認すると、しっかり出力されていることを確認できますね!

image

他の用途としては…

azureモジュールが用意されていて、azureモジュールを読み込むことでストレージキューなどにアクセスして操作することができます。

https://gist.github.com/7b1859e966fccff81595で公開されているコードを参照するとわかりやすいですね!

function sendmessagetoqueue() {
    var azure = require('azure');
    var queueService = azure.createQueueService("myaccount", "mykey");    
    queueService.createQueueIfNotExists("work", function(error){ });
    queueService.createMessage("work", "SendNewsletter", function(error){});
}

azureモジュールをrequireで呼び出して、以後それを使いまわしていますね。

簡単にキューを操作できるので、いろいろできそうです。

まとめ

今までWindows Azureで定期ジョブを実行するには、クラウドサービスのホステッドサービスにスタートアップタスクで登録するか、仮想マシンを立ち上げるか……など多少なりとも定期ジョブを実行するために追加タスクが発生していました。

今回、Windows Azureモバイルサービスの一機能としてリリースされたジョブスケジューラーを使用することで、簡単に定期ジョブを実行できるようになるので、色々なことに活用できそうですね。

Windows Azure SQL Databasesのスナップショットバックアップの取得とかにも良さそうですね!

元情報

Job scheduling in Windows Azure

Windows Azure

Windows Azure Advent Calendar jp: 2012の22日目の投稿です。

Windows Azureのデータセンターは、3か国8か所に設置されています。アプリケーションデプロイ時、使用するデータセンターを選択します。どのデータセンターを使用したら良いのかを考える際の指標の一つが、ネットワークレイテンシーです。
では実際、どれぐらいのネットワークレイテンシーがあるのでしょうか?

実際に計測した結果を、動画にて提供します。

[youtube]http://youtu.be/xSl_zy5o6bg[/youtube]

Windows Azure

MSDNブログ「AzCopy – Uploading/Downloading files for Windows Azure Blobs」を抜粋意訳した投稿です。

Windows Azure Blobストレージとローカルファイルシステム間のファイルのダウンロードやアップロードを簡単にできるようにしたいとの要望は、Windows Azure Storageチームがよく受ける要望の一つです。

Windows Azure Storageチームは、コマンドラインツールであるAzCopy(ベータ版)をリリースしました。このツールは、Windows Azureストレージアカウントの内外にデータを転送するタスクを観覧にできるようにするために設計されました。
このツールはスタンドアロンツールとしても、既存のアプリケーションに統合することもできます。

このツールは、Githubからダウンロードできます。

使ったことがあるかもしれませんがrobocopyのようなMicrosoftの他のファイルコピーツールにとても似ています。構文は次のようになっています。

AzCopy <Source> <Destination> [filepattern [filepattern…]] [Options]

特徴

効率的で柔軟性のあるツール

AzCopyは、コピーするデータを選択しやすくなっています。
再起モードを使用すると、ネストさえたディレクトリ配下にあるファイルをコピーすることができます。

ファイルパターンを指定できます。
WindowsファイルシステムやWindows Azure Blobストレージのプレフィックスからワイルドカードで選択できます。さらに、アーカイブ属性を持っているファイルをコピーするというオプションを設定することもできます。

とても多くのファイルをコピーするとき、ネットワークやほかの問題でコピーに失敗するかもしれません。再開オプションは、まだコピーしていない、コピーに失敗したところからコピー処理を再開できます。

Windows Azure ストレージデータ型のサポート

AzCopyは、ストレージアカウントで、ブロックBlobかページBlobかをdestination dataオプションで指定することができます。デフォルトでは、ブロックBlobに設定されています。
ページBlobオプションを賜与王すると、Blobは512バイトごとに0詰めされます。

ネーミングルール

URIフォーマット(httpやhttps)はBlobストレージパスの指定に、NTFS Windows ファイルフォルダーパスはWindows ファイルシステムで使用されています。
Blob名の中には、そのままWindows ファイルシステムに転送できないものもあります。AzCopyはWindowsファイルシステム名に変換するときに、独自のルールを使用します。

Windowsファイル名としてBlob名が使用できない場合は、次のルールを使用します。
「.」は「dot」
「..」は「dotdot」
「/」は「slash」
他には、重複を回避するためにファイル名やBlob名に、文字列「(n)」を追加します。

ロギング

AzuCopyは冗長モードで、ファイルとディレクトリの一覧や、コピーに失敗したファイル一覧を表示します。進捗状況も表示します。

サンプル

例1 再起モードでローカルファイルをBlobストレージコンテナーにコピーする

AzCopy C:\blob-data https://myaccount.blob.core.windows.net/mycontainer/ /destkey:key /S

c:\blob-dataとサブディレクトリにある全てのファイルをストレージアカウント「myaccount」のコンテナー名「mycontainer」のブロックBlobにコピーします。
blob-dataフォルダーには「subfolder1」サブディレクトリがあります。

C:\blob-data\car1.docx
C:\blob-data\car2.docx
C:\blob-data\car3.docx
C:\blob-data\train1.docx
C:\blob-data\subfolder1\car_sub1.docx
C:\blob-data\subfolder1\car_sub2.docx

は、「mycontainer」BlobコンテーにBlobを格納します。

car1.docx
car2.docx
car3.docx
train1.docx
subfolder1/car_sub1.docx
subfolder1/car_sub2.docx

例2 Blobからローカルに冗長と式モードでコピーする

AzCopy https://myaccount.blob.core.windows.net/mycontainer c:\blob-data /sourceKey:key /S /V

冗長モードでは次のような表示があります。

Finished Transfer: car1.docx
Finished Transfer: car2.docx
Finished Transfer: car3.docx
Finished Transfer: train1.docx
Finished Transfer: subfolder1/car_sub1.docx
Finished Transfer: subfolder1/car_sub2.docx
Transfer summary:
—————–
Total files transferred: 6
Transfer successfully: 6
Transfer failed: 0
After the copy operation, c:\blob-data folder will contain the files listed below:
C:\blob-data\car1.docx
C:\blob-data\car2.docx
C:\blob-data\car3.docx
C:\blob-data\train1.docx
C:\blob-data\subfolder1\car_sub1.docx
C:\blob-data\subfolder1\car_sub2.docx

例3 再開モードでローカルからBlobにコピーする

AzCopy c:\blob-data https://myaccount.blob.core.windows.net/mycontainer /destkey:key /Z:restart.log /S

再開をするために、進捗状況を記録するログファイル「azcop.log」がカレントディレクトリに作成されます。

例4 ファイルパターンを使用して、ストレージBlobコンテナーのファイルを選択しローカルにコピーする

AzCopy https://myaccount.blob.core.windows.net/mycontainer c:\blob-data car /sourceKey:key /Z /S

パフォーマンス

Windows Azureデータセンター内で(同じDC内のコンピュートインスタンスとストレージアカウント)、ファイルのアップロード、ダウンロードに50MB/sぐらいの速度になります(エクストラLargeインスタンスの場合)。

Windows Azure

Windows Azure Virtual Machineを作成する方法として、次の3通りあります。

  • ギャラリーからイメージを選択して仮想マシンを作成する方法
  • Hyper-V形式の仮想HDD(VHD)をアップロードして仮想マシンを作成する方法
  • VHDにsysprepを実行したVHDをイメージとしてアップロードし、そのイメージから仮想マシンを作成する方法

3つめのsysprepを実行してイメージを作成する方法で、注意が必要な小さな問題があります。
Windows Azure Virtual Machineをデプロイするときは、必ずパスワードの複雑性を満たしていなければなりません

しかし、ローカルで仮想マシンを作成しSYSPREPを実行した場合、リモートデスクトップ接続に使用するアカウントのパスワードを強くない文字列に設定することができてしまいます。

この状態で、Windows Azure Virtual Machineで仮想マシンをデプロイすると、仮想マシンに接続できなくなります。

パスワードポリシーについては、「パスワードは、複雑さの要件を満たす必要がある」を確認してください。

元情報

Windows Azure Virtual Machines – Make Sure You Follow the Documentation