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

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

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

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

Типы масштабирования

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

  • Горизонтальное масштабирование — добавляет больше модулей в развертывание сервиса. Например, масштабирование от одного модуля до нескольких. Поддерживается для масштабирования вручную и автоматического масштабирования.
  • Вертикальное масштабирование — добавляет CPU или память к текущему набору модулей в развертывании. Поддерживается для масштабирования вручную.

Когда вы увеличиваете количество модулей, доступных для сервиса, кластер Kubernetes создает дополнительные реплики существующих модулей развертывания сервиса, включая их конфигурацию и экземпляры сервиса в модулях.

Масштабирование также увеличивает доступность и общую пропускную способность экземпляров сервисов, а также потребление ими памяти и CPU. Поскольку вы масштабируете свою инфраструктуру Kubernetes, этот вариант является отказоустойчивым; вышедшие из строя модули автоматически восстанавливается, не затрагивая другие модули. Он также обеспечивает независимое и изолированное масштабирование, не затрагивая другие сервисы или компоненты вашей системы.

Примечание:

Кластер Kubernetes, на котором ваша организация развертывается, имеет конечное количество компьютерных узлов. Масштабируя несколько ГИС-сервисов вручную или автоматически, ваша организация может достичь предела компьютерных ресурсов, выделенных для ArcGIS Enterprise on Kubernetes. В этом случае обратитесь к ИТ-администратору, чтобы добавить больше узлов в кластер Kubernetes. Рассмотрите возможность использования кластерного автомасштабирования в качестве решения для этой проблемы в вашей среде.

Горизонтальное масштабирование

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

Горизонтальное масштабирование для выделенного сервиса геообработки

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

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

Горизонтальное масштабирование для развертывания общего сервиса объектов

Вертикальное масштабирование

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

Вертикальное масштабирование для выделенного сервиса изображений

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

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

Вертикальное масштабирование для выделенного картографического сервиса

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

Вертикальное масштабирование для развертывания общего картографического сервиса

Сценарии

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

  • Веб-карта в общественной организации неожиданно получает большой объем трафика, и у пользователей возникают задержки с производительностью. Администратор организации просматривает системные журналы и определяет, что картографический сервис, используемый веб-картой, перегружен. Во-первых, он может изменить режим работы сервиса с использования общих на использование выделенных ресурсов. Затем он может увеличить количество реплик модуля для развертывании сервиса. Предоставляя выделенные ресурсы для картографического сервиса, администратор гарантирует, что высокий трафик сервиса будет обрабатываться без проблем с производительностью.
  • Геодезическая компания накопила в своей организации сотни сервисов объектов. Все они работают в режиме общих ресурсов, поэтому их поддерживает одно развертывание сервиса. Ни один из сервисов не получает большого трафика, но использование всех ГИС-ресурсов организации загружает развертывание сервиса. Администратор организации выбирает масштабирование сервиса вручную, увеличивая количество реплик модулей в развертывании сервиса. Чем больше запущено общих экземпляров, тем лучше обрабатывается трафик множества сервисов объектов организации.
  • Во время выполнения проекта переноса ресурсов ГИС-организация городского правительства повторно публикует множество веб-карт и веб-слоев в своей организации. Из-за нехватки времени они хотят завершить это побыстрее. Поскольку публикация сервисов, лежащих в основе веб-карт и веб-слоев, выполняется служебным сервисом PublishingTools, ресурсы компьютера, доступные этому служебному сервису, определяют, насколько быстро может происходить публикация. Администратор организации временно увеличивает количество реплик пода в развертывании сервиса PublishingTools, чтобы повысить эффективность публикации на время проекта. После завершения проекта он уменьшает количество реплик пода в развертывании сервиса для экономии ресурсов компьютера.
  • При рассмотрении первых двух описанных выше сценариев, где есть либо перегруженный картографический сервис, либо одновременное использование большого количества сервисов объектов, что приводит к перегрузке системы, ручное масштабирование выделенного картографического сервиса или развертывание общих сервисов объектов может быть не лучшим решением. Масштабирование вручную требует постоянного мониторинга нагрузки и понимания моделей нагрузки, чтобы определить оптимальное количество модулей. Если нагрузка прерывистая и непредсказуемая, то ручное добавление большого количества модулей приведет к излишней трате ресурсов при небольшой нагрузке на систему. И наоборот, вы хотите, чтобы система могла масштабироваться, поскольку для более тяжелых нагрузок требуется больше модулей.

    Оптимальным вариантом будет, когда администратор может использовать автоматическое масштабирование. Автоматическое масштабирование позволяет поддерживать минимальное количество модулей и задавать максимальное количество модулей, до которого система может масштабироваться, в зависимости от установленных вами пороговых значений CPU. Этот метод обеспечивает автоматическое определение того, когда увеличить или уменьшить количество модулей в ответ на изменение нагрузки. Это устраняет необходимость постоянного мониторинга и позволяет системе экономить ресурсы.

Изменение режима работы сервиса

Если картографический сервис или сервис объектов, использующий общие ресурсы, получает постоянный трафик, вы можете настроить режим сервиса для использования выделенных ресурсов. Это открывает новый пул ресурсов сервиса, выделенный для этого сервиса.

Масштабирование вручную

Когда спрос на услуги предсказуем или стабилен, вы можете вручную масштабировать развертывание сервисов, указав количество модулей, выделенных для службы, или увеличив ресурсы (CPU/память), доступные для сервисов. Эта опция полезна, если количество выделенных ресурсов, обслуживающих сервис, недостаточно, и пользователи испытывают проблемы с производительностью.

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

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

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

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

Примечание:

Чтобы воспользоваться преимуществами горизонтального автоматического масштабирования модулей в ArcGIS Enterprise on Kubernetes, серверу метрик необходимо извлекать показатели потребления ресурсов модулей из процесса kubelet на каждом запущенном узле. Дополнительные сведения см. в разделе Сервер метрик Kubernetes.

Роль экземпляров сервиса

Неразмещенные развертывания сервисов, такие как карта, изображение, геообработка или геокодирование, содержат экземпляры сервисов, которые выполняются в каждом модуле развертывания сервисов. Они определяют емкость каждого модуля и являются базовыми процессами, которые используются для обработки запросов к любому из этих сервисов. Поддерживается настройка и масштабирование этих процессов; однако вместо этого рекомендуется настраивать и масштабировать на уровне модуля, чтобы использовать преимущества Kubernetes (отказоустойчивость, изоляция, отказоустойчивость, автоматическое масштабирование и т. д.).