Azure のアーキテクチャ

Azure

この記事は最終更新から1年以上経過しています。内容が古くなっている可能性があります。

概要

Azure の各サービスを理解するにあたって、Azure がどのように動いているかを知るのはとても重要です。Azure の大まかなしくみを書くと、REST API でリソースに対する操作を受け取り、操作の内容によって、例えば vCPU を用意するなどの命令が、Fabric Controller に渡り、FC が実際に Azure を構成する物理サーバーに対して vCPU を用意するというような形になります。それぞれ、順番に観ていきましょう。

サーバーの構成

そもそも、Azure は仮想化技術に基づいて提供されているサービスです。そのため、IaaS のサービスを利用するにしても、物理的なサーバーを契約するのではなく、Azure の持つ物理サーバー上で仮想的に動作するサーバーを利用する形になります。この時、仮想環境を動かすサーバーをホストノードと呼びます。ホストノードに対して、ホスト上で稼働する VM などはゲストと呼ばれます。

このホストノードは、Azure を構成するために何千、何万台と用意されているブレードサーバーです。ホストはデータセンター内でラックに格納され、ラックには電源やスイッチ、ルーターなども格納されており、ひとまとまりでクラスターと呼ばれます。このクラスターは、コンピュートサービスやストレージサービスなど提供するサービスによって分割されています。

クラスター内のホストは、基本的には仮想環境を提供するために利用されていますが、一部のサーバーでは、Fabric Controller (FC) と呼ばれるクラウド管理ソフトウェアが実行されています。FC は、仮想環境を実行するホスト上にリソースを用意させたり、ホストの正常性を監視し、異常が発生した場合はホストを回復させます。FC は、クラスターのリーダー的な存在だと思っておけば大丈夫だと思います。

そして、そんなクラスターのリーダーに対して命令を下すのが、Orchestrator と REST API です。ユーザーが Azure Portal で Azure に対する操作を行うと Azure の REST API が実行され、REST API は、実行された内容をもとに FC に対して、実際のリソースの操作を伝えます。FC は、受け取った内容の通りに配下のホスト上でサービスを構成します。

<Azure のしくみ>
https://docs.microsoft.com/ja-jp/azure/cloud-adoption-framework/get-started/what-is-azure

ネットワークの構成

次に Azure のネットワーク構成です。ネットワークの構成については、Azure データセンターの内外のパターンについて、それぞれみていきます。

<Azure ネットワーク アーキテクチャ>
https://docs.microsoft.com/ja-jp/azure/security/fundamentals/infrastructure-network

Azure データセンター内の通信

データセンター内での通信を行う場合、例えば仮想マシン A から仮想マシン B へ通信する場合は、以下のような経路を通ります。

[仮想マシン A] → [ホスト A] → [スイッチ A] → … → [スイッチ B] → [ホスト B] → [仮想マシン B]

Azure の環境では、Virtual Network (VNet) として、好きなプライベート IP アドレスを使用することができます。ここで、もしかすると他のテナントとプライベート IP アドレスがかぶっても大丈夫なの?と疑問に思うかもしれません。

それについては、以下のドキュメントで説明されています。ザックリ説明すると、使用する VNet (サブネット) ごとに ID が決められており、通信できる ID 以外に対しては通信がいかないようになっています。なので、テナント A とテナント B で同じ IP レンジを使用していたとしても、競合してしまうことはありません。

<Hyper-V ネットワーク仮想化の技術の詳細 (Windows Server)>
https://docs.microsoft.com/ja-jp/windows-server/networking/sdn/technologies/hyper-v-network-virtualization/hyperv-network-virtualization-technical-details-windows-server

非常にわかりやすくまとめられていたので、こちらも

<[Day5] Azure のネットワークがさっぱり分からん>
https://www.syuheiuda.com/?p=4296

Azure データセンター外の通信

データセンター外での通信を説明するためには、まず Azure のバックボーンネットワークについて触れる必要があります。Azure を提供している Microsoft は、世界規模のバックボーン ネットワークを所有しています。このネットワークの規模は、世界で 2 番目に大きいらしいです。(1 位は、米軍だったかな)

このバックボーンネットワークは、Azure の各データセンターとつながっており、データセンター間での通信は、すべてこのバックボーンネットワークを使用しています。東日本、西日本リージョン間の通信はもちろん、大陸間を超えるような通信も Microsoft が利用できる海底ケーブルを使用して通信を行います。そのため、インターネットに出ることなく通信を完結させることができます。

<マイクロソフトのグローバル ネットワーク>
https://docs.microsoft.com/ja-jp/azure/networking/microsoft-global-network

また、このバックボーンネットワークは、インターネットとも接続されています。そのため、Azure リソースからインターネット、もしくはインターネットから Azure リソースへ通信を行うときには、バックボーンネットワークを経由して、MS の境界ルーターを通じてインターネットと通信をすることになります。

<Azure データセンター ネットワーク インフラストラクチャー>
https://jpaztech1.z11.web.core.windows.net/Azureデータセンターネットワークインフラストラクチャー.html