Развертывание с нулевым временем простоя с node.js а mongodb?

#linux #node.js #mongodb #deployment

#linux #node.js #mongodb #развертывание

Вопрос:

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

Архитектура пока очень проста, каждая часть приложения имеет свой собственный процесс и взаимодействует с другими сокетами.

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

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

Большое вам спасибо за любые советы.

Редактировать:

Вопрос в том, какое лучшее (и самое простое) решение для достижения нулевого времени простоя при развертывании узла в нескольких экземплярах?

О приложении:

https://github.com/Raynos/boot для «сокетных» соединений, http для http-запросов, mongo для базы данных

Решения, которые я пытаюсь в данный момент:

https://www.npmjs.org/package/thalassa (который управлял файлами конфигурации haproxy и экземплярами приложений), если вы этого не знаете, посмотрите этот доклад: https://www.youtube.com/watch?v=k6QkNt4hZWQ и имейте в виду, что crowsnest заменяется https://github.com/PearsonEducation/thalassa-consul

Комментарии:

1. в чем вопрос?

2. Извините, если не было ясно. Теперь я все ясно изложил.

Ответ №1:

Развертывание с нулевым временем простоя возможно только в том случае, если данные, которыми вы делитесь между старыми и новыми узлами, совместимы.

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

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

Комментарии:

1. Простое приложение узла: использует github.com/Raynos/boot для «сокетных» подключений используйте простой http-сервер для http-запросов и mongo для базы данных.

2. В этом случае я делюсь данными и их совместимостью. это удаленная база данных mongo.

3. В качестве балансировщика нагрузки я использую haproxy, управляемый thalassa-aqueduct, но рассматривал другие варианты. в идеале вариант с графическим интерфейсом, поскольку я буду часто запускать много экземпляров и версий.