Azure SignalR Service インスタンスをスケーリングする方法

この記事では、Azure SignalR Service のインスタンスをスケーリングする方法について説明します。 スケーリングには、スケールアップとスケールアウトの 2 つのシナリオがあります。

  • スケールアップ: より多くのユニット、接続、メッセージなどを取得します。 価格レベルを Free から Standard に変更することでスケールアップします。
  • スケールアウト: SignalR ユニットの数を増やします。 最大 100 ユニットまでスケールアウトできます。 スケーリングには、1、2、3、4、5、6、7、8、9、10、20、30、40、50、60、70、80、90、100 ユニットの 1 つの SignalR サービス インスタンスに対して選択する単位オプションは限られています。 100 ユニットを超えてスケーリングする場合、 Premium_P2 SKU には拡張された機能が用意されています。

スケール設定の適用には数分かかります。 まれに、適用に約 30 分かかる場合があります。 スケーリングでは、コードを変更したり、サーバー アプリケーションを再デプロイしたりする必要はありません。

個々の SignalR Service の価格と容量については、「 Azure SignalR Service の価格の詳細」を参照してください。

注

異なる価格レベル間で Azure SignalR Service をスケーリングすると、サービスのダウンタイムが発生する可能性があります。 ダウンタイムの動作は階層の組み合わせによって異なり、表にまとめられています。

スケール シナリオ ダウンタイムが予想される
無料↔スタンダード/プレミアム イエス
Standard_S1 ↔ Premium_P1 いいえ
Premium_P1 ↔ Premium_P2 いいえ

ダウンタイムが予想されるスケール シナリオでは、スケーリング操作中に パブリック サービスの IP アドレスが変更 されるため、ダウンタイムが発生します。 この IP 変更は、通常、DNS サーバー全体にグローバルに反映されるまで に 30 から 60 分 かかります。その間、サービスに一時的に到達できない可能性があります。 一般に、価格レベルを頻繁に変更することはお勧めしません。

Azure portal でのスケールアップ

  1. ブラウザーで、Azure Portal を開きます。

  2. SignalR Service ページで、左側のメニューから [スケールアップ] を選択します。

  3. [ 変更 ] をクリックし、ポップ アウト ブレードで [Standard レベル] を選択します。

    ポータルでのスケールアップのスクリーンショット。

  4. 保存 を選択します。

Azure portal でのスケールアウト

  1. ブラウザーで、Azure Portal を開きます。

  2. SignalR Service ページで、左側のメニューから [スケールアウト] を選択します。

  3. [手動スケール] セクターで単位を選択します。

    ポータルでのスケールアウトのスクリーンショット。

  4. 保存 を選択します。

Azure CLI を使用したスケーリング

このスクリプトでは、 Free レベルの新しい SignalR Service リソースと新しいリソース グループを作成し、 Standard レベルにスケールアップします。

#!/bin/bash

# Generate a unique suffix for the service name
let randomNum=$RANDOM*$RANDOM

# Generate a unique service and group name with the suffix
SignalRName=SignalRTestSvc$randomNum
#resource name must be lowercase
mySignalRSvcName=${SignalRName,,}
myResourceGroupName=$SignalRName"Group"

# Create resource group 
az group create --name $myResourceGroupName --location eastus

# Create the Azure SignalR Service resource
az signalr create \
  --name $mySignalRSvcName \
  --resource-group $myResourceGroupName \
  --sku Free_F1 \
  --service-mode Default

# Scale up to Standard Tier, and scale out to 50 units
az signalr update \
  --name $mySignalRSvcName \
  --resource-group $myResourceGroupName \
  --sku Standard_S1 \
  --unit-count 50

新しいリソース グループに対して生成された実際の名前はメモしておいてください。 すべてのグループ リソースを削除する場合は、そのリソース グループ名を使用します。

デプロイのクリーンアップ

サンプル スクリプトの実行後は、次のコマンドを使用してリソース グループとすべての関連リソースを削除することができます。

az group delete --name myResourceGroup

価格レベルの比較

各価格レベルに含まれるメッセージや接続などの詳細については、「 SignalR Service の価格の詳細」を参照してください。

各レベルのサービス制限、クォータ、制約の表については、 SignalR Service の制限に関する説明を参照してください。

Premium_P2 SKU での L インスタンスサポートの強化

新しいPremium_P2 SKU は、需要の高いシナリオに対する広範なスケーラビリティを容易にするように設計されています。 この SKU を使用すると、100、200、300、400、500、600 の間でスケーリングできます。 1 つの SignalR Service インスタンスに対して 700、800、900、1000 ユニット。 この機能強化により、最大 100 万の 同時接続の処理が可能になり、大規模なリアルタイム通信のニーズに対応できます。

Azure portal または Azure CLI を使用して、SKU をPremium_P2するようにスケールアップできます。

Premium_P2レベルでは、内部的に異なるアーキテクチャを使用して、大量の基になるリソースを管理します。 したがって、このレベルのスケーリング操作は、小さな SKU のレベルと比較して時間がかかる可能性があります。

注

既定のクォータ制限があり、SignalR ユニットの数はリージョンごとにサブスクリプションあたり 150 単位に制限されます。 これはソフト制限であり、要求に応じて増やすことができます。 これを行うには、このクォータの調整を要求するサポート チケットを送信するだけです。

次のステップ

このガイドでは、単一の SignalR Service インスタンスをスケーリングする方法について説明しました。

自動スケールは、Azure SignalR Service Premium レベルでサポートされています。

スケーリング、シャーディング、リージョン間のシナリオでは、複数のエンドポイントもサポートされています。