Назад | Перейти на главную страницу

Стандартное автоматическое масштабирование App Engine - как остановить предыдущую версию при развертывании?

Проблема:

Я развертываю стандартную службу appengine - nodejsv10. Однако после того, как трафик переносится на новую версию, старая версия все еще продолжает работать, а количество экземпляров отображается как 2 или 1. Это по-прежнему имеет место для нескольких развертываний за последнюю неделю, которые не получали трафика более 24 часов (поэтому я не думаю, что это проблема с отложенным обновлением консоли).

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

Команда развертывания: gcloud beta app deploy

app.yaml

env: standard
instance_class: F4
inbound_services:
  - warmup
automatic_scaling:
  min_idle_instances: 1
  max_idle_instances: 1
  min_pending_latency: automatic
  max_pending_latency: automatic
  max_concurrent_requests: 15
  min_instances: 1

Прочитав больше документации, я думаю, что нашел исправление. Я удалил min_instances и ушел в min_idle_instances. поскольку min_instances заставляет экземпляры быть активными независимо от трафика, и min_idle_instances применяется только к версии, получающей большую часть трафика. Я тестирую это, сообщу, если это не сработает.

https://cloud.google.com/appengine/docs/standard/nodejs/config/appref#automatic_scaling

min_instances

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

min_idle_instances

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

Стандартные экземпляры App Engine нельзя остановить, как уже упоминалось Вот если вы не используете ручное или базовое масштабирование. Это будет означать, что если по какой-то причине кто-то сможет получить доступ к URL-адресу вашей предыдущей версии, он запустит экземпляр для обслуживания указанного запроса.

Я бы порекомендовал перейти на другой тип масштабирования (лично я бы выбрал Базовое масштабирование для вашего случая), так как вы сможете остановить экземпляры. В противном случае вам придется удалить предыдущие версии или вы рискуете запустить экземпляр в старой версии без вашего ведома из-за некоторого случайного запроса к более старой версии.

Надеюсь, эта информация окажется для вас полезной.