しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Web サイトに仮想ネットワークへの対応と A/B テスト機能が追加されました

寝ている間に Azure のアップデートが行われて、Web サイトで仮想ネットワークが使えるようになっていたり、ステージングスロットを利用した A/B テストを簡単に行えるようになっていました。

それ以外にもメディアサービスが大幅にアップデートされていたりするのですが、詳細は抱かれたい男 No.1 こと @kamebuchi のブログを参照してください。

Azure Updateいろいろ 2014/9/10版 « ブチザッキ

今まで仮想ネットワークを使ったことが無かったので、試しに仮想ネットワークを作って Web サイトから使ってみました。ちなみに両方とも標準モードのみ利用可能です。

仮想ネットワーク

そもそも仮想ネットワークへの対応希望が UserVoice に上がっていたのに、Hybrid Connection が追加されたタイミングで閉じられた経緯がありましたが、今日のアップデートで新ポータルから仮想ネットワークへの参加が行えるようになりました。

f:id:shiba-yan:20140911142052p:plain

クリックすると既存の仮想ネットワークに接続するか、新しく仮想ネットワークを作るか選択する画面になるので、今回は新しく仮想ネットワークを作成しました。

f:id:shiba-yan:20140911142100p:plain

仮想ネットワークへの参加には 10-20 分ぐらいかかるので、のんびり待ちましょう。

参加が完了すると、以下のような表示になります。

f:id:shiba-yan:20140911154726p:plain

仮想ネットワークのステータスを確認しておくと、クライアント数が 1 になっています。詳しくはないですが、抱かれたい男 No.1 曰く Point to Site VPN で繋がっているようです。

f:id:shiba-yan:20140911154842p:plain

Kudu から環境変数を確認してみると、VNETNAME という新しい変数が追加されています。

f:id:shiba-yan:20140911155532p:plain

実際に Azure Web サイトの ASP.NET アプリケーションから、仮想ネットワークに参加している SQL Server への接続を行ってみたところ、あっさりと内部 IP アドレスで接続することが出来ました。

f:id:shiba-yan:20140911165748p:plain

Debug Console から SQLCMD を使って接続することも出来ました。

f:id:shiba-yan:20140911170348p:plain

これで Web サイトからオンプレにある DB や API に仮想ネットワークを経由して、安全にアクセスすることが出来るようになりましたね。

より詳しい情報は抱かれたい男 No.1 がブログに書いてくれるらしいので目いっぱい期待しましょう。

Azure WebサイトのVPN接続 « ブチザッキ

抱かれたい男 No.1 こと @kamebuchi がブログにまとめてくれています。読むべし読むべし。

A/B テスト

あともう一つ追加された A/B テストの機能ですが、スロットを使ってトラフィックを指定した % で分散させることが出来るようになっています。今までのステージングでの使い方とは異なり、本番の URL で別々のスロットに割り振られるのが特徴です。

f:id:shiba-yan:20140911160114p:plain

まずはデプロイ用のスロットを作成する必要があります。スロットは標準でしか作成できないので注意。

新しいスロットへ設定をコピーする場合には、ドロップダウンでコピー元のスロットを選択します。

f:id:shiba-yan:20140911174101p:plain

設定はとても簡単で、スロットを選択して何 % のトラフィックを流し込みたいか指定するだけです。

今回は slot1 に全体の 30% のトラフィックを流し込むようにして試してみます。

f:id:shiba-yan:20140911174156p:plain

トラフィックを流し込むために、何時ものように loader.io を使いました。指定した割合通りにトラフィックが分散されているのか確認するために、IIS ログのサイズを確認して簡単に調べてみます。

f:id:shiba-yan:20140911180717p:plain

production が 128KB、slot1 が 81KB なので 61% と 39% ぐらいに分散されたことになりますね。数をもっと多くすれば指定した 70% と 30% に近づいていくものと思われます。

そして気になるセッションアフィニティに関してですが、今までの ARRAffinity クッキーに追加で TiPMix というクッキーが追加されました。

f:id:shiba-yan:20140911181252p:plain

この 2 つのクッキーでアクセス先のインスタンスを切り替えているようなので、基本的にはセッションアフィニティが有効になっていると考えていいでしょう。

ちなみに TiPMix クッキーの値は 0-99 の値をとるようです。気が付いた人もいると思いますが、初回アクセス時に乱数で TiPMix クッキーを発行し、その値によってインスタンスを切り替える仕組みのようです。今回の場合は値が 0-30 の場合に slot1 へ、それ以外の場合には production へ割り振られるようでした。

微妙に 0-30 だと % が狂いそうな気がするんですけど、とりあえず見なかったことにします(