Принудительно запускать приложение только в одном экземпляре в PCF - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть одно приложение планировщика для запуска только в одном экземпляре в облачной среде PCF. Есть ли способ сделать это в облачной среде?

Мало что из того, что я пробовал, создавая экземпляры: 1 в manifest.yml, чтобы заставить его работать только в одном экземпляре, а не в автоматическом масштабе.

Но в поисках лучшего подхода к ПКФ.

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Это будет поддерживать cf v7. Или вы можете запланировать это с помощью опции задачи cf.

И, как показано выше, вы можете создавать различные задачи через cf7.

https://v3-apidocs.cloudfoundry.org/version/3.81.0/index.html#the -process-object

Это можно разделить на несколько процессов, как показано ниже.

applications:
name: cf-env
  buildpacks:
  ruby_buildpack
  processes:
  type: web
    instances: 1
    memory: 256M
  routes:
  route: all-new-route.cfapps.io
0 голосов
/ 07 февраля 2020

То, что я видел здесь, - это чтобы ваше приложение посмотрело на переменную окружения CF_INSTANCE_INDEX. Это нулевой индекс, который показывает номер экземпляра вашего приложения. Итак, 0 - это первый экземпляр, 1 - это второй, 2 - третий, и т. Д. c ...

Ваше приложение взглянет на эту переменную env, и если значение не равно 0, то оно выйти или ничего не делать, или что-то имеет смысл. Делая это, только ваш первый экземпляр приложения будет запускать этот бит кода. Остальные пропустят или ничего не сделают.

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

Этого можно достичь, создав Procfile с чем-то вроде этого:

web: bundle exec rackup config.ru -p $PORT
worker: bundle exec rake worker:start

И с использованием cf7 push myapp или cf v3-push myapp.

Полные инструкции приведены здесь:

https://docs.cloudfoundry.org/devguide/multiple-processes.html

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

...