Установка переменных среды уровня экземпляра в Cloud Foundry при масштабировании приложения - PullRequest
0 голосов
/ 19 сентября 2019

Я думаю о том, как передать / установить переменную среды в экземпляр облачного литейного производства, когда мы масштабируем его по горизонтали.Вариант использования: у нас есть приложение-производитель, использующее rabbitMQ, и приложение-потребитель, которое потребляет из очереди.Мы хотим, чтобы потребительское приложение масштабировалось горизонтально.Для этого мы планируем использовать «последовательный хэш-обмен» rabbitMQ.Проблема в том, что мы планируем ограничить 3 очереди на 3 экземпляра-потребителя, и мы хотим передать каждое имя очереди каждому экземпляру, чтобы между ними было что-то однозначное.

1) Есть ли способ установить свойства среды на уровне отдельного экземпляра?

2) Это правильный подход?

Заранее спасибо, Сагар

1 Ответ

0 голосов
/ 19 сентября 2019

1) Есть ли способ, которым мы можем установить свойства среды на уровне отдельного экземпляра?

CF Cli скажет вам, что вам нужно перезагрузить приложение для изменений в средепеременные вступают в силу.Обычно вы можете избежать перезагрузки, если только вы не изменяете переменную env, которая влияет на buildpack / что происходит во время подготовки.

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

2) Это правильный подход?

Вероятно, не для Cloud Foundry.Я бы предложил сделать что-то, где у вас есть имя очереди, которое является шаблоном, например переменная окружения somequeue- . You can then pull the app instance number out of the VCAP_APPLICATION, и использовать это для получения уникального имени очереди для экземпляра приложения, например somequeue-0, somequeue-1.'и' somequeue-2 '.

В противном случае приложение должно запрашивать имя очереди откуда-то, например, на сервере конфигурации или в базе данных.Таким образом, он может динамически загружать имя очереди при запуске.

Надеюсь, это поможет!

...