2015-03-24 2 views
2

Мы используем облачный хостинг (Linode) для размещения приложения chat.js (и socket.io) для чата с redis в качестве основной БД. Мы еще не запущены, но мы смотрим на размещение redis и node.js на одном компьютере (экземпляр 8 gb, redis ограничен до 5 ГБ, например). Вся связь будет проводиться в redis (т.е. прямо с клиента на redis, без переменных для диалога в node.js). Чтобы избежать сетевых путешествий, анимируйте другие шеи бутылки, мы смотрим на хостинг redis и node.js на том же сервере. Я не могу найти что-либо в документации, которая заявила бы, что это плохая идея, но наш парень из сисопов не убежден. Есть ли недостатки в том, чтобы спустить этот маршрут?Node.js и redis на том же сервере?

+0

'node.js' нуждается в процессоре, в то время как redis нуждается в ОЗУ. Так что это не такая уж плохая идея. –

ответ

0

См. Очень похожий ответ, который я опубликовал по аналогичному вопросу о SO: Redis deployment configuration - master slave replication, где ОП имел аналогичную проблему, но его беспокойство было более связано с производительностью.

Основная проблема с вашим решением (простое примечание на другом ответе) - это простой факт, что ваше приложение node.js по дизайну должно быть облачным, например, в Интернете, тогда как ваш Redis или другие базы данных не должны " т.

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

Не развертывая Redis на интернет-хосте, вы выполняете множество ограничений безопасности просто по топологическому дизайну вашей сети.

Это нормально для размещения этих услуг в той же коробке:

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

Проверил: Redis deployment configuration - master slave replication

Будут ли у меня проблемы с безопасностью, имея Redis или другую услугу, обращенную к Интернету?

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

+0

На мой взгляд, ни узлы, ни redis не должны быть подвержены конечным пользователям. Только основной маршрутизатор (поддерживаемый чем-то вроде nginx) должен быть доступен из-за пределов VPN. –

+0

согласился, я просто не упоминал об этом из-за контекста. вышеупомянутое - это меньшее из двух зол. – bitoiu

0

Я не могу комментировать, потому что у меня пока нет достаточно высокой репутации, но очень мало увеличивается скорость вырезания «сетевого узкого места» redis настолько быстро, что латентность пренебрежимо мала. Проблема с этим подходом заключается в том, что если ваш лоток сработает, все ваши данные, хранящиеся в redis, исчезнут, если вы не будете реплицироваться в подчиненный. Если это сходит на любой другой процесс, не на который machince будет недоступен, пока он не перезагрузится. Это может быть хорошо для промежуточного env, но я бы защитил его от производства.

Смежные вопросы