Azureの基礎　その８

#コア Cloud Services - Azure ネットワーク オプション

出展：https://docs.microsoft.com/ja-jp/learn/modules/intro-to-azure-networking/index

##サイトをAzureにデプロイする

###n層アーキテクチャの使用
・アプリケーションが2つ以上の論理層に分割される
・アーキテクチャ上、上の階層は下の階層からのサービスにアクセスすることができるが、下の階層が上の階層にアクセスすることはできない

###3層アーキテクチャ
・3つの階層があるn層アプリケーション
　・Web層：ブラウザーを介してユーザーにWebインターフェイスを提供する
　・アプリケーション層：ビジネスロジックを実行する
　・データ層：データベースとその他のストレージが含まれる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/5c06a49b-7a0e-138e-1e34-008ddc4e7829.png)

###仮想ネットワークとは
・Azure上で論理的に分離されたネットワークのこと
・仮想ネットワークを使用すると、Azureリソースが、他のリソース、インターネット、オンプレミスのネットワークと安全に通信することができる
・仮想ネットワークは1つのリージョン内に制限されるが、仮想ネットワークピアリングを使用すれば、異なるリージョンの複数の仮想ネットワークを相互に接続することができる
・仮想ネットワークは1つ以上のサブネットに分割できる
・サブネットは、個別のセクション内にリソースを整理し、セキュリティで保護するために役立つ
・アプリケーション層またはデータ層をオンプレミスネットワークに保持し、Web層をクラウドに配置しながら、アプリケーションの他の側面を厳密に制御することもできる
・VPNゲートウェイ（または仮想ネットワークゲートウェイ）によって、このシナリオが可能になる（インターネットを介したAzure Virtual Networkとオンプレミスの場所との間でセキュリティで保護された接続が実現される）
・物理ハードウェアの管理は、Azureによって自動的に行われる
・仮想ネットワークとゲートウェイは、ソフトウェアを通じて構成される

###ネットワーク セキュリティ グループ（NSG）とは
・Azureリソースへの着信ネットワークトラフィックを許可または拒否する
・ネットワークのクラウドレベルのファイアウォールと考えることができる

##Azure Load Balancerを使用したスケーリング

###可用性と高可用性とは
・可用性：サービスが中断なく稼働する長さ
・高可用性：長期間起動して実行しているサービス
・100%の可用性を実現するのは困難だが、多くのチームが少なくともファイブナイン（99.999%）の実現に努めている

###回復性とは
・異常な状態でシステムが機能を維持できる能力
・異常な状態
　　・自然災害
　　・ソフトウェアの更新やセキュリティ パッチの適用を含む計画的および計画外のシステムメンテナンス
　　・サイトへのトラフィックの急増
　　・分散型サービス拒否（DDoS）攻撃など悪意のある第三者による脅威

###ロードバランサーとは
・プール内の各システムにトラフィックを均等に分散させる
・高可用性と回復性の両方を実現するのに役立つ
・ロードバランサーはユーザーの要求を受け取り、その要求をWeb層内のいずれかのVMに要求を送信する
・VMが使用できない、または応答を停止している場合、ロードバランサーはそのVMへのトラフィックの送信を停止し、応答しているサーバーのいずれかにトラフィックを送信する
・負荷分散することで、サービスを中断せずにメンテナンス タスクを実行することができる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/a8e8342b-db1c-3487-5fcd-96d90140659a.png)

###Azure Load Balancerとは
・Microsoftが提供するロード バランサー サービス
・ユーザーのためにメンテナンスの面倒を見まる
・Load Balancerは受信と送信のどちらのシナリオもサポートし、低遅延と高スループットを実現できるだけでなく、あらゆる伝送制御プロトコル（TCP）アプリケーションとユーザーデータグラムプロトコル（UDP）アプリケーションの数百万ものフローにスケールアップできる
・ 一連の送信先IP/ポートに対する送信元IPおよびポートに基づいて転送ルールを定義する
・自分でメンテナンスする必要のあるインフラストラクチャやソフトウェアはない
　（一般的なロードバランサーソフトウェアを手動で構成すると、メンテナンスの必要なシステムが増える）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/c6bd7cd6-b83b-1cb8-9468-528ffcd76ab1.png)

###Azure Application Gateway
・Webアプリケーション用に設計されたロードバランサ
・トランスポートレベル（TCP）でAzure Load Balancerを使用し、高度なURLベースのルーティング規則を適用していくつかの高度なシナリオをサポートする
・Azure Application Gatewayを使用する場合のメリット
　　・Cookieアフィニティ：同じバックエンドサーバー上にユーザーセッションを保持する場合に便利
　　・SSL 終了：Application GatewayでSSL証明書を管理し、暗号化されていないトラフィックをバックエンドサーバーに渡して、暗号化/暗号化の解除のオーバーヘッドを回避することができる
　　　　　　　　必要とするアプリケーションに対する完全なエンドツーエンドの暗号化もサポートする
　　・Web アプリケーションファイアウォールApplication Gateway：ネットワークインフラストラクチャに対する悪意のある攻撃を検出するための詳細な監視とログ記録を備えた高度なファイアウォール（WAF）をサポートする
　　・URLルールベースのルート：Application Gatewayを使用すると、URLパターン、発信元IP アドレスおよびポートに基づいてトラフィックを送信先IPアドレスおよびポートにルーティングできる　　
　　・HTTPヘッダーを書き換える：重要なセキュリティシナリオを有効にするために、またはサーバー名などの機密情報を削除するために、各要求の受信および送信HTTPヘッダーの情報を追加または削除することができる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/056ea8e2-b1bd-220b-bbe7-b959712a7c48.png)

###コンテンツ配信ネットワーク（CDN）とは
・ユーザーにWebコンテンツを効率的に配信できるサーバーの分散ネットワーク
・ローカル リージョン内のユーザーにコンテンツを取得して待機時間を最小限に抑える方法の1つ

###ドメイン ネーム システム（DNS）とは
・わかりやすい名前をそのIPアドレスにマップする方法
　　cf）インターネットの電話帳
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545315/3109c5da-55ce-f78d-1878-c3ee33eef167.png)

##Azure Traffic Managerを使用して待ち時間を短縮する

###ネットワーク待ち時間とは
・ネットワーク経由でデータが送信されるのにかかる時間
・データが送信先に到達するまでにかかる時間
・待ち時間に影響する最も大きな要因は距離

###異なるリージョンへのスケールアウト
・待ち時間を短縮する1つの方法はサービスの正確なコピーを複数のリージョンに提供すること

###Traffic Managerを使用して最も近いエンドポイントにユーザーをルーティングする
・Azure Traffic Managerはユーザーに最も近いDNSサーバーを使用して、ユーザートラフィックを世界中に分散されたエンドポイントに送信する
・クライアントとサーバー間を通過するトラフィックを認識することはない
・クライアントのWebブラウザーを優先エンドポイントに送信する
・Traffic Manager は、待ち時間が最も短いエンドポイントなどに、いくつかの異なる方法でトラフィックをルーティングすることができる

###Load Balancerと Traffic Managerを比較する
・Azure Load Balancer
　　・サービスの可用性と回復性をより高めるため、同じリージョン内でトラフィックを分散させる
　　・応答していないVMを検出すると、プール内の別のVMにトラフィックを送信
・Traffic Manager
　　・DNSレベルで動作し優先エンドポイントにクライアントを送信する
　　・応答していないエンドポイントを検出すると、次に最も近い応答しているエンドポイントにトラフィックを送信する