Node-RED在 Amazon Web Services 上运行

本指南将带您完成在 AWS 环境中运行 Node-RED 的步骤。

主要有三种方法:

  • 在 AWS Elastic Beanstalk 服务上运行
  • 在具有高可用性的 Elastic Beanstalk 上运行
  • 在 AWS EC2 的 Ubuntu 镜像上运行

在 AWS EBS 上运行

先决条件

  • 确保您有一个启用了 Elastic Beanstalk、SQS 和 S3 的 AWS 账户
  • 下载 EB 命令行工具并在本地计算机上安装 – 参见链接
  • 创建 AWS 凭据并保存在本地文件中(~/.aws/config 或 Users\username\.aws\config),格式如下: [profile eb-cli] aws_access_key_id = 密钥ID aws_secret_access_key = 访问密钥

创建 EB 环境

  1. 创建一个新目录(例如 demoapp
  2. 进入该目录
  3. 运行 eb init 创建一个新的 Elastic Beanstalk 项目。选择首选区域并使用 node.js 作为平台。系统会询问您是否希望使用 ssh。如果您希望生成新的密钥对,请确保计算机上已安装 ssh

配置权限
登录到浏览器中的 AWS 控制台,选择 Identity and Access Management,然后将 AmazonS3FullAccess 策略添加到 aws-elasticbeanstalk-ec2-role。注意:这授予了从 EBS 到 S3 的完全访问权限,您可能需要根据自身安全需求定制此策略

创建 Node-RED 环境

  1. 创建包含以下内容的 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" }
  2. 将默认的 Node-RED settings.js 文件复制到 demoapp 目录
  3. 编辑 settings.js 文件,在 module.exports 中添加以下条目(将 awsRegion 设置为在 eb init 中使用的区域,并将 demoapp 替换为您的应用名称): awsRegion: 'eu-west-1', awsS3Appname: 'demoapp', storageModule: require('node-red-contrib-storage-s3'),
  4. 在命令提示符下,确保您位于应用程序的顶级目录中并运行命令 eb create;您可能需要指定一个更独特的应用程序名称。这需要很长时间运行,但最终会成功返回

配置 Node-RED 访问
Node-RED 现在可以直接从应用程序的 web url 访问。但这不安全且日志记录效果不佳。我们将配置直接访问其使用的 ec2 实例上的 Node-RED 管理端口。

  1. 在 AWS 控制台中,选择 EC2,然后选择安全组。您将看到一组安全组。选择描述为”Security Group for ElasticBeanstalk Environment”且名称与环境匹配的安全组
  2. 选择后,单击”Actions”,然后选择”Edit inbound settings”。将出现一个包含规则的对话框
  3. 添加新规则。将类型设置为”all traffic”,源设置为”my ip”。保存规则
  4. 选择运行 Node-RED 应用程序的 EC2 实例。复制其 IP 地址
  5. 在浏览器中输入 IP 地址,端口为 8081。这将提供对 Node-RED 管理控制台的直接访问

注意:公共 IP 地址也提供对 Node-RED 应用程序的访问,同时删除该访问(即端口 80 的 HTTP 规则)将是良好的实践。

您的 Node-RED 实例现在在 EBS 上运行。您创建的任何流都将保存到 AWS S3,因此您可以拆除环境,并在重新部署时访问这些流。

在具有高可用性的 Elastic Beanstalk 上运行
此部署选项为您提供多节点 Node-RED 设置,使用 Amazon Elastic File System 作为共享文件系统。由于它在负载均衡器后面运行多个节点,您将获得高可用性 – 如果一个节点死亡,Elastic Beanstalk 会自动替换它。

[解决方案示意图]

要开始使用,请克隆此处的存储库:https://github.com/guysqr/node-red-ha-on-aws 并按照简单说明操作。基础设施由 CloudFormation 模板为您创建,因此您无需了解太多 AWS 知识即可设置。

此外,此部署选项使您能够在 https 下运行 Node-RED,并通过 Auth0 登录(或者您可以轻松切换到内置身份验证或任何 Passport 兼容的 ID 提供程序)。

在 AWS EC2 上使用 Ubuntu 运行

创建基础 EC2 镜像

  1. 登录 AWS EC2 控制台
  2. 单击”Launch Instance”
  3. 在快速启动 AMI 列表中,选择 Ubuntu Server
  4. 选择实例类型 – t2.micro 是一个好的起点
  5. 在”Configure Security Group”选项卡上,为端口 1880 添加新的”Custom TCP Rule”
  6. 在最后的”Review”步骤中,单击”Launch”按钮
  7. 控制台将提示您配置一组 SSH 密钥。选择”Create a new key pair”并单击”Download key pair”。您的浏览器将保存 .pem 文件 – 请妥善保管。最后,单击”Launch”

几分钟后,您的 EC2 实例将运行。在控制台中,您可以找到实例的 IP 地址。

设置 Node-RED
下一个任务是登录实例,然后安装 node.js 和 Node-RED。

  1. 按照 AWS 指南连接到您的实例
  2. 登录后,您需要安装 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
  3. 此时,您可以通过运行 node-red 来测试您的实例。注意:您可能会收到有关 Serial 节点的一些错误 – 这是预期的,可以忽略
  4. 启动后,您可以在 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 应用程序 – 基于这一原则,您可以使用许多在线指南来了解其他可能性。

本网站所收集的公开资料部分来源于互联网,其版权归原作者本人所有,本站只是转载和摘录,目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其的真实性能做到合理的研判负责,也不构成任何其他建议,如果有任何侵犯您权益和知识产权的地方,请来邮或来电告知本站,经过核实,我们会及时的进行整理删除,谢谢!
评论 共0条
取消回复 发布评论