Azure リソースを同一の場所に配置してアプリケーションのパフォーマンスを改善する
アプリケーションのパフォーマンスは、IT 組織の成功を左右する中心的要素です。アプリケーションのパフォーマンスは、顧客満足度を向上させて最終的にビジネスの成長につなげられるかどうかに直接影響を及ぼす場合があります。
アプリケーションのパフォーマンスに影響を及ぼし得る要因は数多くあります。その 1 つは、ネットワーク待ち時間です。これは特に、デプロイされている仮想マシン間の物理的な距離の影響を受けます。
たとえば、2 つの Microsoft Azure 仮想マシンを単一の Azure リージョンに配置すれば、それらの仮想マシン間の物理的な距離を短縮できます。次のステップとして、それらの仮想マシンを単一の可用性ゾーンに配置すれば、互いどうしをさらに近くにデプロイできます。しかし、Azure の占有領域が拡大するにつれて、単一の可用性ゾーンが複数の物理的なデータ センターをまたぐようになり、結果として、アプリケーションの全体的なパフォーマンスに影響を及ぼすほどのネットワーク待ち時間が発生することもあります。リージョンが可用性ゾーンをサポートしていなかったり、アプリケーションで可用性ゾーンを使用しなかったりする場合は、結果としてアプリケーション層間の待ち時間が長くなる可能性があります。
本日、近接通信配置グループのプレビューを発表いたします。Azure IaaS (サービスとしてのインフラストラクチャ) リソースを同一の場所に配置して、互いのネットワーク待ち時間を短縮するために提供される新機能です。
Azure 近接通信配置グループは Azure 仮想マシンの新しい論理グループ機能であり、仮想マシンの配置場所を選択する際にデプロイの制約として使用されます。実際に、複数の仮想マシンを 1 つの近接通信配置グループに割り当てると、それらの仮想マシンは同一のデータ センター内に配置され、アプリケーションの待ち時間は短縮された確定的なものになります。
近接通信配置グループを使用すべき状況
近接通信配置グループを使用すると、仮想マシン間のネットワーク待ち時間が短縮されるため、アプリケーションの全体的なパフォーマンスが向上します。近接通信配置グループの使用を検討すべきなのは、アプリケーション層をデプロイするために、複数の仮想マシン、可用性セット、仮想マシン スケール セットのうち少なくともいずれかを使用する、多層型で IaaS ベースのデプロイの場合です。
たとえば、高可用性が得られるよう、あるアプリケーションの各階層をそれぞれ 1 つの可用性セットまたは仮想マシン スケール セットにデプロイする場合を考えてみましょう。そのアプリケーションのすべての階層に対して単一の近接通信配置グループを使用すれば、たとえ使用する仮想マシンの SKU やサイズが異なっていても、すべてのデプロイは互いに追従し、同一のデータ センターを使用することになります。この結果、待ち時間を最小限に抑えることができます。
近接通信配置グループで最良の結果を得るには、高速ネットワークを使用し、仮想マシンを最適化して低遅延を実現する必要があります。
近接通信配置グループの使用を開始する
近接通信配置グループの使用を開始する最も簡単な方法は、Azure Resource Manager (ARM) テンプレートを使用することです。
近接通信配置グループ リソースは、次のステートメントを追加するだけで作成できます。
{ "apiVersion": "2018-04-01", "type": "Microsoft.Compute/proximityPlacementGroups", "name": "[parameters('ppgName')]", "location": "[resourceGroup().location]" }
後でテンプレートからこの近接通信配置グループを仮想マシン (または可用性セットや仮想マシン スケール セット) に対して使用するには、次の依存関係とプロパティを追加するだけです。
{ "name": "[parameters('virtualMachineName')]", "type": "Microsoft.Compute/virtualMachines", "apiVersion": "2018-06-01", "location": "[parameters('location')]", "dependsOn": [ "[concat('Microsoft.Compute/proximityPlacementGroups/', parameters('ppgName'))]" ], "properties": { "proximityPlacementGroup": { "id": "[resourceId('Microsoft.Compute/proximityPlacementGroups',parameters('ppgName'))]" } }
近接通信配置グループについて詳しく調べるには、PowerShell と CLI で近接通信配置グループを使用することに関する次のチュートリアルを参照してください。
近接通信配置グループを使用する際に予期すべきこと
近接通信配置グループを使用すると、同一データ センター内への配置が行われます。ただし、近接通信配置グループはデプロイに関する追加の制約なので、割り当てエラーが発生する場合があります (複数の Azure 仮想マシンを同一の近接通信配置グループに配置できないなど)。
その近接通信配置グループ内の最初の仮想マシンを要求すると、そのデータ センターが自動的に選択されます。異なる仮想マシン SKU に対して 2 番目の要求を実行すると、選択済みのデータ センターにそれが存在しないため、要求が失敗する場合があります。この場合、OverconstrainedAllocationRequest エラーが返されます。トラブルシューティングを実行するには、Azure portal か API を使用して、選択されているリージョンまたはゾーンで利用できる仮想マシンをご確認ください。目的の SKU すべてが利用できる場合は、それらをデプロイする順序を変えてみてください。
スケールアウトするエラスティックなデプロイの場合、デプロイに近接通信配置グループの制約があると、その要求を満たせなくなる場合があります。近接通信配置グループを使用する場合は、すべての仮想マシンを同時に要求することをお勧めします。
近接通信配置グループは、現在プレビュー段階で、東日本、オーストラリア東部、インド中部を除くすべてのリージョンで無料で提供されています。
近接通信配置グループに関する追加情報を説明したドキュメントもご確認ください。
初期プレビュー プログラムに参加いただいた SAP からのコメントをご紹介します。
"この機能が一般提供されたのはすばらしいことです。通常のデプロイで活用したいと考えています。弊社のチームでは、SAP ランドスケープの大規模なデプロイを自動化しています。システムが最高のパフォーマンスを発揮するには、システムの各コンポーネント間で低遅延を確保することが不可欠です。特に重要なのは、アプリケーション サーバーとデータベースの間の通信、および同期レプリケーションを有効にする必要がある場合は HANA VM どうしの待ち時間です。2018 年末にさまざまな Azure リージョンで測定した結果、待ち時間が期待どおりでない場合や、最適な範囲に収まっていない場合があることがわかりました。この点を Microsoft に相談したところ、近接通信配置グループ (PPG) 機能の初期プレビューと評価への参加のお誘いを受けました。弊社の評価では、すべてのシステム コンポーネント間で待ち時間を 0.3 ミリ秒未満に抑えることができました。優れたシステム パフォーマンスを確保するのに十分すぎるほどです。最高の確定的結果は、PPG と VM NIC のネットワーク アクセラレーションを組み合わせた際に得られました。これにより、測定した待ち時間がさらに短縮されました。"
SAP、開発アーキテクト、Ventsislav Ivanov 氏