Несколько экземпляров сервера deepstream.io внутри одного узла

Можно ли запустить несколько экземпляров сервера deepstream.io внутри одного узла (компьютера)? Каждый экземпляр будет прослушивать разные порты, хранить в разных хранилищах и т. д. Вариант использования — когда один экземпляр используется для производства, а другой — для подготовки — производство и подготовка используют разные базы данных MongoDB для хранения.


person mvladic    schedule 23.09.2016    source источник


Ответы (1)


Безусловно, просто убедитесь, что при запуске они указывают на два разных файла конфигурации. Вот как это будет работать, например. АВС Линукс:

Установить дипстрим

sudo wget https://bintray.com/deepstreamio/rpm/rpm -O /etc/yum.repos.d/bintray-deepstreamio-rpm.repo
sudo yum install -y deepstream.io

Скопируйте файл разрешений и две версии файла конфигурации.

cp /etc/deepstream/config.yml config-dev.yml
cp /etc/deepstream/config.yml config-prod.yml
cp /etc/deepstream/permissions.yml permissions.yml

Измените порты (и все, что вам нужно) в файле конфигурации.

настройка vim

а затем начните оба с

 deepstream start -c config-dev.yml
 deepstream start -c config-prod.yml

в результате чего

введите здесь описание изображения

Чтобы лучше обрабатывать несколько процессов Deepstream, запущенных на одном компьютере, я бы рекомендовал использовать такой инструмент, как PM2.

Он основан на узле, поэтому вы можете установить его на AWS через

 curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
 sudo yum -y install nodejs
 sudo npm install -g pm2 

Теперь вы можете запускать несколько процессов с разными конфигурациями следующим образом.

pm2 start --name ds-dev deepstream -- start -c ~/config-dev.yml
pm2 start --name ds-prod deepstream -- start -c ~/config-prod.yml

в результате чего

Выход PM2

PM2 позволяет легко запускать/завершать/перезапускать/контролировать отдельные процессы, используя их идентификаторы, например pm2 stop 0 и отслеживает ваши журналы, перезапускает процессы и т. д.

person wolframhempel    schedule 23.09.2016
comment
Как остановить конкретный экземпляр? Если я запущу Deepstream Stop, он просто остановит экземпляр, запущенный позже. - person mvladic; 24.09.2016
comment
Я добавил пример с использованием PM2, который должен решить эту проблему. - person wolframhempel; 24.09.2016