Автоматическое масштабирование группы экземпляров GCP работает неожиданно

#google-cloud-platform

#google-cloud-platform

Вопрос:

У меня есть группа экземпляров с автоматическим масштабированием на GCP с 1 до 15 экземплярами. Правилом масштабирования является загрузка процессора более чем на 50%. Элементы управления масштабированием не включены. Но у меня постоянно работают все 15 экземпляров. Мониторинг показывает, что за последние 12 часов загрузка процессора 5 экземпляров превышала 80% (до 300% (сколько?)) и 10 экземпляров менее 5% загрузки процессора. Почему эти 10 экземпляров запущены, если они не используются? Я ожидаю максимум нескольких запасных экземпляров, в то время как другие полностью загружены. Но не в 2 раза больше запасных экземпляров. Почему это так работает? Как заставить его работать должным образом?

Параметры автоматического масштабирования группы следующие:

 autoscaler:
  autoscalingPolicy:
    coolDownPeriodSec: 180
    cpuUtilization:
      utilizationTarget: 0.5
    maxNumReplicas: 15
    minNumReplicas: 1
    mode: ON
    scaleInControl:
      maxScaledInReplicas:
        fixed: 1
      timeWindowSec: 60
  creationTimestamp: '2020-12-04T01:46:57.815-08:00'
  id: '***'
  kind: compute#autoscaler
  name: ***
  recommendedSize: 10
  selfLink: https://www.googleapis.com/compute/v1/projects/***/zones/europe-west4-a/autoscalers/***
  status: ACTIVE
  target: https://www.googleapis.com/compute/v1/projects/***/zones/europe-west4-a/instanceGroupManagers/***
  zone: https://www.googleapis.com/compute/v1/projects/***/zones/europe-west4-a
 

Ответ №1:

Важно, как вы распределяете работу между вашими инстансами.

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

Некоторые вещи, которые нужно проверить:

  1. Используете ли вы балансировщик нагрузки? Исправны ли целевые виртуальные машины в соответствии с проверкой работоспособности?
  2. Загружается ли ваше приложение равномерно или некоторые узлы (например, лидеры) выполняют дополнительную работу.

Комментарии:

1. Мои экземпляры являются работниками GitLab. Из-за некоторых неизвестных проблем они иногда зависают при высокой загрузке процессора. Это приводит к тому, что в группе автоматического масштабирования увеличивается максимальное количество экземпляров, пока проблемные экземпляры не будут уничтожены вручную. Из-за чрезвычайно высокой загрузки процессора я даже не могу подключиться к ним по SSH и проверить, что происходит. Так что, по крайней мере, я хочу, чтобы группа не была увеличена до максимума, если есть несколько проблемных случаев.

Ответ №2:

Функция, называемая предиктивным автоматическим масштабированием, которая может быть причиной увеличения MIG с помощью показателя CPU, тем не менее, я не уверен, что в вашем кластере это включено или нет. PAS узнает, что ежедневно (или в определенный день недели) в это время наблюдается пик нагрузки, и он отреагировал соответствующим образом (даже если сегодняшний день необычный и пик не произошел). PA решают увеличить масштаб с помощью алгоритма прогнозирования.

Если вы запустите следующую команду для своего MIG «your-mig», чтобы проверить и подтвердить, что MIG будет масштабироваться из необработанной метрики

 gcloud alpha compute instance-groups managed update-autoscaling GROUP 
--cpu-utilization-predictive-method none
 

Комментарии:

1. Я не менял метод прогнозирования. Поэтому я предполагаю, что оно равно none по умолчанию.