Я хотел бы использовать nginx для загрузки баланса между несколькими экземплярами моего приложения-узла, работающим на разных портах. Что я хотел знать - возможно ли, что разные экземпляры, запущенные на разных портах, могут взаимодействовать друг с другом. Например, если у меня есть чат на одном экземпляре, люди могут общаться с другим экземпляром моего приложения, работающим на другом порту из-за баланса нагрузки? Если да, то как? и если нет, то как я могу сделать эту работу. Я очень благодарен вам за помощь.nginx nodejs информация о распределении баланса нагрузки
ответ
Ну у вас есть две группы решений здесь (заметьте, что во втором подходе нет никакого обмена информацией, вы просто балансировать нагрузку в «умнее» способом):
- На прикладном уровне. Вам нужно настроить приложение или node.js (я не знаю, поддерживает ли узел его другой сервер приложений), чтобы иметь доступ к общему бэкэнду в качестве @cejast, упомянутого в комментарии. У вас есть несколько подходов к достижению этого, и в каждом из них целью является каждый экземпляр вашего приложения, независимо от того, где он находится, чтобы иметь доступ ко всей информации о пользователях.
- С методом балансировки нагрузки. Вы можете решить эту проблему с помощью специального метода балансировки нагрузки nginx поддерживает ip_hash (см. here для ip_has и других методов балансировки нагрузки, поддерживаемых nginx.) С ip_hash nginx будет отправлять тот же ip (/ 24 подсеть фактически) всегда в один и тот же экземпляр, чтобы вы не будет беспокоиться о том, что экземпляр должен будет обрабатывать сеанс, который не знает.
В случае, если вы будете следовать методу балансировки нагрузки, чтобы решить вашу проблему, я предлагаю вам точно узнать, как это работает, поскольку в некоторых случаях может не соответствовать вашим потребностям.
Например, nginx ip_hash
, который я упоминал ранее, создает хеш, который используется для липкости с первых 3 октетов с IPv4, что означает, что если ваше приложение получает большую часть своего трафика из определенного класса C, то балансировка нагрузки подсети не будет балансировать это хорошо. В этом случае вы должны использовать переменную remote_addr
.
Это хорошая ссылка для nginx load balancing.
- 1. Структура баланса нагрузки nginx
- 2. Nginx или LVS для баланса нагрузки Node.js?
- 3. Информация о процессе NODEJS
- 4. Ошибка баланса нагрузки Mysql + F5
- 5. Информация о размещении
- 6. Настройка баланса нагрузки даже с одним сервером
- 7. Написание алгоритма баланса нагрузки для WSO2 ESB
- 8. Вопрос о распределении памяти?
- 9. Сопоставляя данные о распределении
- 10. вопрос о распределении mnesia
- 11. Балансировка нагрузки с nginx
- 12. Управление сеансом Asp.net в среде баланса нагрузки
- 13. Информация о регистраторе фляжки
- 14. Несколько вопросов о распределении памяти
- 15. C++ вопрос о распределении векторов
- 16. Вопрос о распределении памяти/перераспределении
- 17. Балансировка нагрузки Nginx
- 18. Проблема балансировки нагрузки Nginx
- 19. Nginx за балансировки нагрузки
- 20. nodejs Режим кластера PM2 для балансировки нагрузки
- 21. nginx поверх балансира нагрузки (услуга)
- 22. C# Вопрос о распределении/распределении памяти относительно области
- 23. nginx + nodejs + socket.io ERR_CONNECTION_TIMED_OUT
- 24. нагрузки запрос баланса трафик с muiltiple серверов узлов с использованием NGINX
- 25. Nodejs: Информация о пользователе/база данных и аутентификация (паспорт)
- 26. Нет отбоя информация о каких-либо других пользователей, в Nodejs
- 27. Ошибка Bitnami Rubystack: информация о версии отсутствует (требуется nodejs)
- 28. Bouncy или nginx для балансировки нагрузки?
- 29. Nginx + Nodejs + Маршрутизация WordPress
- 30. NodeJS и Nginx
Если вы используете AWS или подобные веб-сервисы, я думаю, вы можете. –
Вам нужно будет иметь общий бэкэнд между вашими экземплярами, которые будут поддерживать некоторую форму передачи сообщений, например. redis pubsub. – cejast