この記事では、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 でのスケールアップ
ブラウザーで、Azure Portal を開きます。
SignalR Service ページで、左側のメニューから [スケールアップ] を選択します。
[ 変更 ] をクリックし、ポップ アウト ブレードで [Standard レベル] を選択します。
保存 を選択します。
Azure portal でのスケールアウト
ブラウザーで、Azure Portal を開きます。
SignalR Service ページで、左側のメニューから [スケールアウト] を選択します。
[手動スケール] セクターで単位を選択します。
保存 を選択します。
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 レベルでサポートされています。
スケーリング、シャーディング、リージョン間のシナリオでは、複数のエンドポイントもサポートされています。