Это вопрос относительно облака приложений Swisscom.
Я реализовал стратегию перезапуска уже развернутых приложений CloudFoundry без с использованиемcf restart APP_NAME
.Я хотел иметь возможность:
- перезапускать запущенные приложения без необходимости доступа к манифесту приложения и
- , чтобы они не страдали от простоев.
Общая концепция выглядит следующим образом:
cf scale APP_NAME -I 2
- увеличение количества экземпляров приложения с 1 до 2
- ожидание всехэкземпляры приложения должны быть
running
cf restart-app-instance APP_NAME 0
- перезапустить «старый» экземпляр приложения
- ждать всехколичество экземпляров приложения должно быть
running
снова
cf scale easyasset-repower-staging -I 1
- уменьшить количество экземпляров приложения обратно с 2 до 1
Обычно это работает и обычно делает то, что я ожидаю.Проблема, с которой я столкнулся, возникает на этапе (3), где иногда вместо простого обратного отсчета экземпляров, CloudFoundry также перезапускает всех (оставшихся) экземпляров.
Я не понимаю:
- Почему это происходит только иногда (все приложения перезагружаются при сокращении)?
- Разве CloudFoundry не должен поддерживать оставшиеся экземпляры включенными и работающими?
- Если
cf scale
не в состоянии поддерживать безупречно работающие экземпляры приложений - когда это полезно?
Обратите внимание: Я хорошо осведомлен оПлагины Bluegreen / Autopilot для развертывания приложений без сбоев в CloudFoundry, и я фактически использую их для наших развертываний с нашего сервера сборки, но они требуют, чтобы я предоставил манифест (и дополнительные учетные данные), которые в данном случае я неУ меня нет доступа к нему (если я не могу каким-то образом извлечь его из запущенного приложения через cf create-app-manifest
?).
Обновление 1: Снова глядя на плагины, я нашел bg-restage
, что, по-видимому, примерно соответствует тому, что я хочу, но я не представляю, насколько надежно это.
Обновление 2: Я пришел к выводу, что это, вероятно, неясная проблема (или ошибка) в CloudFoundry, и cf scale
не дает никаких гарантий, что существующие экземпляры останутся работающими.Как указывалось выше, с тех пор я осознал, что действительно можно генерировать манифест приложения на лету (cf create-app-manifest
), и хотя я не мог использовать плагин bg-restage
без ошибок, я вернулся кblue-green-deploy
плагин, который я теперь могу передать недавно сгенерированному манифесту, чтобы избежать всего этого cf scale
упражнения.
Комментарии Вопросы:
Почему выВам нужно перезапустить экземпляры вашего приложения?
Мы кэшируем некоторые значения из постоянного хранилища при запуске .Этот перезапуск происходит при обнаружении изменений в этих данных.
информация о проверке состояния
Мы используем все типы проверок работоспособности, в зависимости от того, какое приложениедля перезапуска (http
, process
и port). I have observed this issue only for apps with health check
http . I also have a
http-endpoint`, определенные для проверки работоспособности.
Вы пытаетесь изменить память с помощью cf scaleа также?
Нет, я пытаюсь сохранить конфигурацию всех приложений одинаковой во время этого процесса.