如何缩放 Azure SignalR 服务实例?

本文介绍如何缩放 Azure SignalR 服务的实例。 有两种方案可用于缩放、纵向扩展和横向扩展。

  • 纵向扩展:获取更多单位、连接、消息等。 可以通过将定价层从“免费”更改为“标准”进行纵向扩展。
  • 横向扩展:增加 SignalR 单位数。 最多可以横向扩展到 100 个单位。 对于单个 SignalR 服务实例,可以选择下述有限的单位选项进行缩放:1、2、3、4、5、6、7、8、9、10、20、30、40、50、60、70、80、90、100 个单位。 如果要缩放超过 100 个单位,Premium_P2 SKU 会提供扩展的功能。

应用缩放设置需要花费几分钟时间。 在极少数情况下,应用可能需要大约 30 分钟。 缩放不需要更改代码或重新部署服务器应用程序。

有关单个 SignalR 服务的定价和容量信息,请参阅 Azure SignalR 服务定价详细信息

注意

将 SignalR 服务从“免费”层更改为“标准”层或“高级”层(或反之)会更改公共服务 IP。在整个 Internet 中将更改传播到 DNS 服务器通常需要 30-60 分钟。 在更新 DNS 之前,服务可能不可访问。 一般我们不建议经常更改定价层。

在 Azure 门户中纵向扩展

  1. 在浏览器中,打开 Azure 门户

  2. 在 SignalR 服务页上的左侧菜单中,选择“纵向扩展”。

  3. 单击“更改”,然后在弹出的边栏选项卡中选择“标准”层。

    Screenshot of scaling up on Portal.

  4. 选择“保存”。

在 Azure 门户中横向扩展

  1. 在浏览器中,打开 Azure 门户

  2. 在“SignalR 服务”页上的左侧菜单中,选择“横向扩展”。

  3. 选择“手动缩放”扇区中的单位。

    Screenshot of scaling out on Portal.

  4. 选择“保存”。

使用 Azure CLI 进行缩放

此脚本将创建“免费”层的新 SignalR 服务资源和新的资源组,并将此资源组纵向扩展到“标准”层。

#!/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 chinaeast2

# 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 服务限制

使用 Premium_P2 SKU 的增强大型实例支持

新 Premium_P2 SKU(目前为预览版)旨在帮助实现广泛可伸缩性以应对高需求场景。 对于单个 SignalR 服务实例,此 SKU 允许在 100、200、300、400、500、600、 700、800、900、1000 单位范围内缩放。 这种增强功能可处理多达 100 万个并发连接,以满足大规模的实时通信需求

可以使用 Azure 门户或 Azure CLI 将 SKU 纵向扩展到 Premium_P2。

Premium_P2 层在内部使用另一种体系结构来管理大量基础资源。 因此,此层级的缩放操作应该会比较小 SKU 中的缩放操作用时更长。

注意

请注意,每个区域每个订阅的 SignalR 单位数的默认配额上限为 150。 这是一个软限制,可以根据请求增加。 为此,只需提交支持工单以请求调整此配额。

后续步骤

本指南介绍了如何缩放单个 SignalR 服务实例。

Azure SignalR 服务高级层支持自动缩放。

缩放、分片和跨区域方案还支持多个终结点。