Как я могу уменьшить объем приложений CloudFoundry, не рискуя перезапустить их все? - PullRequest
0 голосов
/ 28 ноября 2018

Это вопрос относительно облака приложений Swisscom.

Я реализовал стратегию перезапуска уже развернутых приложений CloudFoundry без с использованиемcf restart APP_NAME.Я хотел иметь возможность:

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

Общая концепция выглядит следующим образом:

  1. cf scale APP_NAME -I 2

    • увеличение количества экземпляров приложения с 1 до 2
    • ожидание всехэкземпляры приложения должны быть running
  2. cf restart-app-instance APP_NAME 0

    • перезапустить «старый» экземпляр приложения
    • ждать всехколичество экземпляров приложения должно быть running снова
  3. 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а также?

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

1 Ответ

0 голосов
/ 28 ноября 2018

Если у вас есть два запущенных экземпляра, команда

cf scale <APP> -i 1

уничтожит экземпляр № 1, а экземпляр № 0 не будет затронут.

...