Atualizar automaticamente as unidades do sistema de mensagens de um namespace do Barramento de Serviço do Azure

O dimensionamento automático permite ter a quantidade certa de recursos em execução para lidar com a carga em seu aplicativo. Ele permite adicionar recursos para lidar com os aumentos de carga e também economizar dinheiro removendo os recursos que estão ociosos. Confira a Visão geral do dimensionamento automático no Microsoft Azure para saber mais sobre o recurso de Dimensionamento Automático do Azure Monitor.

O Sistema de Mensagens Premium do Barramento de Serviço fornece isolamento de recursos no nível de CPU e memória, de modo que a carga de trabalho do cliente seja executada isoladamente. Esse contêiner de recurso é chamado de unidade do sistema de mensagens. Para saber mais sobre as unidades do sistema de mensagens, confira Sistema de Mensagens Premium do Barramento de Serviço.

Usando o recurso de Dimensionamento Automático para namespaces Premium do Barramento de Serviço, você pode especificar um número mínimo e máximo de unidades do sistema de mensagens e adicionar ou remover unidades do sistema de mensagens automaticamente com base em um conjunto de regras.

Por exemplo, você pode implementar os cenários de colocação em escala a seguir para namespaces do Barramento de Serviço usando o recurso de Dimensionamento Automático.

  • Aumente as unidades do sistema de mensagens de um namespace do Barramento de Serviço quando o uso da CPU do namespace ficar acima de 75%.
  • Diminua as unidades do sistema de mensagens para um namespace do Barramento de Serviço quando o uso da CPU do namespace ficar abaixo de 25%.
  • Use mais unidades do sistema de mensagens durante o horário comercial e menos fora do horário comercial.

Este artigo mostra como você pode dimensionar automaticamente um namespace do Barramento de Serviço (atualizar unidades do sistema de mensagens) usando o portal do Azure e um modelo do Azure Resource Manager.

Importante

Este artigo aplica-se apenas à camada premium do Barramento de Serviço do Azure.

Configuração usando o portal do Azure

Nesta seção, você aprende como usar o portal do Azure para configurar o dimensionamento automático de unidades do sistema de mensagens para um namespace do Barramento de Serviço.

Página de configuração do dimensionamento automático

Primeiro, siga estas etapas para navegar até a página de Configurações de Dimensionamento Automático para o namespace do seu Barramento de Serviço.

  1. Entre no portal do Azure.

  2. Na barra de pesquisa, digite Barramento de Serviço, selecione Barramento de Serviço na lista suspensa e pressione ENTER.

  3. Selecione o seu namespace Premium na lista de namespaces.

  4. Alternar para a página Escala.

    Namespace do Barramento de Serviço – Página Escala

Dimensionamento manual

Essa configuração permite definir um número fixo de unidades do sistema de mensagens para o namespace.

  1. Na página Configuração de dimensionamento automático, selecione Escala manual se isso ainda não estiver selecionado.

  2. Para configuração das unidades do sistema de mensagens, selecione na lista suspensa o número de unidades do sistema de mensagens.

  3. Selecione Salvar na barra de ferramentas para salvar a configuração.

    Dimensionar manualmente as unidades do sistema de mensagens

Dimensionamento automático personalizado – Condição padrão

Você pode configurar a colocação em escala automática das unidades do sistema de mensagens usando condições. Essa condição de escala é executada quando nenhuma das outras condições de escala corresponde. Você pode definir a condição padrão de uma das seguintes maneiras:

  • Escalar com base em uma métrica (como uso de CPU ou de memória)
  • Escalar para um número específico de unidades do sistema de mensagens

Não é possível definir um agendamento para executar o dimensionamento automático em um intervalo de datas ou um número de dias específico para uma condição padrão. Essa condição de escala é executada quando nenhuma das outras condições de escala com agendamentos corresponde.

Observação

Para melhorar a taxa de transferência de recebimento, o Barramento de Serviço mantém algumas mensagens em seu cache. O Barramento de Serviço corta o cache somente quando o uso de memória excede um determinado limite alto, como 90%. Portanto, se uma entidade estiver enviando mensagens, mas não as recebendo, essas mensagens serão armazenadas em cache e refletirão no aumento do uso de memória. Não há nada com o que se preocupar, pois o Barramento de Serviço corta o cache, se necessário, o que eventualmente faz com que o uso da memória desapareça. A memória não causará nenhum problema, a menos que haja desempenho ou outros problemas com o namespace. Recomendamos que você use a métrica de uso da CPU para dimensionamento automático com o Barramento de Serviço.

Escala baseada em uma métrica

O procedimento a seguir mostra como adicionar uma condição para aumentar automaticamente as unidades do sistema de mensagens (escalar horizontalmente) quando o uso da CPU for maior que 75% e diminuir as unidades do sistema de mensagens (reduzir horizontalmente) quando o uso da CPU for menor que 25%. Os incrementos são feitos de 1 para 2, 2 para 4, 4 para 8 e 8 para 16. Da mesma forma, os decrementos são feitos de 16 para 8, 8 para 4, 4 para 2 e 2 para 1.

  1. Na página Configuração de dimensionamento automático, selecione Dimensionamento automático personalizado para a opção Escolher como escalar seu recurso.

  2. Na seção Padrão da página, especifique um nome para a condição padrão. Selecione o ícone de lápis para editar o texto.

  3. Selecione Escalar com base em uma métrica para ver o Modo de escala.

  4. Selecione +Adicionar uma regra.

    Padrão – Escala baseada em uma métrica

  5. Na página Regra de escala, siga estas etapas:

    1. Selecione uma métrica na lista suspensa da métrica Nome da métrica. Neste exemplo, é CPU.

    2. Selecione um operador e valores de limite. Neste exemplo, são eles Maior que e 75 o Limite de métrica para disparar a ação de escala.

    3. Selecione uma operação na seção Ação. Neste exemplo, ela está definida como Aumentar.

    4. Em seguida, selecione Adicionar

      Padrão – Escalar horizontalmente se o uso da CPU for maior que 75%

      Observação

      O recurso de dimensionamento automático aumentará as unidades do sistema de mensagens para o namespace se o uso geral da CPU for superior a 75% neste exemplo. Os incrementos são feitos de 1 para 2, 2 para 4, 4 para 8 e 8 para 16.

  6. Selecione + Adicionar uma regra novamente e siga estas etapas na página Regra de escala:

    1. Selecione uma métrica na lista suspensa da métrica Nome da métrica. Neste exemplo, é CPU.

    2. Selecione um operador e valores de limite. Neste exemplo, são eles Menor que e 25 o Limite de métrica para disparar a ação de escala.

    3. Selecione uma operação na seção Ação. Neste exemplo, ela está definida como Diminuir.

    4. Em seguida, selecione Adicionar

      Padrão – Reduzir horizontalmente se o uso da CPU for inferior a 25%

      Observação

      O recurso de dimensionamento automático diminui as unidades do sistema de mensagens para o namespace se o uso geral da CPU ficar abaixo de 25% neste exemplo. Os decrementos são feitos de 16 para 8, 8 para 4, 4 para 2 e 2 para 1.

  7. Defina os números mínimo, máximo e padrão das unidades do sistema de mensagens.

    Regra padrão baseada em uma métrica

  8. Selecione Salvar na barra de ferramentas para salvar a configuração de dimensionamento automático.

Escalar para um número específico de unidades do sistema de mensagens

Siga estas etapas para configurar a regra a fim de escalar o namespace para usar o número específico de unidades do sistema de mensagens. Novamente, a condição padrão é aplicada quando nenhuma das outras condições de escala corresponde.

  1. Na página Configuração de dimensionamento automático, selecione Dimensionamento automático personalizado para a opção Escolher como escalar seu recurso.

  2. Na seção Padrão da página, especifique um nome para a condição padrão.

  3. Selecione Escalar para unidades específicas do sistema de mensagens no Modo de escala.

  4. Para Unidades do sistema de mensagens, selecione o número de unidades padrão do sistema de mensagens.

    Padrão – Escalar para unidades específicas do sistema de mensagens

Dimensionamento automático personalizado – Condições adicionais

A seção anterior mostra como adicionar uma condição padrão à configuração de dimensionamento automático. Esta seção mostra como adicionar mais condições à configuração de dimensionamento automático. Para essas condições adicionais não padrão, você pode definir um agendamento com base em dias específicos de uma semana ou em um intervalo de datas.

Escala baseada em uma métrica

  1. Na página Configuração de dimensionamento automático, selecione Dimensionamento automático personalizado para a opção Escolher como escalar seu recurso.

  2. Selecione Adicionar uma condição de escala no bloco Padrão.

    Personalizado – Adicionar um link de condição de escala

  3. Especifique um nome para a condição.

  4. Confirme se a opção Escalar com base em uma métrica está selecionada.

  5. Selecione + Adicionar uma regra para adicionar uma regra a fim de aumentar as unidades do sistema de mensagens quando o uso geral da CPU ficar acima de 75%. Siga as etapas da seção de condição padrão.

  6. Defina os números mínimo, máximo e padrão das unidades do sistema de mensagens.

  7. Você também pode definir um agendamento para uma condição personalizada (mas não para a condição padrão). É possível especificar datas de início e de término para a condição ou selecionar dias específicos (segunda-feira, terça-feira etc.) de uma semana.

    1. Se você selecionar Especificar datas de início/término, escolha o Fuso Horário, a Data e hora de início e a Data e hora de término (conforme mostrado na imagem a seguir) para que a condição entre em vigor.

      Valores mínimo, máximo e padrão para o número de unidades do sistema de mensagens

    2. Se você selecionar Repetir dias específicos, escolha os dias da semana, o Fuso Horário, a hora de início e a hora de término em que a condição deve ser aplicada.

      Repetir dias específicos

Escalar para um número específico de unidades do sistema de mensagens

  1. Na página Configuração de dimensionamento automático, selecione Dimensionamento automático personalizado para a opção Escolher como escalar seu recurso.

  2. Selecione Adicionar uma condição de escala no bloco Padrão.

    Personalizado – Adicionar um link de condição de escala

  3. Especifique um nome para a condição.

  4. Selecione a opção Escalar para unidades específicas do sistema de mensagens no Modo de escala.

  5. Selecione o número de unidades do sistema de mensagens na lista suspensa.

  6. Para o agendamento, especifique as datas de início e de término para a condição ou selecione dias específicos (segunda-feira, terça-feira etc.) de uma semana e horários.

    1. Se você selecionar Especificar datas de início/término, escolha o Fuso Horário, data e hora de início e data e hora de término para que a condição entre em vigor.

    Escalar para unidades específicas do sistema de mensagens – Datas de início e de término

    1. Se você selecionar Repetir dias específicos, escolha os dias da semana, o Fuso Horário, a hora de início e a hora de término em que a condição deve ser aplicada.

    Escalar para unidades de mensagens específicas – Repetir dias específicos

    Para saber mais sobre como funcionam as configurações de dimensionamento automático, especialmente como ela escolhe um perfil ou uma condição e avalia várias regras, confira Entender as configurações de dimensionamento automático.

    Observação

    • As métricas que você examina para tomar decisões sobre o dimensionamento automático podem ter de 5 a 10 minutos de idade. Quando você estiver lidando com cargas de trabalho com picos, recomendamos que você tenha durações menores para escalar verticalmente e duração mais longa para reduzir verticalmente (> 10 minutos) para garantir que haja unidades suficientes do sistema de mensagens a fim de processar cargas de trabalho com picos.

    • Se você encontrar falhas devido à falta de capacidade (nenhuma unidade do sistema de mensagens disponível), gere um tíquete de suporte conosco.

Histórico da execução

Alterne para a guia Executar histórico na página Dimensionar para ver um gráfico que representa o número de unidades do sistema de mensagens conforme observado pelo mecanismo de dimensionamento automático. Se o gráfico estiver vazio, isso significa que o dimensionamento automático não foi configurado, ou foi configurado mas desabilitado, ou está em um período de resfriamento.

Captura de tela mostrando **Histórico de execuções** na página **Dimensionar**.

Notificações

Alterne para a guia Notificar na página Dimensionar para:

  • Habilite o envio de emails de notificação para administradores, coadministradores e administradores adicionais.

  • Habilite o envio de emails de notificação para pontos de extremidade HTTP ou HTTPS expostos por webhooks.

    Captura de tela mostrando a guia **Notificar** da página **Dimensionar**.

Configurar usando o modelo do Resource Manager

Você pode usar o exemplo a seguir de modelo do Resource Manager para criar um namespace de Barramento de Serviço com uma fila e definir configurações de dimensionamento automático para o namespace. Neste exemplo, duas condições de escala são especificadas.

  • Condição de escala padrão: aumentar as unidades do sistema de mensagens quando o uso médio da CPU ultrapassar 75% e diminui-las quando o uso médio da CPU ficar abaixo de 25%.
  • Atribua duas unidades do sistema de mensagens ao namespace nos fins de semana.

Modelo

{
	"$schema": "https: //schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
	"contentVersion": "1.0.0.0",
	"parameters": {
		"serviceBusNamespaceName": {
			"type": "String",
			"metadata": {
				"description": "Name of the Service Bus namespace"
			}
		},
		"serviceBusQueueName": {
			"type": "String",
			"metadata": {
				"description": "Name of the Queue"
			}
		},
		"autoScaleSettingName": {
			"type": "String",
			"metadata": {
				"description": "Name of the auto scale setting."
			}
		},
		"location": {
			"defaultValue": "[resourceGroup().location]",
			"type": "String",
			"metadata": {
				"description": "Location for all resources."
			}
		}
	},
	"resources": [{
			"type": "Microsoft.ServiceBus/namespaces",
			"apiVersion": "2021-11-01",
			"name": "[parameters('serviceBusNamespaceName')]",
			"location": "[parameters('location')]",
			"sku": {
				"name": "Premium"
			},
			"properties": {}
		},
		{
			"type": "Microsoft.ServiceBus/namespaces/queues",
			"apiVersion": "2021-11-01",
			"name": "[format('{0}/{1}', parameters('serviceBusNamespaceName'), parameters('serviceBusQueueName'))]",
			"dependsOn": [
				"[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]"
			],
			"properties": {
				"lockDuration": "PT5M",
				"maxSizeInMegabytes": 1024,
				"requiresDuplicateDetection": false,
				"requiresSession": false,
				"defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S",
				"deadLetteringOnMessageExpiration": false,
				"duplicateDetectionHistoryTimeWindow": "PT10M",
				"maxDeliveryCount": 10,
				"autoDeleteOnIdle": "P10675199DT2H48M5.4775807S",
				"enablePartitioning": false,
				"enableExpress": false
			}
		},
		{
			"type": "Microsoft.Insights/autoscaleSettings",
			"apiVersion": "2021-05-01-preview",
			"name": "[parameters('autoScaleSettingName')]",
			"location": "East US",
			"dependsOn": [
				"[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]"
			],
			"tags": {},
			"properties": {
				"name": "[parameters('autoScaleSettingName')]",
				"enabled": true,
				"predictiveAutoscalePolicy": {
					"scaleMode": "Disabled",
					"scaleLookAheadTime": null
				},
				"targetResourceUri": "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]",
				"profiles": [{
						"name": "Increase messaging units to 2 on weekends",
						"capacity": {
							"minimum": "2",
							"maximum": "2",
							"default": "2"
						},
						"rules": [],
						"recurrence": {
							"frequency": "Week",
							"schedule": {
								"timeZone": "Eastern Standard Time",
								"days": [
									"Saturday",
									"Sunday"
								],
								"hours": [
									6
								],
								"minutes": [
									0
								]
							}
						}
					},
					{
						"name": "{\"name\":\"Scale Out at 75% CPU and Scale In at 25% CPU\",\"for\":\"Increase messaging units to 4 on weekends\"}",
						"capacity": {
							"minimum": "1",
							"maximum": "8",
							"default": "2"
						},
						"rules": [{
								"scaleAction": {
									"direction": "Increase",
									"type": "ServiceAllowedNextValue",
									"value": "1",
									"cooldown": "PT5M"
								},
								"metricTrigger": {
									"metricName": "NamespaceCpuUsage",
									"metricNamespace": "microsoft.servicebus/namespaces",
									"metricResourceUri": "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]",
									"operator": "GreaterThan",
									"statistic": "Average",
									"threshold": 75,
									"timeAggregation": "Average",
									"timeGrain": "PT1M",
									"timeWindow": "PT10M",
									"Dimensions": [],
									"dividePerInstance": false
								}
							},
							{
								"scaleAction": {
									"direction": "Decrease",
									"type": "ServiceAllowedNextValue",
									"value": "1",
									"cooldown": "PT5M"
								},
								"metricTrigger": {
									"metricName": "NamespaceCpuUsage",
									"metricNamespace": "microsoft.servicebus/namespaces",
									"metricResourceUri": "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]",
									"operator": "LessThan",
									"statistic": "Average",
									"threshold": 25,
									"timeAggregation": "Average",
									"timeGrain": "PT1M",
									"timeWindow": "PT10M",
									"Dimensions": [],
									"dividePerInstance": false
								}
							}
						],
						"recurrence": {
							"frequency": "Week",
							"schedule": {
								"timeZone": "Eastern Standard Time",
								"days": [
									"Saturday",
									"Sunday"
								],
								"hours": [
									18
								],
								"minutes": [
									0
								]
							}
						}
					}
				],
				"notifications": [],
				"targetResourceLocation": "East US"
			}
		}
	]
}

Você também pode gerar um exemplo JSON para um recurso de configuração de dimensionamento automático do portal do Azure. Depois de definir as configurações de dimensionamento automático no portal do Azure, selecione JSON na barra de comandos da página Escalar.

Imagem mostrando a seleção do botão JSON na barra de comandos da página **Dimensionar** no portal do Azure.

Em seguida, inclua o JSON na seção resources de um modelo do Resource Manager, conforme mostrado no exemplo anterior.

Considerações adicionais

Quando você usa a opção Dimensionamento automático personalizado com a condição ou o perfil Padrão, as unidades do sistema de mensagens são aumentadas (1 -> 2 -> 4 -> 8 -> 16) ou diminuídas (16 -> 8 -> 4 -> 2 -> 1) gradualmente.

Quando você cria condições adicionais, as unidades do sistema de mensagens não podem ser aumentadas ou diminuídas gradualmente. Suponha que você tenha dois perfis definidos conforme mostrado no seguinte exemplo. Às 06:00 UTC, as unidades do sistema de mensagens são definidas como 16 e, às 21:00 UTC, são reduzidas para 1.

{

	"Profiles": [
		{
			"Name": "standardProfile",
			"Capacity": {
				"Minimum": "16",
				"Maximum": "16",
				"Default": "16"
			},
			"Rules": [],
			"Recurrence": {
				"Frequency": "Week",
				"Schedule": {
					"TimeZone": "UTC",
					"Days": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"
					],
					"Hours": [6],
					"Minutes": [0]
				}
			}
		},
		{
			"Name": "outOfHoursProfile",
			"Capacity": {
				"Minimum": "1",
				"Maximum": "1",
				"Default": "1"
			},
			"Rules": [],
			"Recurrence": {
				"Frequency": "Week",
				"Schedule": {
					"TimeZone": "UTC",
					"Days": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
					"Hours": [21],
					"Minutes": [0]
				}
			}
		}
	]
}

Recomendamos que você crie regras de modo que as unidades do sistema de mensagens sejam aumentadas ou diminuídas gradualmente.

Próximas etapas

Para saber mais sobre as unidades do sistema de mensagens, consulte o Mensagens premium