Azure Resource Manager QuickStart Templateを試してみた – Load Balancer with Inbound NAT Rule

こんにちは!今日もテンプレートで遊びます。既出っぽい気がしますがあまり気にしないでいきます。

101-loadbalancer-with-nat-rule

今日はこのテンプレートです。これは受信規則NATを設定したロードバランサー、パブリックIPアドレス、仮想ネットワーク、ネットワークインターフェイスを一式デプロイしてくれました。

ロードバランサー概要

パラメータ

  • DnsNameForLBIP – NAT用のロードバランサーのDNS名(PublicIPに設定されるもの)
  • Location – デプロイするロケーション(Japan EastとかJapan Westとか)
  • AddressPrefix – 仮想ネットワークのaddress空間
  • SubnetPrefix – 仮想ネットワーク内に作成するサブネットマスク
  • PublicIPAddressType – 動的か静的か。試す分にはDNS名を使うとしてどちらでもよいんじゃないかと思います。動的にしても後で静的に変えることはできるようです。逆は一度関連付けを外す必要があるようです。

デプロイされた後のリソースです。

このテンプレートは受信規則NATというものにRDPを登録しています。そしてそのRDPはVirtualNetwork1にあるnetworkInterface1にマッピングされるようになっています。こうすることのメリットは、仮想マシンとPublicIPaddressを切り離すところにあるのではないかと思います。この仕組みは「仮想マシン(クラシック)」のクラウドサービスが提供する機能に似ている。例えば、一つのaddressで、複数のサービスを持たせるけど、規模が小さすぎるのでバックエンドは一つのサーバーにしておいて、後から複数サーバーに分散していくなど。そういう活用もできるんじゃないかと思いました。PublicIPのコストも抑えられるし。

該当するドキュメント

  • 外部トラフィックを特定の VM インスタンスに転送します。

 

見えない部分でわかりづらいので、簡単な図を作ってみました。仮想マシンに接続されるネットワークインターフェイスには、PublicIPがなく、LoadBalancerにのみパブリックIPがある状態です。

灰色の部分はテンプレートに含まれていないもので、上でいってたような私の妄想した領域です。この構成「仮想マシン(クラシック)」のクラウドサービスほぼ同じですね。ただ、ロードバランサーとしての機能がいくつもあるので柔軟性は明らかにこっちのほうが上です。テンプレートではNetworkInterface1がありますが、このままだと何の意味もありません。TemplateをカスタマイズしてVM、LBなどにくっつける前提になっているようですね。

以下は、NAT規則にHTTPSを追加して同じターゲットにしてます。のちにターゲットを増やして分離。または負荷分散へ変更するということもできそうなところです(同期が必要な場合、ダウンタイムは発生すると思いますが)。可用性セットを関連付けて置く必要があるようです。(仮想マシンの可用性管理

 

仮想マシンにPublicIPがなくとも、ポータルからWindowsへリモートデスクトップ接続ができるようです。(ちゃんとLBまで見てる様子)

というところで、以上になります。

それでは!

 

Microsoft Azure クイック スタート テンプレート試してみた – Web アプリと Redis Cache

今日のテンプレート

Create a Web App plus Redis Cache using a template

ぽちっと!

このテンプレートは、日本語の説明があるようなのでそちらを参照してみてください。ホストにステートとかキャッシュを持つようなWebAppでスケールアウトを行う場合、ホスト固有の情報は複数のホストがあると同期されない。または、アクセスが早い揮発性の大容量メモリがほしいなど。この性質を解決するために、RedisCacheサービスを使うという方法をいつか試したいなぁとか思ったりしました。(これぞ!という実のある用途・目的を思いついてない)もちろんステートを永続化するなら、DBやStorageを使う方法も考えられます。またASP.NETならセッションプロバイダーを独自で実装してしまえば、どうにでもなってしまうでしょう。VNet接続で、IaaSなASPNETStateServerにつなぐ方法もあるかもしれません。(ただ、レスポンスとかどうなるか要検証だとは思う)BlackJumboDogもなんかできそうだなぁとか妄想してはいます。テンプレートを眺めながら何かわくわくしている反面、時間が足りないと感じる今日でした。

それでは!

 

HPH 2015 一次産業 × IT ハッカソン in SAPPORO

こんにちは!今週末は、HPH 2015 一次産業 × IT ハッカソン in SAPPOROを見学させていただきました。このイベント、実は年度で動いていたようで、HPH 2015 林業×IT アイディアソン in ENIWAというワークショップ形式でアイディアを出すというもので、参加していなかったので内容はわかりませんが、そこで出てきた内容をスマホアプリを中心としてさぁ何か一つ形にしてみよう!という流れでした。

今回、Microsoftさんの提供で無償サブスクリプションが提供され、Micorosoft Azureの概要とMobileAppsの説明がありました。私自身、MobileAppsはほとんど実装したことがなかったので、とても勉強になりました。ちょっと調べた範囲をまとめておきます。このサービスは、Mobileデバイスのアプリ向けにバックエンドを提供するサービスです。

  • SQLデータベース(連携のみで、別サービス)
  • WebAPI
  • モバイル認証
  • プッシュ通知
  • スケールアップ
  • スケールアウト(自動)
  • デプロイスロット(移行用サブサイト)
  • ソース管理からの継続的デプロイメント
  • バックアップ
  • ログ出力
  • Swagger 2.0
  • クロス オリジン リソース共有 (CORS)
  • Web ジョブ
  • 仮想ネットワーク(VirtualNetwork – VNet)接続
  • カスタム ドメインおよび SSL
  • トラフィック ルーティング(連携)
  • サーバーサイドのC#サンプルコード
  • サーバーサイドのNode.jsサンプルコード
  • クライアントサイドのC#サンプルコード(オフライン同期)
  • クライアントサイドのiOS(Objective-C)サンプルコード(オフライン同期)
  • クライアントサイドのiOS(Swift)サンプルコード(オフライン同期)
  • クライアントサイドのAndroidサンプルコード(オフライン同期)
  • クライアントサイドのXamarin.Androidサンプルコード(オフライン同期)
  • クライアントサイドのXamarin.iOSサンプルコード(オフライン同期)
  • クライアントサイドのXamarin.Formsサンプルコード(オフライン同期)

という感じです(項目並べてみて並べ方の問題もあるけど結構多いと思った今日この頃)このWebAPIになるサイトは、PaaSであるためOSの管理は不要です。(触ることがないようになっています)昔の/~hogehoge/なホスティングサービスのようなもので、Webサーバーをインストールする必要はありません。出来上がった状態からスタートします。サーバーサイドのアップロードはVisualStudio、FTPでできます。

あと、SQL Databaseの目安になりそうなもののリンクを張っておきます。

SQL Database のオプションとパフォーマンス

また、Webサイトにはディスク容量に制限がありますので、画像などの静的コンテンツは、ストレージアカウントに格納するという選択肢もあるんじゃないかと思いました。

Microsoft Azure Storage のパフォーマンスとスケーラビリティに対するチェック リスト

今回、色々な発表を聞かせていただく中で、ワクワクしてきました。モバイルデバイスほしいなぁという欲求が高まる日々でございます。実際に形になるものをこの短期間で作り上げてしまうのはすごいなぁと感じました。私も精進します!

それでは!

Microsoft Azure クイック スタート テンプレート試してみた – ubuntu-desktop

こんにちは。ARMのお勉強のために公式で用意されているコミュニティによるクイック スタート テンプレートの紹介です。公式のものではなくなりますが、コミュニティ提供のものとしての一覧があります。

Azure クイック スタート テンプレート

Azure リソース マネージャーを通じてコミュニティ提供のテンプレートで Azure リソースをデプロイし、生産性を高めます。デプロイ、学習、フォークして、自分も貢献しましょう。

さっそくデプロイ

ここで見つけた、Create an Ubuntu desktopっていうものを試してみます。 Azureへのデプロイボタンをクリックすると、ポータルでのカスタムテンプレートのデプロイ画面になります。

パラメーター

  • NewStorageAccountName – ストレージアカウントを作るようなのでそのアカウント名。
  • AdminUserName – Ubuntuのユーザー名
  • AdminPassword – Ubuntuのパスワード
  • DNSNameForPublicIP – DNSホスト名
  • VMSize – 仮想マシンのプラン

これらのパラメータでDNS、ストレージアカウントは世の中の一意な名前じゃないとデプロイに失敗しそうな気がします。ので、ありきたりな名前としないほうがよさそうです。

できあがり

ぽちぽちしてポータルから作ったものと違って、ロードバランサーも用意されていますね。PublicIPはネットワークインターフェイスには関連付いてなく、ロードバランサーについています。ネットワークインターフェイスはVNETに所属するのみですね。ネットワークセキュリティグループは、TCP/22(SSH)のみ開けているようです。

このテンプレートの説明

https://github.com/Azure/azure-quickstart-templates/tree/master/ubuntu-desktop

ということで、デスクトップにつなぐためには、SSHでポート転送を行いなさいよとのことです。リンク先ではPuTTYの設定になっています。以下はTeraTermの設定追加です。(設定を保存して、つなぎ直す必要があるようです。)

あとは、VNCで接続!!

接続先は「localhost:5901 」パスワードは「password」ですね。

ちょっと手順はありますが、認証もSSHを経由する必要があることで生のVNC通信より暗号化されている分ちょっと安心。

それでは!

 

ポータル、Powershellを使って、AzureResourceManagerのVMテンプレートイメージを作る

Azure CLIを使ったリソース マネージャーのテンプレートとして使用する Linux 仮想マシンをキャプチャする方法

これをPowershellでいろいろ省きながらやってみます。

VMはすでにあるものとして仮定するため、作成の手順は割愛します。

VisualStudioでSDKを入れてる人はいらないはずです。何もない人は、Powershellのコマンドラインツールを入れてください。

まずはログインです。

PS > Login-AzureRmAccount

ここでダイアログが出てくるので、サブスクリプションのあるアカウントでログインします。大抵はMsアカウントのはずです。

複数のサブスクリプションを持ってる人は以下で、サブスクリプションを選択する必要があります。

Get-AzureRmSubscriptionを使って、サブスクリプションの一覧を取得

PS >Get-AzureRmSubscription

SubscriptionName : [サブスクリプション名]
SubscriptionId   : 2aaa2a2a-9aa9-99a9-aaaa-aaaaaaaaaaaa
TenantId         : 99999999-9999-9999-9999-1234567890123
SubscriptionName : [サブスクリプション名]
SubscriptionId   : 2aaa2a2a-9aa9-99a9-aaaa-aaaaaaaaaaaa
TenantId         : 99999999-9999-9999-9999-1234567890123
サブスクリプションを以下で選択
PS > Set-AzureRmContext -SubscriptionName [サブスクリプション名]
Environment           : AzureCloud
Account               : vnext-vnext@example.com
TenantId              : 99999999-9999-9999-9999-1234567890123
SubscriptionId        : 2aaa2a2a-9aa9-99a9-aaaa-aaaaaaaaaaaa
CurrentStorageAccount :
イメージを一般化(事前にVMは停止させておきましょう)
PS > Set-AzureRmVM -Generalized -Name [仮想マシン名] -ResourceGroupName [リソースグループ名]
RequestId                            IsSuccessStatusCode StatusCode ReasonPhrase
———                            ——————- ———- ————
99999999-9999-9999-9999-1234567890123               True         OK OK
イメージをテンプレート化する
PS > Save-AzureRmVMImage -DestinationContainerName [Blobコンテナ名] -Name [仮想マシン名] -ResourceGroupName [リソースグループ名] -VHDNamePrefix [VHD名のプリフィクス]
RequestId IsSuccessStatusCode StatusCode ReasonPhrase
——— ——————- ———- ————
True         OK OK
ここで、VNET整備してますが、ポータルでもできることなので、ポータルでやってしまってもやってしまっていいような気がします。割愛。
Blobが増えてるので、JSONファイルをダウンロードしてクリップボードにコピー
Marketplaceからテンプレートのデプロイを検索
ダウンロードしたJSONを貼り付けます。
あとは、パラメータを設定、リソースグループを設定して、作成!
というざっくりな流れです!
networkInterfaceIdは「/subscriptions/[サブスクリプションID]/resourceGroups/backup-test/providers/Microsoft.Network/networkInterfaces/[ネットワークインターフェイス名]」という形式なのに注意しましょう。

Azure 仮想マシン(クラシック)のスナップショットから新たな仮想マシン(クラシック)

今日は、ちょっとした相談を受けたのでチャレンジです。VMの状態をそのまま保存して、必要なときに戻したい!という要件でした。Azure Resource Managerで管理される仮想マシンのバックアップを試してみようと思って・・・まずは、公式ドキュメントをみながら・・・。と思って探していたのだけれども。どうもARMでLinuxバックアップっていうのはどうもなさそう。このバックアップも少し意味が違う。スナップショットをポータルからぽちっといける方法もなさそうなので、現状そうした用途で使うなら、クラシックのほうがよさそうってことで、変更!ごめんなさい。本当にごめんなさい。

仮想マシン(クラシック)

まずは、既存のVMからキャプチャこれで、スナップショットを作れます。ここに「仮想マシン上で、「waagent-deprovision」を実行しました。は嘘をつかないようにします。(これをやっておくとデプロイ用のテンプレートイメージを作ったりすることができたりするのですが、割愛。)

キャプチャ

 

無事に成功したらVMイメージ(クラシック)で参照することができます。ここでVMの作成とすると、キャプチャしたイメージを仮想マシンとして動かすことができます。ただし、この場合、ネットワークで連携するものである場合は、元のマシンと同時に動かすと思わぬ挙動をするかもしれません。その場合、以前のVMを停止または削除してから、起動したほうが間違いが起きなくてすむでしょう。(ADは一度動いてしまうとエラーになりつづけたりする。火遊び!)

キャプチャからVMの作成

 

いっぱい作って、いっぱい遊んで、いっぱい壊したい私には最高な機能でした。というわけで、現状でクラシックにはクラシックの魅力があった!という話です。そして、実は新ポータルにもちゃんとこのUIが実装されていたことに気付いてしまったのは秘密です!いろいろ聞いてもらえることで、私自身も勉強になります。どうぞ、これからもよろしくお願いいたします。

(ARMのほうでも、同じことできないかポータル以外の方法を探ってます)

それでは!

VNet-to-VNet – Azure Resource Manager(ARM)

今日はわりとまじめにAzureネタです!BlackJumboDogは、テストを地道に消化しているところなので、GitHub歴史が刻まれているくらいしか進捗がありません。そのうち、アセンブリを読み込む方式から、RuntimeServiceというものに切り替えるに至った経緯を記しておこうと思っています。

本題です。昨日のデプロイした内容を、ざっくり図にしてみました。テンプレートにVirtualMachineは存在していませんが、イメージのために載せています。下線があるものが、テンプレートに含まれるリソースです。(間違っていたらごめんなさい。ご指摘いただければ幸いです。)

<クラシック(ASM)との違い>

クラシックと呼ばれている仮想ネットワークでは、もう少し粒度は荒いものでした。上記ですと、PublicIPというリソースは存在していませんでした。仮想ネットワークゲートウェイとセットで自動的に割り振られていました。また、VNet-to-VNetをするためには、Powershellなどを使う必要がありました。しかし、新しいARMではJSON形式のテンプレートに含めることができるようになっています。また、PublicIPaddressは仮想マシンに対してもネットワークインターフェイスを介して割り当てるリソースとして扱いますが、ここでは割愛します。

全体として細かいリソースに分かれたことで、より柔軟に構成できるようになった。そして、その細かくなってしまった分、複雑になるデプロイはテンプレートとしてJSON形式で設計図のように残しておくことができて、いつでもデプロイすることができることで補っている、というのが私個人の感想です。ただ…この違いは、発想の変化があるような気もしますので本来比較するようなことではないのかもしれません。

といったところで、終わっておきます。また今後デプロイするものを追加していこうと思っていますので、よろしくお願いいたします。

それでは

 

デプロイボタンを試してみた

まずは、ARMのJSONファイルを用意しました。

http://vnext-y-blog.azureedge.net/blog/azuredeploy.json

以下その流れ

  1. 東日本の仮想ネットワークを作成する(10.0.0.0/16)
  2. 西日本の仮想ネットワークを作成する(10.1.0.0/16)
  3. 東日本のパブリックIPアドレスを作成する
  4. 西日本のパブリックIPアドレスを作成する
  5. 東日本の仮想ネットワークゲートウェイを作成する
  6. 西日本の仮想ネットワークゲートウェイを作成する
  7. 東日本から西日本へのVnetToVnetを作成する(事前共有キー)
  8. 西日本から東日本へのVnetToVnetを作成する(事前共有キー)
というもので、東日本と西日本それぞれの仮想ネットワークとそれをつなぐものをほぼ自動的に作ってくれます。が、仮想ネットワークゲートウェイの作成は30分以上はかかるので、気長にどうぞ!(というのが公式ドキュメントにもあったり)上記のJSONは、東日本、西日本に限定して、IPアドレスとかも固定化したものです。事前共有キーは、固定だと問題あるので入力してもらうようにしています。これで、何かしらの知識やらきっかけになれば幸いです。

手順 6 – ゲートウェイを作成する

この手順では、VNet の仮想ネットワーク ゲートウェイを作成します。VNet 間構成では、RouteBased VpnType が必要です。ゲートウェイの作成には時間がかかるため、気長に取り組んでください。

次にボタン。

先のJSONがあるURLをエンコードしています。

http%3a%2f%2fvnext%2dy%2dblog%2eazureedge%2enet%2fblog%2fazuredeploy%2ejson

これを、Azureが提供するサービスの「テンプレートのデプロイ」というやつに受け渡します。「 https://portal.azure.com/#create/Microsoft.Template/uri/」そうすると、こんな感じに!

また、このボタンの利用は自己責任でお願いしますー。元ネタはこれとか、これです。Azureのサブスクリプションがないと、利用できません。気になる方は、無料評価版をどうぞ。

それでは!

Windows Azure Storage for WordPress – Azure Blob Storage と Azure Content Delivery Network

初めてのAzureネタになりそうです、こんにちは!

ことの発端は、某きたあずの方から、これ使ったらいいんじゃないのー!?

Microsoft AzureのストレージからWordPressの画像を簡単配信

ということで、その方のブログ記事を紹介してもらいました。これのメリットは、PaaSなWebアプリにはストレージの制約があるようで、大量の画像とか動画(載せないとは思うけど)、サイズの大きなものがあると、そこで上限に達してしまう可能性があります。そうしたとき、一部のリソースをほぼ無制限に置けるStorageServiceに格納しておくことで、Webアプリが使うストレージの負担を減らせるってこと、単純なネットワーク負荷、CPU負荷メモリ負荷を減らせることですね。

もうちょっと踏み込んでサービスを組み合わせてみます。上記リンクの手順を行ったうえで、さらにAzure Content Delivery Network (CDN)という配信サービスを利用してみることにしました。

このサービスの特徴は、

  • キャッシュしてくれる
  • 複数の配信する場所があり、同じURLを参照しても、接続元の地域によって自動的に近い上記の場所を参照するようになっていること
  • 瞬間的な大量アクセスに対応させることができる
  • 反映されるまでにタイムラグがある。
といっても、このBlogにそこまで必要ないだろうというのと、Webアプリそのものにはかけていないので、画像、動画などメディアリソースにアクセスが集中するときに価値が出てくるかなぁというところです。
以下は、管理ポータルから作っている様子です。CDNというサービスを作成した後、その中にエンドポイントというものを作っています。

  1. 「名前」となっている項目にURLになるので、それっぽいものに
  2. 「配信元の種類」は、ストレージ、クラウドサービス、Webアプリ、カスタムの配信元がありますが、ストレージとします
  3. 自動的に、ストレージアカウントのホスト名がリストに出てきますので対象を選びました。
  4. あとはそのまま、追加!

 

そして、Wordpress側です。こっちにはCNAMEという項目がありますので、ここにCDNのエンドポイントURLを入力します。(スラッシュなしっぽい)

 

これで設定は完了のはずです。この投稿の画像は、さっそく利用しています。

CDN作成から配信されるまでのタイムラグですが、1時間くらいかかりました。それまでメディアファイルだけアップロードして待っていたのは秘密です。このタイムラグに困るときは、先ほどのWordpress側の設定からCNAMEを一度削除すればよいだけです。

それでは!

 

Blogはじめました

突然ですが、Blogはじめました。あけまして、おめでとうございます!

2016/01/01、Microsoft MVP awardを受賞いたしました。カテゴリは「Microsoft Azure」です。

これは何かというと、Most Valuable Professional

MVP とはどのような人?

Microsoft inl?gget! Most cheap nfl jerseys Valuable Samsung Professional Do? (MVP) cheap jerseys は、自身のマイクロソフト技術に関する知識や経験を最大限に活かしながら、他のユーザーを積極的にサポートしている、非常に優れたコミュニティのリーダーです。彼らは、技術専門知識に加えて自主性と情熱を兼ね備え、マイクロソフト製品の実用的な活用方法をコミュニティやマイクロソフトと共有しています。

ということのようです。

本音を言うと受賞するとは思っていなかったので、ぜんぜん心の準備とかできてなかったんですよね。

ただ、受賞したからには、より一層の高みを目指して情報発信にも力を入れていこうと決意しまして、Blogを開設いたしました。Microsoft wholesale jerseys China AzureのWebアプリでWordPressを動かしています。IaaSの知識はさほど多くはないので、PaaSでゆるーくテンプレートを用いて作りました。

自主性と情熱に関しては、持っているものを地道に書いていきたいなぁ。まずは、技術者、Azure、CoreCLRの面白さ楽しさを伝えていけたらいいな!っと思っています。

また、JAZUG札幌支部(きたあず)のスタッフもさせてもらっています。本部含めて以下、JAZUGというコミュニティの一覧を簡単にまとめました。

Japan Azure User Group (JAZUG)の一覧

 

どうぞ、よろしくお願いいたします。