Автоматическое обновление единиц обмена сообщениями в пространстве имен Служебной шины Azure

Благодаря автомасштабированию вы получаете именно тот объем ресурсов, который нужен для обработки нагрузки в вашем приложении. Эта функция позволяет добавлять ресурсы для обработки дополнительной нагрузки и удалять неиспользуемые ресурсы для экономии средств. Дополнительные сведения о функции автомасштабирования в Azure Monitor см. в статье Общие сведения об автомасштабировании в Microsoft Azure.

Обмен сообщениями через служебную шину ценовой категории "Премиум" обеспечивает изоляцию ресурсов на уровне процессора и памяти, чтобы рабочая нагрузка каждого клиента выполнялась изолированно. Контейнер ресурса называется единицей обмена сообщениями. Дополнительные сведения о единицах обмена сообщениями см. в статье Служебная шина ценовой категории "Премиум".

Используя функцию автомасштабирования для пространств имен Служебной шины ценовой категории "Премиум", можно указать минимальное и максимальное число единиц обмена сообщениями, а также автоматически добавлять или удалять единицы обмена сообщениями согласно набору правил.

Например, с помощью функции автомасштабирования можно реализовать следующие сценарии масштабирования для пространств имен Служебной шины:

  • увеличение числа единиц обмена сообщениями для пространства имен Служебной шины, когда загрузка ЦП пространством имен превышает 75 %;
  • уменьшение числа единиц обмена сообщениями для пространства имен Служебной шины, когда загрузка ЦП пространством имен ниже 25 %;
  • увеличение числа единиц обмена сообщениями в рабочее время и уменьшение в нерабочее время.

В этой статье показано, как автоматически масштабировать пространство имен служебной шины (изменять число единиц обмена сообщениями) на портале Azure с помощью шаблона Azure Resource Manager.

Важно!

Эта статья относится только к уровню Премиум Служебной шины Azure.

Настройка с помощью портала Azure

В этом разделе описано, как использовать портал Azure для настройки автомасштабирования единиц обмена сообщениями для пространства имен служебной шины.

Страница параметров автомасштабирования

Сначала выполните указанные ниже действия, чтобы перейти на страницу Параметры автомасштабирования для пространства имен Служебной шины.

  1. Войдите на портал Azure.

  2. В строке поиска введите Служебная шина, выберите элемент Служебная шина в раскрывающемся списке и нажмите клавишу ВВОД.

  3. Выберите пространство имен ценовой категории "Премиум" из списка пространств имен.

  4. Перейдите на страницу Масштаб.

    Пространство имен служебной шины — страница масштабирования

Ручное масштабирование

Этот параметр позволяет задать фиксированное число единиц обмена сообщениями для пространства имен.

  1. На странице Параметр автомасштабирования выберите параметр Ручное масштабирование, если он еще не выбран.

  2. Для параметра Единицы обмена сообщениями выберите число единиц обмена сообщениями в раскрывающемся списке.

  3. На панели инструментов нажмите кнопку Сохранить, чтобы сохранить параметры.

    Масштабирование единиц обмена сообщениями вручную

Пользовательское автомасштабирование — условие по умолчанию

Вы можете настроить автоматическое масштабирование единиц обмена сообщениями с помощью условий. Данное условие масштабирования применяется, если ни одно другое условие масштабирования не выполняется. Условие по умолчанию можно задать одним из следующих способов:

  • масштабирование на основе метрики (например, загрузки ЦП или использования памяти);
  • масштабирование до указанного числа единиц обмена сообщениями.

При использовании условия по умолчанию нельзя настроить расписание автомасштабирования в определенные дни или диапазон дат. Данное условие масштабирования применяется, если ни одно другое условие масштабирования с расписанием не выполняется.

Примечание

Чтобы повысить пропускную способность приема, служебная шина сохраняет некоторые сообщения в кэше. Служебная шина обрезает кэш, только если использование памяти превышает определенный высокий порог, например 90 %. Таким образом, если сущность отправляет сообщения, но не получает их, эти сообщения кэшируются и это отражается в увеличении использования памяти. Нет ничего важного, так как служебная шина при необходимости обрезает кэш, что в конечном итоге приводит к снижению использования памяти. Память не вызовет никаких проблем, если нет проблем с производительностью или другими проблемами с пространством имен. Рекомендуется использовать метрику использования ЦП для автомасштабирования с помощью служебной шины.

Масштабирование на основе метрики

Ниже описывается процедура добавления условия для автоматического увеличения числа единиц обмена сообщениями (масштаба), когда загрузка ЦП превышает 75 %, и увеличения их числа (масштаба), когда загрузка ЦП ниже 25 %. Увеличение с приращением выполняется от 1 до 2, от 2 до 4, от 4 до 8 и от 8 до 16. Аналогичным образом, уменьшение с приращением выполняется от 16 до 8, от 8 до 4, от 4 до 2 и от 2 до 1.

  1. На странице Параметр автомасштабирования выберите значение Пользовательское автомасштабирование для параметра Выберите, как нужно масштабировать ресурс.

  2. В разделе По умолчанию страницы укажите имя условия по умолчанию. Выберите значок с изображением карандаша, чтобы изменить текст.

  3. Для параметра Режим масштабирования выберите значение Масштабировать на основе метрики.

  4. Выберите + Добавить правило.

    По умолчанию — масштабирование на основе метрики

  5. На странице Правило масштабирования выполните указанные ниже действия.

    1. Выберите метрику в раскрывающемся списке Имя метрики. В этом примере выберите ЦП.

    2. Выберите оператор и пороговые значения. В данном примере это Больше и 75 для Порог метрики для действия масштабирования.

    3. Выберите операцию в разделе Действие. В данном примере выберите Увеличить.

    4. Затем нажмите кнопку Добавить.

      По умолчанию — горизонтальное масштабирование, если загрузка ЦП превышает 75 %

      Примечание

      В этом примере функция автомасштабирования увеличивает количество единиц обмена сообщениями для пространства имен, если общая загрузка ЦП превышает 75 %. Увеличение с приращением выполняется от 1 до 2, от 2 до 4, от 4 до 8 и от 8 до 16.

  6. Выберите + Добавить правило еще раз и выполните указанные ниже действия на странице Правило масштабирования.

    1. Выберите метрику в раскрывающемся списке Имя метрики. В этом примере выберите ЦП.

    2. Выберите оператор и пороговые значения. В данном примере это Меньше и 25 для Порог метрики для действия масштабирования.

    3. Выберите операцию в разделе Действие. В данном примере выберите Уменьшить.

    4. Затем нажмите кнопку Добавить.

      По умолчанию — масштабирование при использовании ЦП менее 25 %

      Примечание

      В этом примере функция автомасштабирования уменьшает количество единиц обмена сообщениями для пространства имен, если общая загрузка ЦП ниже 25 %. Уменьшение с приращением выполняется от 16 до 8, от 8 до 4, от 4 до 2 и от 2 до 1.

  7. Задайте минимальное и максимальное число единиц обмена сообщениями, а также число по умолчанию.

    Правило по умолчанию на основе метрики

  8. На панели инструментов нажмите кнопку Сохранить, чтобы сохранить параметр автомасштабирования.

масштабирование до указанного числа единиц обмена сообщениями.

Чтобы настроить правило масштабирования пространства имен, предполагающее использование определенного количества единиц обмена сообщениями, выполните указанные ниже действия. В этом случае условие по умолчанию также применяется, если ни одно из других условий масштабирования не выполняется.

  1. На странице Параметр автомасштабирования выберите значение Пользовательское автомасштабирование для параметра Выберите, как нужно масштабировать ресурс.

  2. В разделе По умолчанию страницы укажите имя условия по умолчанию.

  3. Для параметра Режим масштабирования выберите значение Масштабирование до определенных единиц обмена сообщениями.

  4. Для параметра Единицы обмена сообщениями выберите число единиц обмена сообщениями по умолчанию.

    По умолчанию — масштабирование до определенных единиц обмена сообщениями

Пользовательское автомасштабирование — дополнительные условия

В предыдущем разделе было показано, как добавить условие по умолчанию для параметра автомасштабирования. В этом разделе демонстрируется, как добавить дополнительные условия к параметру автомасштабирования. Для этих дополнительных условий, применяемых не по умолчанию, можно настроить расписание в виде определенных дней недели или диапазона дат.

Масштабирование на основе метрики

  1. На странице Параметр автомасштабирования выберите значение Пользовательское автомасштабирование для параметра Выберите, как нужно масштабировать ресурс.

  2. В блоке По умолчанию выберите Добавить условие масштабирования.

    Пользовательский — добавление ссылки на условие масштабирования

  3. Укажите имя условия.

  4. Убедитесь в том, что выбран параметр Масштабировать на основе метрики.

  5. Выберите + Добавить правило, чтобы добавить правило для увеличения числа единиц обмена сообщениями, когда общая загрузка ЦП превышает 75 %. Выполните действия из раздела, посвященного условию по умолчанию.

  6. Задайте минимальное и максимальное число единиц обмена сообщениями, а также число по умолчанию.

  7. Вы можете также настроить расписание для пользовательского условия (но не для условия по умолчанию). Можно указать даты начала и окончания для условия (или) выбрать конкретные дни (понедельник, вторник и т. д.) в неделе.

    1. Если выбран вариант Укажите даты начала и окончания, выберите часовой пояс, дату и время начала и дату и время окончания для применения условия (как показано на рисунке ниже).

      Минимальное, максимальное и стандартное значения для количества единиц обмена сообщениями

    2. Если выбран вариант Повторять в определенные дни, выберите дни недели, часовой пояс, время начала и время окончания, когда должно применяться условие.

      Повторение определенных дней

масштабирование до указанного числа единиц обмена сообщениями.

  1. На странице Параметр автомасштабирования выберите значение Пользовательское автомасштабирование для параметра Выберите, как нужно масштабировать ресурс.

  2. В блоке По умолчанию выберите Добавить условие масштабирования.

    Пользовательский — добавление ссылки на условие масштабирования

  3. Укажите имя условия.

  4. Для параметра Режим масштабирования выберите значение Масштабирование до определенных единиц обмена сообщениями.

  5. Выберите число единиц обмена сообщениями из раскрывающегося списка.

  6. В качестве расписания можно либо указать даты начала и окончания для условия, либо выбрать конкретные дни недели (понедельник, вторник, и т.д.) и время.

    1. Если выбран вариант Укажите даты начала и окончания, выберите часовой пояс, дату и время начала и дату и время окончания для применения условия.

    Масштабирование до определенных единиц обмена сообщениями — даты начала и окончания

    1. Если выбран вариант Повторять в определенные дни, выберите дни недели, часовой пояс, время начала и время окончания, когда должно применяться условие.

    Масштабирование до определенных единиц обмена сообщениями — повторение определенных дней

    Дополнительные сведения о работе параметров автомасштабирования, в частности о выборе профиля или условия и оценке нескольких правил, см. в статье Основные сведения о параметрах автомасштабирования.

    Примечание

    • Метрики, которые вы просматриваете для принятия решения об автомасштабировании, могут быть устаревшими на 5-10 минут. В случае с пиковыми рабочими нагрузками рекомендуется использовать более короткие промежутки времени для увеличения масштаба и более длинные (> 10 минут) — для уменьшения, чтобы обеспечить достаточное количество единиц обмена сообщениями.

    • Если возникают сбои из-за нехватки емкости (нет доступных единиц обмена сообщениями), отправьте запрос в службу поддержки.

Журнал выполнения

Перейдите на вкладку Журнал выполнения на странице Масштаб, чтобы увидеть диаграмму, на которой отображается количество единиц обмена сообщениями, наблюдаемое подсистемой автомасштабирования. Если диаграмма пуста, это означает, что автомасштабирование либо не настроено, либо настроено, но отключено, либо находится в режиме ожидания.

Снимок экрана: **Журнал выполнения** на странице **Масштаб**.

Уведомления

Перейдите на вкладку Уведомление на странице Масштаб, чтобы:

  • включить отправку уведомлений по электронной почте администраторам, соадминистраторам и дополнительным администраторам;

  • включить отправку уведомлений по электронной почте конечным точкам HTTP или HTTPS, которые предоставляются веб-перехватчиками.

    Снимок экрана: вкладка **Уведомление** на странице **Масштаб**.

Настройка с помощью шаблона Resource Manager

Следующий пример шаблона Resource Manager можно использовать для создания пространства имен служебной шины с очередью и для настройки параметров автомасштабирования для пространства имен. В этом примере указаны два условия масштабирования.

  • Условие масштабирования по умолчанию: увеличивать единицы обмена сообщениями, если средняя загрузка ЦП выше 75% и уменьшать их, если средняя загрузка ЦП ниже 25%.
  • Назначать две единицы обмена сообщениями пространству имен в выходные дни.

Шаблон

{
	"$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"
			}
		}
	]
}

Вы также можете создать пример JSON для ресурса настройки автомасштабирования с помощью портала Azure. Настроив параметры автомасштабирования на портале Azure, выберите JSON на панели команд на странице Масштабирование.

Изображение, показывающее выбор кнопки JSON на панели команд страницы **Scale** в портал Azure.

Затем добавьте JSON в раздел resources шаблона Resource Manager, как показано в предыдущем примере.

Дополнительные сведения

При использовании параметра Настраиваемое автомасштабирование с условием или профилем по умолчанию единицы обмена сообщениями постепенно увеличиваются (1 –> 2 –> 4 –> 8 –> 16) или уменьшаются (16 –> 8 –> 4 –> 2 –> 1).

При создании дополнительных условий единицы обмена сообщениями не могут постепенно увеличиваться или уменьшаться. Предположим, что у вас есть два профиля, определенных, как показано в следующем примере. В 06:00 UTC для единиц обмена сообщениями устанавливается значение 16, а в 21:00 UTC — 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]
				}
			}
		}
	]
}

Рекомендуется создавать правила, чтобы единицы обмена сообщениями увеличивались или уменьшались постепенно.

Дальнейшие действия

Дополнительные сведения о единицах обмена сообщениями см. в этой статье.