本指南将引导您完成让 Node-RED 在 AWS 环境中运行的步骤。
有两种方法:
在 AWS Elastic Beanstalk 服务 (EB) 上运行
在具有高可用性的 Elastic Beanstalk 上运行
在 AWS EC2 上的 Ubuntu 映像下运行
在 AWS EBS 上运行
先决条件
确保您拥有启用了 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
创建 EB 环境
创建一个新目录(例如demoapp)
cd 到那个目录
运行eb init以创建一个新的弹性 beanstalk 项目。选择首选区域并使用 node.js 作为平台。系统将询问您是否要使用 ssh。如果你这样做了,如果你想生成一个新的密钥对,请确保你的计算机上安装了 ssh。
在浏览器上登录 AWS 控制台,选择身份和访问管理 (IAM) 并将 AmazonS3FullAccess 策略添加到 aws-elasticbeanstalk-ec2-role。注意:这提供了从 EBS 到 S3 的完全访问权限,您可能希望调整此策略以满足您自己的安全需求
创建 Node-RED 环境
创建一个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;您可能希望指定一个更独特的应用程序名称。这将需要很长时间才能运行,但最终会成功返回。
配置 Node-RED 访问
现在可以直接从应用程序的 Web url 访问 Node-RED。然而,这是不安全的,并且不能很好地用于日志记录。相反,我们将在它使用的 ec2 实例上配置对 node-red 管理端口的直接访问。
在 AWS 控制台中,选择 EC2,然后选择安全组。您将看到一组安全组。选择一个具有您的环境名称和描述为“ElasticBeanstalk 环境的安全组”的选项。选择后,单击“操作”,然后单击“编辑入站设置”。出现一个带有规则的对话框。添加新规则。将类型设置为“所有流量”,将源设置为“我的 ip”。保存规则。
选择运行节点红色应用程序的 EC2 实例。复制它的IP地址
在浏览器中输入 IP 地址,端口为 8081。这将提供对 node-red 管理控制台的直接访问。
注意:公共 IP 地址还提供对 node-red 应用程序的访问,最好同时删除该访问,即端口 80 的 HTTP 规则。
您的 Node-RED 实例现在正在 EBS 上运行。您创建的任何流都将保存到 AWS S3,以便您可以拆除环境,并且在您重新部署时可以访问这些流。
在具有高可用性的 Elastic Beanstalk 上运行
此部署选项为您提供了多节点 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 提供程序)。
使用 Ubuntu 在 AWS EC2 上运行
创建基础 EC2 映像
登录AWS EC2 控制台
点击“启动实例”
在 Quick Start AMI 列表中,选择Ubuntu Server
选择实例类型 -t2.micro是一个很好的起点
在“配置安全组”选项卡上,为端口 1880 添加新的“自定义 TCP 规则”
在最后的“审核”步骤中,单击“启动”按钮
控制台将提示您配置一组 SSH 密钥。选择“创建新密钥对”,然后单击“下载密钥对”。您的浏览器将保存.pem文件 - 确保安全。最后,单击“启动”。
几分钟后,您的 EC2 实例将运行。在控制台中,您可以找到您的实例的 IP 地址。
设置节点-RED
下一个任务是登录实例,然后安装 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。注意:您可能会收到有关串行节点的一些错误 - 这是意料之中的,可以忽略。
启动后,您可以在http://<your-instance-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 应用程序 - 在这个原则上,有许多在线指南可以用来了解其他可能的方法。
关键词:LoRa网关