#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, но рассматривал другие варианты. в идеале вариант с графическим интерфейсом, поскольку я буду часто запускать много экземпляров и версий.