Конечная точка маршрутизации HTTP с использованием Node-RED в качестве службы в Kubernetes - PullRequest
0 голосов
/ 01 октября 2018

Я хотел бы запустить Node-RED в качестве службы в Kubernetes, чтобы иметь возможность создавать собственный API с использованием узлов HTTP IN.Цель состоит в том, чтобы иметь возможность отправить любое количество различных потоков в произвольный контейнер, на котором запущен Node-RED, с помощью API-интерфейса Node-RED.

Я попытался запустить Node-RED в качестве службы с 5 репликами и создалпоток через пользовательский интерфейс, который имеет HTTP-вход и HTTP-выход.Когда я пытаюсь запустить сервис с помощью curl на ip мини-куба (например, curl http://192.168.64.2:30001/test),, он вернет результаты только в том случае, если балансировщик нагрузки окажется на контейнере, в котором есть поток. В противном случае он вернет ошибку сHTML.

Любой совет, как мне следует решить эту проблему? Спасибо!

1 Ответ

0 голосов
/ 01 октября 2018

Это работает, как ожидалось.Если вы взаимодействуете с редактором Node-RED через балансировщик нагрузки, вы редактируете поток только в этом экземпляре.

Если у вас есть 5 экземпляров Node-RED, и только один из них выполняет поток сОпределенные конечные точки HTTP, затем вызовы к этой конечной точке будут успешны только 1 раз в 5.

Необходимо убедиться, что все экземпляры имеют одинаковые конечные точки, определенные в их потоках.

Существует несколько способовможет сделать это, вот некоторые примеры:

  • Используйте API администратора Node-RED, чтобы передать потоки по очереди каждому из экземпляров Node-RED.Вероятно, вам нужно будет сделать это через частный IP-адрес каждого экземпляра, чтобы не мешать балансировщику нагрузки.
  • Используйте пользовательский плагин Storage для хранения потока в базе данных и наличия всех Node-REDэкземпляры загружают один и тот же поток.Вам нужно будет перезапустить экземпляры, чтобы принудительно перезагрузить поток, если вы измените его.
...