Статьи

Реальные решения для создания приложений Node.js в облаке

Node.js может обеспечить разбор, обработку и размещение контента JavaScript и гипермедиа несколькими способами. Node.js ведет себя совсем не так, как другие веб-серверы. Apache, IIS, NGINX и связанные с ними веб-серверы имеют множество вариантов конфигурации, статических и динамических страниц, обработки контента и функций безопасности. Это делает эти серверы значительно более сложными, но благодаря их долговечности появилось множество инструкций, документации и инструментов для их настройки. Node.js намного проще и понятнее, чем эти другие серверы. Но даже при такой простоте практические инструкции, документация или инструменты для сервера Node.js не всегда легко найти.

Это делает хостинг Node.js немного запутанным, по крайней мере, когда вы делаете это самостоятельно. Есть несколько ключевых вопросов:

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

* Node.js может быть запущен от имени пользователя root, чтобы дать ему возможность напрямую взаимодействовать через порт 80, но это оставляет проблемы безопасности и проблемы стабильности.

* Если поток Node.js падает, его необходимо перезапустить. В Node.js. нет ни гибкости, ни самоизлечения. Для восстановления требуется вспомогательный инструментарий.

Есть несколько способов решить эти проблемы и запустить Node.js. Эти решения включают в себя:

* Обеспечьте отображение через iptables
* Прокси через Apache или NGINX, который затем направляет трафик на Node.js

Обеспечение перенаправления через iptables довольно просто и становится одним из распространенных способов размещения Node.js через порт 80. Введите следующую команду, чтобы перенаправить трафик на сервер. Это один из самых прямых методов, позволяющих Node.js предоставлять ответы на трафик без загрузки экземпляра другими серверами, такими как Apache или NGINX. В некоторых ситуациях это идеально, поскольку Node.js, как правило, является сервером с очень низкими издержками и может быть установлен на очень маленький экземпляр.

iptables -t nat -A PREROUTING -p top --dport 80 -j REDIRECT --to 8080

 

Другой способ запустить Node.js — использовать прокси-сервер через Apache или NGINX для соответствующего направления трафика. Это требует больше нагрузки на сервер, но также предоставляет больше функциональности и конфигурации в зависимости от того, как будет осуществляться хостинг. Иногда это именно то, что нужно, а иногда это излишне. Проверьте эти записи для получения дополнительной информации о маршрутизации через NGINX и Apache:

* Маршрутизация к различным серверам Node.js в одном экземпляре.
* Ежедневное развертывание JS — Node.
* Github Gist, показывающий, как работать с Apache без mod_rewrite.

Решения:

* Обеспечить сопоставление через iptables. Что это за вещи?
* Другая идея состоит в том, чтобы запустить два IP-адреса, соответствующим образом перенаправляя порты между серверами.
* Nodejitsu’s Node HTTP Proxy

Но на самом деле, большинство из этих решений оставляют нас прямо там, где мы находимся с другими структурами. У нас есть сервер для обслуживания, инфраструктура для управления IP-адресами, маршрутизация и другие проблемы. В целом, это не продвигает нас дальше, чем запуск традиционных приложений Rails, Sinatra, .NET, PHP или Java.

Node.js — это технология быстрого развития

Node.js очень прост в использовании, прост в установке и разработке в среде разработчиков. Если вы используете Cloud 9 IDE, Visual Studio, JetBrains WebStorm или TextMate, разработка очень проста. Node.js обеспечивает, пожалуй, самый простой путь из ничего к разработке любых технологических стеков и фреймворков. Имея это в виду, это разочаровывает необходимость играть со всеми этими вариантами хостинга, конфигурациями и другими проблемами. В идеале, мы могли бы просто развернуть наш код Node.js и все остальное и запустить его. К счастью, в предложениях PaaS есть решения. С этой комбинацией разработка Node.js идет от очень быстрой и громоздкой до очень быстрой и простой в развертывании.

Реальное решение для создания приложений Node.js

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

* Nodejitsu
* Nodester
* Heroku
* Cloud Foundry
* Iron Foundry
* Joyent
* DotCloud
* NodeSocket
* AppFog

Cloud Foundry / Iron Foundry / AppFog

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

* Cloud Foundry
* Iron Foundry
* PaaS.io
AppFog

Чтобы запустить Cloud Foundry, сначала настройте учетную запись (на одном из перечисленных выше сайтов) и установите соответствующий интерфейс командной строки vmc . Для некоторых, таких как AppFog, у них есть собственная командная строка, но они боятся, что не вся функциональность есть. На данный момент, с установленным Node.js, установленным клиентом vmc, мы готовы к развертыванию.

Создайте приложение Node.js и перейдите в каталог, в котором находится приложение. После этого наведите курсор на Cloud Foundry Environment и затем нажмите. Ниже приведен пример команд для развертывания.

$ vmc target api.cloudfoundry.com
$ vmc login
$ vmc push

При этом каждый может увидеть, насколько нелепо простое развертывание с PaaS-решением. Это устраняет все накладные расходы на управление серверами, развертывание Node.js на сервере, администрирование NGINX или Apache, а также все соответствующие iptables и связанную маршрутизацию. Мы только что перешли от слова « о, дорогой, у нас много настроек » на « мы можем снова вернуться к увеличению стоимости бизнеса! »

Node.js + PaaS = Огромная победа

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

Рекомендации:

* Как я запускаю Node.js на микроэкземпляре Linux с помощью Amazon EC2
* Поддерживаю сервер Node.js, работающий с Forever
Суть хостинга и поддерживаю Node.js Live