本指南将引导您完成在 AWS 环境中运行 Node-RED 的步骤。
有两种方法
确保您拥有已启用 Elastic Beanstalk、SQS 和 S3 的 AWS 账户
下载 EB 命令行并安装在您的本地计算机上 - 请参阅链接
创建 AWS 凭证并按如下方式保存在本地文件(~/.aws/config 或 Usersusername.awsconfig)中
[profile eb-cli]
aws_access_key_id = key id
aws_secret_access_key = access key
创建一个新目录(例如 demoapp
)
切换到该目录
运行 eb init
以创建一个新的 Elastic Beanstalk 项目。选择首选区域并使用 node.js 作为平台。系统会询问您是否希望使用 ssh。如果选择是,请确保您的计算机上已安装 ssh,以便生成新的密钥对。
在浏览器中登录 AWS 控制台,选择身份和访问管理 (IAM),然后将 AmazonS3FullAccess 策略添加到 aws-elasticbeanstalk-ec2-role。注意:这会授予从 EBS 到 S3 的完全访问权限,您可能希望根据自己的安全需求调整此策略。
package.json
文件(将“demoapp”替换为您的应用名称){
"name": "demoapp",
"version": "1.0.0",
"description": "node-red demo app",
"main": "",
"scripts": {
"start": "./node_modules/.bin/node-red -s ./settings.js"
},
"engines": {
"node": "10.x"
},
"dependencies": {
"node-red": "1.1.x",
"aws-sdk": "2.4.x",
"node-red-contrib-storage-s3": "0.0.x",
"when": "3.7.x"
},
"author": "",
"license": "ISC"
}
将默认的 Node-RED settings.js 文件复制到 demoapp 目录
编辑 settings.js 文件,将以下条目添加到 module.exports(将 awsRegion 设置为在 eb init 中使用的区域,并将 demoapp 替换为您的应用名称)
awsRegion: 'eu-west-1',
awsS3Appname: 'demoapp',
storageModule: require('node-red-contrib-storage-s3'),
eb create
;您可能希望指定一个更独特的应用程序名称。此命令需要很长时间才能运行,但最终会成功返回。现在可以直接通过应用程序的 Web URL 访问 Node-RED。但是,这种方式不安全,并且对于日志记录效果不佳。因此,我们将配置直接访问其使用的 EC2 实例上 Node-RED 的管理端口。
在 AWS 控制台中,选择 EC2,然后选择安全组。您将看到一组安全组。选择一个名称为您的环境名称且描述为“Security Group for ElasticBeanstalk Environment”的安全组。选中后,单击“Actions”,然后单击“Edit inbound settings”。一个带有规则的对话框将会出现。添加一条新规则。将类型设置为“all traffic”,源设置为“my ip”。保存该规则。
选择正在运行 Node-RED 应用程序的 EC2 实例,复制其 IP 地址
在浏览器中输入该 IP 地址,并附上端口 8081。这将提供对 Node-RED 管理控制台的直接访问。
注意:公共 IP 地址也提供了对 Node-RED 应用程序的访问,好的做法是同时移除该访问权限,即针对端口 80 的 HTTP 规则。
您的 Node-RED 实例现在正在 EBS 上运行。您创建的任何流都将保存到 AWS S3,因此即使您拆除环境,只要重新部署,流就仍然可用。
此部署选项为您提供了一个多节点的 Node-RED 设置,使用 Amazon Elastic File System (EFS) 实现共享文件系统。因为它在负载均衡器后面运行多个节点,您将拥有高可用性——如果一个节点发生故障,Elastic Beanstalk 会自动替换它。
要开始使用,请在此处克隆代码仓库 https://github.com/guysqr/node-red-ha-on-aws 并按照简单的说明操作。基础设施由 CloudFormation 模板为您创建,因此您无需了解太多 AWS 知识即可完成设置。
此外,此部署选项使您能够通过 https 运行 Node-RED,并通过 Auth0 登录(或者您可以轻松切换到内置身份验证或任何与 Passport 兼容的 ID 提供商)。
登录到 AWS EC2 控制台
点击“启动实例”
在“快速入门 AMI”列表中,选择 Ubuntu Server
选择实例类型 - t2.micro
是一个不错的起点
在“配置安全组”选项卡上,为端口 1880 添加一个新的“自定义 TCP 规则”
在最后的“审核”步骤中,点击“启动”按钮
控制台会提示您配置一组 SSH 密钥。选择“创建新密钥对”并点击“下载密钥对”。您的浏览器将保存 .pem
文件 - 请妥善保管。最后,点击“启动”。
几分钟后,您的 EC2 实例将运行起来。您可以在控制台中找到实例的 IP 地址。
下一个任务是登录到实例,然后安装 node.js 和 Node-RED。
遵循 AWS 的连接到您的实例指南。
登录后,您需要安装 node.js 和 Node-RED
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential
sudo npm install -g --unsafe-perm node-red
此时,您可以通过运行 node-red
来测试您的实例。注意:您可能会看到一些关于 Serial 节点的错误 - 这是正常的,可以忽略。
启动后,您可以在 http://<您的实例IP>:1880/
访问编辑器。
要让 Node-RED 在每次实例重启时自动启动,您可以使用 pm2
sudo npm install -g --unsafe-perm pm2
pm2 start `which node-red` -- -v
pm2 save
pm2 startup
注意:最后这个命令会提示您运行另一个命令 - 请务必按照提示操作。
本指南仅仅触及了如何在 EC2 中配置实例的皮毛。Node-RED“仅仅”是一个暴露 HTTP 服务器的 node.js 应用程序——基于这个原则,您可以使用许多在线指南来学习其他可能的配置。
版权所有 © OpenJS Foundation 及 Node-RED 贡献者。保留所有权利。OpenJS Foundation 已注册商标并使用商标。有关 OpenJS Foundation 的商标列表,请参阅我们的商标政策和商标列表。未在 OpenJS Foundation 商标列表上标明的商标和徽标是其各自所有者的商标™或注册®商标。使用它们并不意味着与它们有任何关联或得到它们的认可。
OpenJS 基金会 | 使用条款 | 隐私政策 | OpenJS 基金会章程 | 商标政策 | 商标列表 | Cookie 政策