【2021年】Azure Load Balancerってどんなもの【Azure】

image.png

はじめに

今回はロードバランサーという機能がある Azure Load Balancer について解説をしていきます。
Webサイトなどへのアクセスを、各サーバに分散して振り分けてくれるもので、
ロードバランサー+仮想マシンはクラウドでよく使われる構築パターンです。

  • 初心者向けに難易度は易しめです
  • azure に詳しくない方でも、どんなサービスかある程度わかるようになると思います
  • ロードバランサーで他サービスと比較したい、良いサービスを探している方はぜひ参考にしていただければと思います

Azure Load Balancer の概要

  • クラウドで提供されるロードバランサー
  • ネットワーク機器である、ロードバランサーのハードウェアレベルやネットワーク接続といった煩雑な設定は不要
  • らくらく負荷分散環境を構築
  • Azure Load Balancer は Basic と Standard という二種類のレベルがある

Standard と Basic の違い

Basic についてのご紹介ですが、両種違いについては以下となります

  • Azure では Standard Load Balancer を推奨
  • スタンドアロン VM、可用性セット、および仮想マシン スケール セットは、どちらか一方にのみ接続可能で、両方には接続できない
  • 分散先の仮想マシンの数が大幅に増える
  • セキュリティグループが使える


バックエンドプールとは...アプリに関する同様のトラフィックを受信する、バックシステムのセットのこと
正常性プローブとは...負荷分散リソースの正常性を監視する精査方法

対応範囲 Standard Load Balancer Basic Load Balancer
バックエンド プールのサイズ 最大 1,000 インスタンスをサポート 最大 300 インスタンスをサポート。
バックエンド プール エンドポイント 単一の仮想ネットワーク内の任意の仮想マシン、または仮想マシン スケール セット 単一の可用性セットまたは仮想マシン スケール セット内の仮想マシン
正常性プローブ TCP、HTTP、HTTPS TCP、HTTP
正常性プローブ ダウン動作 インスタンス プローブがダウンし、かつ すべてのプローブがダウンしても TCP 接続は存続 インスタンス プローブがダウンしても TCP 接続は存続。 すべてのプローブがダウンすると、すべての TCP 接続が終了
可用性ゾーン 受信トラフィックと送信トラフィック用のゾーン冗長およびゾーン フロントエンド 使用不可
診断 Azure Monitor 多次元メトリック Azure Monitor ログ
HA ポート 内部ロード バランサーで使用可能 使用不可
既定でのセキュリティ保護 ネットワーク セキュリティ グループで許可されている場合を除き、受信フローは禁止。 仮想ネットワークから内部ロードバランサーへの内部トラフィックは許可 既定で開いている。 ネットワーク セキュリティ グループはオプション
送信規則 宣言型の送信 NAT 構成 使用不可
アイドルの TCP リセット 任意のルールで利用可能 使用不可
複数のフロントエンド 送受信 受信のみ
管理操作 ほとんどの操作は 30 秒未満 一般に 60 ~ 90 秒以上
SLA 99.99% 使用不可

主な機能

負荷分散

  • レイヤー 4 (TCP、UDP) ロードバランサー
  • 「負荷分散セット」に登録された仮想マシンなどのサービスに対してアクセスを振り分けることができる
  • この負荷分散セットは、例えば仮想マシンを作成するときに、あらかじめ負荷分散セットを指定して登録しておく必要がある
  • インターネットからの通信を振り分ける、パブリック(Public)なロードバランサーが可能
  • Azure内部の通信を振り分ける内部的(Internal)なロードバランサーも定義できる

負荷分散の方式

  • 負荷分散は、ハッシュベースの分散アルゴリズムを使用します
  • デフォルトでは、送信元IP、送信元ポート、接続先IP、接続先ポート、プロトコルの5つの値を組み合わせて求められるハッシュ値(5タプルハッシュ)から振り分け先が決められます
  • あるIPからの接続はいつも同じインスタンスに振り分けられない可能性があります
  • TCPまたはUDP セッションが続く限りは同じインスタンスに送信されます
  • 同じIPからの接続でも、新しいセッションを開始されると、送信元ポートが変更
  • ハッシュ値も変わって別のインスタンスに送信されるケースがあります。

ポートフォワーディング

  • 入力側のポートと振り分け先のポートはルールを決めて変換することができます
  • 例えば、インターネットからは80番ポートで受けて、81番ポートに転送することもできる

サービスの監視

  • Load Balancer からインスタンスの正常性を監視する機能
  • あるインスタンスが異常状態と検知されると、Load Balancer は、そのインスタンスへの振り分けを停止
  • 正常性の確認は3種類のプローブが提供

ゲストエージェントプローブ

  • 仮想マシンの状態を仮想マシン内のエージェントが応答
  • HTTP 200 OK 応答を正常状態として、それ以外の状態の場合は振り分けを停止

HTTPカスタムプローブ

例えば、インスタンスのCPU使用率が90%を超えた場合に200以外の状態を返すようなカスタムロジックが考えられます。

TCPカスタムプローブ

情報が少ないのですが、TCPポートとのセッションが確立できるか
(ポートが空いているか?)で正常、異常を判断するというものではないかと考えています。

他の負荷分散機能との違い

Azure Load Balancer 以外にもネットワークトラフィックを分散するサービスが Azure にはあります。

  • Azure Load Balancer ...トランスポート層で動作します(OSIネットワーク参照モデルの第4層)
  • AWSだとNLB相当で柔軟にTCP/UDPの振り分けができます。
  • Application Gateway...アプリケーション層で動作します(OSIネットワーク参照モデルの第7層)
  • AWSだとCLBからALBに相当するかと思います。SSLの終端も可能です。
  • Traffic Managerは、DNSレベルの分散を行います。

image.png
引用元URL

その他

  • プローブの監視は、ロードバランサーのフロントIPからではなく168.63.129.16から行われる。

デフォルトのセキュリティグループルールでも、許可するようになっているが、誤って禁止しないように注意が必要です

  • IPは静的、動的とも割り当て可能。

料金

  • Basic Load Balancer は無料
  • Standard Load Balancer は
    • Load Balancer ルール数
    • NAT ルール数
    • データ処理量(GB単位)

に応じて課金される (プレビュー期間中は無料)

  • Standardも内部負荷分散であれば無料

まとめ

Azure Virtual Machine と Azure SQL Database、Azure Load Balancer があれば
クラウド上でありマネージドベースで、オートスケールするシステム環境を簡単に構築することができます。
一つのクラウドサービスで猥雑な管理をせずに、スムーズに環境構築できるのは、他の開発環境に集中する上でとても重要なことですね。
どんどん使っていきたいサービスです。


アドベントカレンダー振り返り【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の25日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

ここまで24日間、アドベントカレンダーを書き続けることができました(遅れた日もあるけれど)。
25日目は振り返りとして、Azureの各種サービスについて感じたこと、アドベントカレンダーを通して感じたことをまとめてみました。

Azureについて

今回、Azureの各種サービスについて調べたり、実際に使ってみた中で感じたことを説明します。

Azureのサービスの豊富さ

今回のアドベントカレンダーでは86個のサービスのうち、24個を取り上げました。まだ3分の1未満・・・
仮想マシンに始まり、データベース、ネットワーク、負荷分散、監視、AI、IoTなど本当にいろんな種類があります。
さらに各サービスの中にも多くの機能があり、本当に何でもできそうです。プレビュー提供のサービスも多くあり、今後もますます機能が拡充されていきそうです。

Azureのドキュメント

今回の記事を書くにあたって、基本的にはAzure公式のドキュメントを読んで記事を作成しました。
Azureのドキュメントは、概要(overview)、チュートリアル、HowTo、リファレンスの読んでいくと順に理解しやすいです。
概要を把握して、実際の作業手順を見て必要な設定を理解して、さらに細かい仕様を見ていくという流れです。
正直、Azureのドキュメントは読んでて分かりにくいものもあります。英語しかなかったり、英語を機械翻訳で日本語にしていたり、Azure独自の概念が出てきたり、それなりに骨が折れることもあります。しかし、ちゃんと読めば、必要な情報が漏れなく書いてあることが今回ドキュメントを読んで分かりました。
願わくば、表記ゆれ(1つのドキュメント中で英語から翻訳した日本語の機能名が違ってて混乱する)、誤字脱字(AsureじゃなくてAzure!)、そしてリンク切れは改善してほしいと思いました。
個人的には、ひたすら1か月ドキュメントを読み込んでAzure言語の文法を理解できたのは収穫の一つです。

他社クラウドとの比較

ちょうど11月上旬にはMicrosoftのTechSummit、11月末にはAWSのRe:inventが開催されてこの数カ月は各クラウドでたくさんの新サービスや機能改善が発表されています。いろいろウォッチしてて感じたのは、他社にあって自社のクラウドにない機能があれば、各社とも同機能の実装を迅速にしているな、ということです。当然ながら各クラウドベンダとも他社も意識しています。なので、だいたいの機能はどのクラウドでも大差なく使えるようになっています。
Azureに関していうと、エンタープライズに特化している感があり、運用や業務との統合も含めて機能が拡充しているのが特徴です。他社クラウドだとクラウドということもあり機能が限定されていることもありますが、Azureは従来のオンプレ機器と同等の機能が提供されたり、設定が可能なことが多いと感じました。一例をあげればロードバランサ周りは他社クラウド対比、機能が豊富で設定の幅も広いです。

アドベントカレンダーで得られたこと

このアドベントカレンダーも含めて1カ月で30記事を書きました。通勤時間などプライベートな時間もある程度侵食しつつも、ほぼ1日1本のペースで記事を書き続けることができました。始めたころと比べて、最後では下調べの時間も各時間も半分くらいにできたので、記事作成効率を上げられたかと思います。

また、twitter経由やいろんな伝手でフィードバックをもらって記事をレベルアップしたり、これまでにない人とのつながりを得られたのも大きな収穫でした。

まとめ

Azureのサービスをまだ全然網羅できていないので、他の人にも協力してもらいながら、このシリーズは継続していきたいと思います。


Face APIを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の24日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

24日目はAzure Cognitive ServicesのFace APIです。静止画から顔に関する情報を抽出できます。

概要

cognitive(コグニティブ)とは日本語で「認知」を意味します。ただ機械的に認識するだけでなく、人間と同じようにモノを理解して推論し、さらに自ら学習する、という意味で使われています。

Azure Congnitive Serviceでは視覚、音声、言語、知識、検索の5つのカテゴリで複数のAPIが提供されています。
今回は画像認識系のサービスの中からFace APIを紹介します。写真に含まれる顔の検出、識別、分析、グループ化、タグ付けができます。
使える機能について説明していきます。

顔検証 Face Recognition

2つの顔が同一人物のものであるかを判別します。

Face Verification 顔認証

写真の中の2つの顔、もしくは写真の中の1つの顔と事前にPerson Groupに登録済の顔が一致するかを判別します。同一人物かどうかと、その確率が返されます。

Finding Similar Face 類似する顔の検索

与えられた顔写真の中から同一人物と推測される顔を返してくれます。matchFace と matchPerson の2つのモードがあります。matchFaceモードではFace Verificationの機能を使って同一人物の顔写真を探します。matchPersonモードでは同一人物かではなく「似た顔」の候補を探してくれます。結果は類似する顔が確率とともに返されます。

Face Grouping 顔のグループ化

顔写真を分類して同一人物であると思われる顔写真にグループ化します。1000枚までの顔写真を分類できます。顔グループと分類できなかった顔グループ(messyGroup)が返されます。

Face Identification 顔識別

person groupと呼ばれる事前に定義した人物データベースから顔の識別を行います。各グループには10000人を登録でき、さらに個人ごとに248パターンの顔を登録できます。

Face Storage 顔ストレージ

Face Identificationなどで登録した顔をFace Storageに登録して使うことができます。1000人までの顔は無料枠で登録できます。
1枚当たり4MBまでの画像を登録できます。

Face Detection(顔検出)

画像内の人間の顔を検出してくれます。最大64人分まで対応できます。検出した顔の位置を示す矩形と、顔の特徴を返してくれます。

顔の特徴は以下のようなものがあります。

faceId

顔を識別するユニークなIDです。

faceAttributes

顔に関連する属性を検出してくれます。

  • age: 年齢を予測します。gender: 性別を予測します。
  • smile: 笑顔の度合いを検出します。
  • facialHair: 口ひげ(moustache)、あごひげ(beard)、もみあげ(sideburns)の長さを検出します。
  • headPose:ロール軸・ピッチ軸・ヨー軸(roll/yaw/pitch)の角度を検出します。
  • glasses: 眼鏡をかけているか、かけているならそのタイプを検出します。NoGlasses、ReadingGlasses、Sunglasses、SwimmingGogglesの4タイプで判定されます。
  • emotion: 感情の度合いを検出します。anger、contempt、disgust、fear、happiness、neutral、sadness、surpriseの8つの感情を判定できます。
  • hair: 髪が見えているか、禿げているか、また髪がある場合は髪の色を検出します。髪の色は種類の中から度合いを検出します(brown、blond、black、other、gray、red)。
  • makeup: 目と唇が化粧されているかどうかを予測します。
  • accessory: 顔周辺のアクセサリとして帽子、眼鏡、マスクをしてるかの度合いを検出します。
  • occlusion: 額、目、口が閉じているかを判定します。
  • blur: 顔のぼやけ具合を検出します。Low、Medium、Highのレベルと度合いで検出します。
  • exposure: 顔の露出具合をGoodExposure、OverExposure、UnderExposureのレベルと度合いで検出します。
  • noise:ノイズのレベルを検出します。Low、Medium、Highのレベルと度合いで検出します。

faceLandmarks

顔の特徴点の位置を検出してくれます。

  • 瞳孔(pupilLeft、pupilRight)
  • 鼻(noseTip、noseRootLeft)
  • 口(mouthLeft、mouthRight)
  • 眉毛(eyebrowLeftOuter、eyebrowLeftInner、eyebrowRightInner、eyebrowRightOuter)
  • 目(eyeLeftOuter、eyeLeftTop、eyeLeftBottom、eyeLeftInner、eyeRightInner、eyeRightTop、eyeRightBottom、eyeRightOuter、noseRootRight、noseLeftAlarTop、noseRightAlarTop、noseLeftAlarOutTip、noseRightAlarOutTip)
  • 唇(upperLipTop、upperLipBottom、underLipTop、underLipBottom)

その他

・特定の人物と認識した顔は24時間保持されて、同じfaceIdが返されます。

・無料枠では20トランザクション/分、有料プランでは10トランザクション/秒の処理件数制限があります。

料金

・トランザクション単位の課金です。

・月間30000トランザクションまでの無料枠あり。

・1000トランザクションごとに課金されます。

・有料枠は153円/1000トランザクションから

・Face Storageは画像1000枚あた月額51円

まとめ

顔に関する様々な属性、顔のパーツの位置などいろんなことができてかなり高性能です。顔系の認識は日本だとNECが長年研究して、製品化してましたが、個人はもちろん法人でもコストの面で導入が難しかったですが、今ならAzureのおかげで低コストでなんでもできて、すごい世の中になりました。


Computer Vision APIを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の23日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

23日目はAzure Cognitive ServicesのComputer Vision APIです。静止画から様々な情報を抽出できます。

概要

cognitive(コグニティブ)とは日本語で「認知」を意味します。ただ機械的に認識するだけでなく、人間と同じようにモノを理解して推論し、さらに自ら学習する、という意味で使われています。

Azure Congnitive Serviceでは視覚、音声、言語、知識、検索の5つのカテゴリで複数のAPIが提供されています。今回は画像認識系のサービスの中からComputer Vision APIを紹介します。静止画や動画などから情報を抽出して認識してくれます。
使える機能について説明していきます。

Tag images based on content

画像にタグ付けします。例えば芝生に建つ家の写真であれば、grass、houseなどのタグが返ってきます。

Categorize images

86のカテゴリから適切なカテゴリを選択してくれます。例えば芝生に建つ家の写真であれば、大カテゴリがOutdoor、小カテゴリがHouseが返されます。


https://docs.microsoft.com/ja-jp/azure/cognitive-services/computer-vision/home から引用

Identify the type and quality of images

画像のタイプを選択します。クリップアートかどうか、線画(Line Drawing)かどうか、を判断してくれます。画像の前処理に使えそうです。

Detect human faces and return their coordinates

静止画から人の顔を認識して、その位置と性別、年齢を予測してくれます。

Recognize domain-specific content

あるカテゴリに特化した認識ができます。現時点で対応しているのは、著名人の顔認識(celebrity recognition)とランドマーク認識(landmark recognition)です。

Generate descriptions of the content

静止画の説明を生成してくれます。例えば、大都会のモノクロ写真を与えると「a black and white photo of a large city」が返ってきます。

Perceiving Color Schemes

色情報を抽出します。背景色、前景色、全体色、アクセントカラー(black, blue, brown, gray, green, orange, pink, purple, red, teal, white, yellow)を判別してくれます。静止画かモノクロかの判定(Black & White or not)もできます。

Flag adult content

アダルトコンテンツかを判定し、成人向け・わいせつな描写を検知することができます。

Optical Character Recognition (OCR)

OCR、つまり画像からテキストを抽出します。文字が傾いていても傾きを検知して文字を認識できます。
25言語に対応しています。対応言語は、アラビア語、簡体字中国語、繁体字中国語、チェコ語、デンマーク語、オランダ語、英語、フィンランド語、フランス語、ドイツ語、ギリシャ語、ハンガリー語、イタリア語、日本語、韓国語、ノルウェー語、ポーランド語、ポルトガル語、ルーマニア語、ロシア語、セルビア語(キリル語とラテン語) 、スペイン語、スウェーデン語、トルコ語です。

Recognize Handwritten Text

プレビューで英語のみの対応ですが、手書き文字の認識もできます。

Generating Thumbnails

画像のサムネイルを作成します。画像のハイライト部分を切り出したり、縦横比も自動的に調整してくれたりします。

その他

・入力はバイナリかイメージのURL指定が利用可能

・JPEG, PNG, GIF, BMPをサポート

・画像ファイルは4MB以下のサイズ、かつ50x50ピクセル以上の大きさ

料金

・トランザクション単位の課金です。

・月間5000トランザクションまでの無料枠あり。

・Tag、Face、GetThumbnail Color、Image Typeは102円/1000トランザクションから

・OCR、Adult、Celebrity、Landmark153円/1000トランザクションから

・説明とOCR(手書き)は255円/1000トランザクションから

まとめ

Computer Vision API、調べてみたら思った以上にいろいろな機能があることが分かりました。APIとして利用することで、アプリケーションに画像認識の機能を追加することができ、応用の場が広そうです。


Azure Monitorを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の22日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

22日目はAzure Monitorです。メトリックと呼ばれる様々なシステムの数値やログを監視して、通知やアクションが可能です。

概要

Azure Monitorではシステムから発生する様々なメトリクスを収集するとともに、収集したデータの分析や、アラート検知、自動アクションなどを可能にして、システムの稼働監視と、可用性向上に役立ちます。

機能

・ダッシュボード

基本情報、重要なアラートがサマリとして表示されます。

アラート件数:メトリックアラートとアクティビティログアラートの発生件数を確認できます。
アクティビティログエラー:Azureリソースで発生したエラーイベントの件数が確認できます。
Azure Service Health:計画的なメンテナンス イベントなどのサマリ情報が確認できます。
Application Insights:アプリケーションの要求率、応答時間、エラー率、可用性などのKPIを確認できます。

・メトリック

メトリックとしてCPU使用率、正常ホストの数などを取得できます。

すべてのメトリックは1分間隔で取得され、30日間保存されます。ストレージの保存期間を変更することで長期間保存することも可能です。また、メトリックが閾値を超えた場合に、アラートメールを送信したり、事前に設定したアクションを起動することも可能です。

利用できるメトリックは以下で確認できます。
https://docs.microsoft.com/ja-jp/azure/monitoring-and-diagnostics/monitoring-supported-metrics

・自動スケール

メトリクスが条件を満たすと、仮想マシンを追加または削除したりして、リソース量を自動的に調整することができます。

・アラート

アラートはメトリックアラートとアクティビティログアラートが利用できます。

メトリックアラートは、指定したメトリックの値が、割り当てたしきい値を超えた時と戻った時にトリガーされます。
アクティビティログアラートは、フィルター条件と一致するログイベントが生成されたときにトリガーされます。

・通知

メトリックアラートは、メール通知とwebhookにより通知が可能です。
アクティビティ・ログ・アラートでは、アクショングループが利用可能です。
アクショングループでは、電子メールアドレスやSMS番号、webhook URLが利用可能で、さらにグループ化して管理することができます。

・Azureのその他の監視ツール

Azure Monitorの他の監視ツールとして、Application Insights、Log Analyticsがあります。

Application Insightsではアプリケーションのパフォーマンスの監視とユーザー分析ができます。Application Insights SDKをアプリケーションに組み込んで、応答時間、例外のトレース、デバッグのスナップショット、実行プロファイルなどのデータにアクセスできます。
Log Analytics(旧称はOMS Log Analytics)では、ログデータとメトリックデータを取り込んで、ログ検索や分析ができます。

その他

・プレビューのほぼリアルタイムのメトリックアラート(Near-Real-Time Metric alerts)では、メトリック値の変化を1分間隔で監視でき、詳細なアラートルール設定や複数のメトリックを組み合わせたトリガーも設定できる。

料金

・1440個の監視データが1標準API呼び出しとしてカウントされます。1分おきに1日監視すると1440個(60分×24時間)の監視データが取得され、1標準API呼び出しとなります。

・1000標準API呼び出しごとに課金されます。

・SMS、メール通知、プッシュ通知、webhookは通知回数に応じて課金されます。

まとめ

標準で1分間隔でメトリクスが収集されるので、ほぼリアルタイムな監視が実現できます。通知系はアクショングループの標準対応化を今後期待したいです。


Azure Cloud Shellを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の21日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

21日目はAzure Cloud Shellです。ブラウザ上でシェルを使うことができて、Azureの中で一番好きな機能かもしれません。

概要

Azure Cloud Shellは、Webブラウザ上で利用できるシェル環境です。sshクライアントを立ち上げることなく、Webブラウザ上でAzure CLIコマンドなどを実行できます。

以下のような機能を利用できます。

・Bashシェル、PowerShellの利用
・Azure Storage経由のファイル共有
・プリインストールされた各種ツール

Bash版を実際に使いながら機能を見ていきます。

Azure Portal右上の[>_]ボタンを選択すると、画面の下半分にシェルウィンドウが現れます。
今回は[Bash(Linux)]を選択します。

初回起動時には、ストレージの作成の指示が出ます。これを設定することでCloud ShellからAzureファイル共有をマウントしてくれるのでCloud Shell環境とのファイルのアップロード、ダウンロードができるようになります。
サブスクリプションを選んで、[Create storage]を選択します。

しばらく待つと、シェルが立ち上がります。
右上の□を押すと画面を最大化できます。

いくつかコマンドを打ってみました。homeディレクトリの下にはclouddriveというディレクトリがあり、Azureファイル共有にマウントされています。

このclouddriveフォルダにファイルを作成すると、Azure PortalのFileサービスからダウンロードすることができます。逆にFileサービスにファイルをアップロードすればCloud Shellから使うことができます。

プログラミング言語、ユーティリティともメジャーなものが標準で入っています。

azure-cli 2.0.23
.Net 2.0.0
Go 1.7
Java 1.8.0_151
Node.js 6.9.4
Python 3.5.2
Docker 17.04.0-ce
mysql 14.14
sqlcmd 13.1.0007.0

主だったもののバージョンを確認した結果も載せておきます。


$ az -v
azure-cli (2.0.23)

acr (2.0.17)
acs (2.0.22)
advisor (0.1.0)
appservice (0.1.22)
backup (1.0.3)
batch (3.1.7)
batchai (0.1.3)
billing (0.1.6)
cdn (0.0.10)
cloud (2.0.10)
cognitiveservices (0.1.9)
command-modules-nspkg (2.0.1)
configure (2.0.12)
consumption (0.2.0)
container (0.1.15)
core (2.0.23)
cosmosdb (0.1.15)
dla (0.0.15)
dls (0.0.18)
eventgrid (0.1.5)
extension (0.0.6)
feedback (2.0.6)
find (0.2.7)
interactive (0.3.11)
iot (0.1.15)
keyvault (2.0.15)
lab (0.0.13)
monitor (0.0.13)
network (2.0.19)
nspkg (3.0.1)
profile (2.0.16)
rdbms (0.0.9)
redis (0.2.10)
reservations (0.1.0)
resource (2.0.19)
role (2.0.15)
servicefabric (0.0.7)
sql (2.0.17)
storage (2.0.21)
vm (2.0.20)

Python location '/opt/az/bin/python3'
Extensions directory '/home/user_name/.azure/cliextensions'

Python (Linux) 3.6.1 (default, Dec 15 2017, 17:51:12)
[GCC 4.8.4]

Legal docs and information: aka.ms/AzureCliLegal

$ dotnet --version
2.0.0

$ go version
go version go1.7 linux/amd64

$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

$ node -v
v6.9.4

$ python --version
Python 3.5.2

$ docker -v
Docker version 17.04.0-ce, build 4845c56

$ mysql --version
mysql Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using EditLine wrapper

$ sqlcmd -?
Microsoft (R) SQL Server Command Line Tool
Version 13.1.0007.0 Linux
Copyright (c) 2012 Microsoft. All rights reserved.

ツールのリストは https://docs.microsoft.com/ja-jp/azure/cloud-shell/features に詳細があります。

料金

・Cloud Shellの利用には料金はかかりません。

・Azure Storageに作成した共有領域にのみ課金されます。

まとめ

azコマンドなどをインストールしなくてもすぐに使えるのでとても便利です。プログラミング言語、Git、Docker、DB接続クライアントなど一通りの機能をWebブラウザ上から使えるのも、ちょっとした確認をすぐにできてありがたいです。


Azure API Managementを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の20日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

20日目はAzure API Managementです。

概要

Azure API Managementは、フロントとバックエンドをつなぐAPIゲートウェイがクラウド上で提供されるとともに、キー認証やIPアドレスフィルタリング、リクエスト結果のキャッシュなどAPIに関連する様々な機能も使うことができます。

機能

・レベルとスケーリング

Developer、Standard、Premiumの3つのレベルから選択できます。
各レベルごとにユニットと呼ばれる単位で帯域、スループット、キャッシュ容量が定義されています。
たとえば、Standardレベルでは、1ユニットで、月に2億回のAPIコール、1テラバイトの帯域幅、1,000リクエスト/秒のスループットが提供されます。ユニットを追加して2ユニットにすれば毎月4億回のAPIコール、2テラバイトの帯域幅、2,000リクエスト/秒が提供されます。

Developerレベルは、その名の通り開発用です。SLAもありません。1ユニットだけ使えます。追加はできません。
StandardレベルになるとSLAもあり、スループットが向上、ユニットも4つまで使用できます。
Premiumレベルになると各リージョンで10ユニットまで使用でき、さらにプライマリリージョンに加えて他のリージョンにもユニットを追加することができます。

https://azure.microsoft.com/ja-jp/pricing/details/api-management/ から引用

・キャッシュ

API Managementでは、レスポンスデータをのキャッシュとして保管、再利用ができます。キャッシュを行うことで、レスポンスを速くしたり、バックエンドの負荷が減少したりするメリットがあります。

・セキュリティ

クライアント証明書認証を使用してバックエンドにアクセスする、キーやトークンでAPIを保護するといったことができます。

・変換ポリシー

変換ポリシーと呼ばれるルールを使ってAPIに投げられたリクエストのメッセージを変換できます。JSONからXML、XMLからJSON、メッセージ中の文字列の置換、URLの書き換えなどのポリシーが利用可能dス。


https://docs.microsoft.com/ja-jp/azure/api-management/api-management-transformation-policies から引用

その他

・レベル間でアップグレードまたはダウングレードを実行できるが、ダウングレードすると機能が使えなくなる場合がある。

・APIは、デフォルトではサブドメイン apim-service-name.azure-api.netに割り当てられる。独自ドメインを割り当てることも可能。

・APIへアクセスするための複数の言語向けのサンプルコード、API仕様書も自動生成されます。

料金

・利用したユニット数に応じて時間単位で課金されます。

まとめ

APIを利用することでシステム間を疎結合にして連携しやすくするとともに、API Managementのようなマネージドサービスを使うことで開発のコストも下げることができます。API Managementはセブン銀行のAPI連携でも利用されており、権限管理などの手間を削減しては開発期間の短縮や運用負荷軽減につながったいう事例も出てきており、Fintechはじめとした各種APIの基盤として今後も活用が増えていきそうです。


ささっと時短入門 Azure Container Instancse

image.png

はじめに

今回はDockerサービスである「Azure Container Instancse」について解説していきます。

  • ある程度 Docker について知見がある
  • 他のサービスとの比較をしたい
  • さくっとどんなサービスか時間をかけずに知りたい

こんな方向けの解説です。

Azure Container Instancse の概要

Dcokerベースのコンテナを簡単かつ高速に構築することができる、フルマネージドなDockerサービスです。
アクセスは HTTPS 経由で行われ、TLS を使用してクライアント接続がセキュリティで保護されます。

利用できるDockerレポジトリ

「Docker Hub」や「Azure Container Registry」からコンテナー・イメージをプルして、コンテナーを起動できます。
一般に公開されているもの、個人でカスタマイズしたものとも利用可能です。

リソースのサイズ

CPUとメモリの組合せを選ぶことができます。以下が選択可能です。

CPUコア⇒1コア、2コア、3コア、4コア
メモリ⇒1.0GB、1.5GB、2.0GB、2.5GB、3.0GB、3.5GB、7.0GB、17.0GB

ストレージ

コンテナーの停止後もストレージ状態を保持するために、外部ストレージからボリュームをマウントすることができます。
Container Instances から Azure ファイル共有を、マウントする方法も提供されています。

Azure Files ボリュームをコンテナーグループにマウントする

パブリックIPアドレス

パブリックIPをコンテナに紐づけて、 Container Instances をインターネットに公開することもできます。

その他

以下の場合だと、Azure Kubernetes Service (AKS) というサービスが適しています。

  • 複数コンテナー間でのサービスの検出、自動スケーリング
  • アプリケーションの調整されたアップグレードなど
  • コンテナーの完全なオーケストレーションが必要なシナリオ

料金

  • インスタンスを起動した回数と、CPU・メモリ利用時間に対して課金されます
  • インスタンスを1回起動するごとに0.26円
  • メモリはGBあたり0.001275円、CPUはコアあたり0.001275円

1か月(30日)、毎日1回だけコアが1個、メモリが1GBのコンテナー・インスタンスを作成すると約30円です(安い!)。

まとめ

コンテナを簡単にすぐに立てられるので、コンテナを短時間だけ使いたい、というユースケースにはもってこいのサービスです。

アプリケーションの開発とトラブルシューティングを支援するために、対話型シェルを提供していて
実行中のコンテナーでのコマンドの実行もサポートしています。
開発作業や時間のコストを大幅に抑えることができるのは、非常にありがたいですね。
Azure で最も高速かつ簡単にコンテナーを実行する方法として、最適なのではないでしょうか。


Azure HDInsightを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の18日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

18日目はAzure HDInsightです。Hadoopなど大規模データ分散処理基盤をマネージドサービスとして利用することができ、大量のデータを高速に分析、処理できます。アドベントカレンダーも残りあと1週間、がんばってお届けしていきます。

概要

Azure HDInsightはHadoopを始めとした大規模データ分散処理基盤をマネージドサービスとして利用することができます。分散処理基盤をAzureの仮想マシン上に構築し、関連ソフトウェアもインストール・設定されるので、導入の手間なく、簡単にデータ分析基盤を使い始めることができます。同様のクラウドサービスはAWSだとEMR
があります。

機能

・提供されるクラスター

Apache Hadoop、Apache Spark、Apache HBase、Microsoft R Server、Apache Storm、Apache Interactive Query(Live Long and Process)、Apache Kafkaがサポートされています。


https://docs.microsoft.com/ja-jp/azure/hdinsight/hadoop/apache-hadoop-introduction から引用

・提供されるコンポーネント・ユーティリティ

Mahout、Pig、ZooKeeperなどのコンポーネント、ユーティリティが提供されます


https://docs.microsoft.com/ja-jp/azure/hdinsight/hadoop/apache-hadoop-introduction から引用

提供されるコンポーネントやユーティリティの詳しい情報は以下に載っています。
HDInsight での Hadoop のコンポーネントとバージョン

・サポートするプログラミング言語

標準では、Java(Clojure、Jython、Scala)とPythonが利用可能です。後述するスクリプトアクションを使用して、他の言語をインストールすることもできます。

・スクリプトアクション

Bashスクリプトを使用して、クラスターの作成時または作成後に、HDInsightをカスタマイズすることができます。
スクリプトはAzure Data Lake Store、Azure Storage BLOB、ファイル共有サービス(GitHub、OneDrive、Dropboxなど)に置いてURIをHDInsightに設定します。設定や実行は、Azure Portal、Azure PowerShell、Azure CLI、HDInsight .NET SDKからできます。

・仮想マシンタイプ

クラスターのノードには、Aシリーズ(エントリレベル)とD3 v2(高速なCPU、CPU対比最適なメモリ構成、SSD)の仮想マシンが利用されます。既定の仮想マシンサイズは以下のようになります。


https://docs.microsoft.com/ja-jp/azure/hdinsight/hdinsight-component-versioning#hdinsight-standard-and-hdinsight-premium から引用

その他

・設定から利用開始までは20分ほど。

・Azure HDInsightはStandardとPremium(プレビュー)が提供される。Premiumでは、HDInsightクラスターをAzure Active Directory(Azure AD)のドメインに参加させて、セキュリティを強化することができる

・仮想マシンのA シリーズはデータノードとワーカーノードでは使用できない。

料金

・HDInsightクラスターを構成するノードの台数、利用時間に課金されます(分単位)。クラスターが作られると課金が開始され、クラスターが削除されると課金が終了します。

・R Serverクラスターの使用には追加料金が発生する(コア時間に対して課金)。

まとめ

Hadoopを始めとしたデータ分散処理基盤はオープンソースのものが普及して、多くの企業でデータ分析に使われています。ソフトウェア自体はオープンですが、ハードウェアの構築、関連ソフトウェアのインストール、設定は作業量が多く、設定の組み合わせも多くなり、大変です。HDInsightを使うことでこのような導入作業の手間が不要で、その後の運用も省力化することができ、とても魅力的なサービスです。


Azure Functionsを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の17日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

17日目はAzure Functionsです。今はやりのサーバレスアーキテクチャで、サーバを立てずにコードを実行できます

概要

Azure Functionsは、クラウド上でコード(関数)をサーバなしに手軽に実行できるサービスです。利用者はサーバの管理を気にする必要はなく、アプリケーションロジックに集中することができます。サーバ使用料は不要で、関数を実行した回数と時間に対して課金されます。。

機能

・利用できるプログラミング言語

試験段階、プレビューのものも含めるとC#、JavaScript、F#、Java、Python、PHP、TypeScript、バッチ(.cmd、.bat)、Bash、PowerShellが利用可能です。
1.xの試験段階の言語は、スケーリングが適切に行われず、パフォーマンスが出ないといった可能性があるので、運用時は注意が必要です。


https://docs.microsoft.com/ja-jp/azure/azure-functions/supported-languages から引用

・トリガー

Blob Storageにファイルが格納された時など、イベントをトリガーにしてFunctions関数を起動できます。サポートされるトリガーは、以下の通りです。

HTTPTrigger:HTTP要求をトリガーに、コードを起動します
TimerTrigger:時刻を指定してコードを起動します。cron相当のスケジュール管理ができます。
GitHub webhook:GitHubリポジトリで発生するイベントをトリガーにコードを起動します。
汎用webhook:外部Webサービスのwebhookをトリガーにコードを起動します。
CosmosDBTrigger:Azure Cosmos DBへのデータの追加および更新されたことをトリガーに、コードを起動します。
BlobTrigger:Azure Storage BLOBがコンテナーに追加されたことをトリガーに、コードを起動します。
QueueTrigger:Azure Storageキューにメッセージが配信されたことをトリガーに、コードを起動します。
EventHubTrigger:Azureイベント ハブに送信されたことをトリガーに、コードを起動します。IoTでも使いやすいシナリオです。
ServiceBusQueueTrigger:メッセージ・キューをリッスンし、コードを起動します。。
ServiceBusTopicTrigger:トピックをサブスクライブすることで、コードを起動します。

・スケール

コード実行時に必要なインスタンスが自動的に追加・削除されます。メモリも必要に応じて最大1536MBまで自動的に拡張されます

その他

・Azureのサーバレス系サービスは他にも、Microsoft Flow、Azure Logic Apps、Azure App Service WebJobsがある。

・メモリ使用量を明示的に設定する必要はない。

料金

・従量課金プランとApp Serviceプランがあります。

・従量課金プランの場合は、実行回数とリソース使用量(メモリ使用量×時間)に対して課金されます。

・従量課金プランの場合は、リソース使用量は、平均メモリサイズ(GB)に実行にかかった時間(ミリ秒)を乗じて計算されます。単位はギガバイト秒(GB秒)です。メモリ使用量は、128MB単位で切り上げて測定されます。

・従量課金プランの場合は、月間無料使用分として、月あたり100万回のリクエストと、400,000GB秒のリソース使用量が含まれます。

まとめ

試験段階のものもありますが、多くの種類の言語でコードを記述できます。.cmd、.batのようなレガシーなものがあるのも驚きです。コードの発火元となるトリガーの様々なものを選択でき、Azure Functionsだけで、いろいろな処理を手軽に実装、実行できそうです。