新聞中心
PRESS CENTER
本指南將引導(dǎo)您完成讓 Node-RED 在 AWS 環(huán)境中運(yùn)行的步驟。
有兩種方法:
在 AWS Elastic Beanstalk 服務(wù) (EB) 上運(yùn)行
在具有高可用性的 Elastic Beanstalk 上運(yùn)行
在 AWS EC2 上的 嵌入式Linux 映像下運(yùn)行
在 AWS EBS 上運(yùn)行
先決條件
確保您擁有啟用了 Elastic Beanstalk、SQS 和 S3 的 AWS 賬戶
下載 EB 命令行并安裝在本地計(jì)算機(jī)上 - 請(qǐng)參閱鏈接
創(chuàng)建 AWS 憑證并保存在本地文件(~/.aws/config 或 Usersusername.awsconfig)中,如下所示
[profile eb-cli]
aws_access_key_id = key id
aws_secret_access_key = access key
創(chuàng)建 EB 環(huán)境
創(chuàng)建一個(gè)新目錄(例如demoapp)
cd 到那個(gè)目錄
運(yùn)行eb init以創(chuàng)建一個(gè)新的彈性 beanstalk 項(xiàng)目。選擇首選區(qū)域并使用 node.js 作為平臺(tái)。系統(tǒng)將詢問(wèn)您是否要使用 ssh。如果你這樣做了,如果你想生成一個(gè)新的密鑰對(duì),請(qǐng)確保你的計(jì)算機(jī)上安裝了 ssh。
在瀏覽器上登錄 AWS 控制臺(tái),選擇身份和訪問(wèn)管理 (IAM) 并將 AmazonS3FullAccess 策略添加到 aws-elasticbeanstalk-ec2-role。注意:這提供了從 EBS 到 S3 的完全訪問(wèn)權(quán)限,您可能希望調(diào)整此策略以滿足您自己的安全需求
創(chuàng)建 Node-RED 環(huán)境
創(chuàng)建一個(gè)package.json包含以下內(nèi)容的文件(將“demoapp”替換為您的應(yīng)用名稱)
{
"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"
}
將默認(rèn)的Node-RED settings.js 文件復(fù)制到 demoapp 目錄
編輯 settings.js 文件以將以下條目添加到 module.exports(將 awsRegion 設(shè)置為 eb init 中使用的內(nèi)容,并將 demoapp 替換為您的應(yīng)用名稱):
awsRegion: 'eu-west-1',
awsS3Appname: 'demoapp',
storageModule: require('node-red-contrib-storage-s3'),
在命令提示符下,確保您位于應(yīng)用程序的頂級(jí)目錄中并運(yùn)行命令eb create;您可能希望指定一個(gè)更獨(dú)特的應(yīng)用程序名稱。這將需要很長(zhǎng)時(shí)間才能運(yùn)行,但最終會(huì)成功返回。
配置 Node-RED 訪問(wèn)
現(xiàn)在可以直接從應(yīng)用程序的 Web url 訪問(wèn) Node-RED。然而,這是不安全的,并且不能很好地用于日志記錄。相反,我們將在它使用的 ec2 實(shí)例上配置對(duì) node-red 管理端口的直接訪問(wèn)。
在 AWS 控制臺(tái)中,選擇 EC2,然后選擇安全組。您將看到一組安全組。選擇一個(gè)具有您的環(huán)境名稱和描述為“ElasticBeanstalk 環(huán)境的安全組”的選項(xiàng)。選擇后,單擊“操作”,然后單擊“編輯入站設(shè)置”。出現(xiàn)一個(gè)帶有規(guī)則的對(duì)話框。添加新規(guī)則。將類型設(shè)置為“所有流量”,將源設(shè)置為“我的 ip”。保存規(guī)則。
選擇運(yùn)行節(jié)點(diǎn)紅色應(yīng)用程序的 EC2 實(shí)例。復(fù)制它的IP地址
在瀏覽器中輸入 IP 地址,端口為 8081。這將提供對(duì) node-red 管理控制臺(tái)的直接訪問(wèn)。
注意:公共 IP 地址還提供對(duì) node-red 應(yīng)用程序的訪問(wèn),最好同時(shí)刪除該訪問(wèn),即端口 80 的 HTTP 規(guī)則。
您的 Node-RED 實(shí)例現(xiàn)在正在 EBS 上運(yùn)行。您創(chuàng)建的任何流都將保存到 AWS S3,以便您可以拆除環(huán)境,并且在您重新部署時(shí)可以訪問(wèn)這些流。
在具有高可用性的 Elastic Beanstalk 上運(yùn)行
此部署選項(xiàng)為您提供了多節(jié)點(diǎn) Node-RED 設(shè)置,以及使用 Amazon Elastic File System (EFS) 的共享文件系統(tǒng)。因?yàn)樗谪?fù)載均衡器后面運(yùn)行多個(gè)節(jié)點(diǎn),所以您將獲得高可用性 - 如果一個(gè)節(jié)點(diǎn)死亡,Elastic Beanstalk 將自動(dòng)替換它。

要開(kāi)始,請(qǐng)?jiān)诖颂幙寺〈鎯?chǔ)庫(kù)https://github.com/guysqr/node-red-ha-on-aws并按照簡(jiǎn)單的說(shuō)明進(jìn)行操作。該基礎(chǔ)設(shè)施是由 CloudFormation 模板為您創(chuàng)建的,因此您無(wú)需對(duì) AWS 有太多了解即可對(duì)其進(jìn)行設(shè)置。
此外,此部署選項(xiàng)使您能夠在 https 下運(yùn)行 Node-RED 并通過(guò) Auth0 登錄(或者您可以輕松切換到內(nèi)置身份驗(yàn)證或任何與 Passport 兼容的 ID 提供程序)。
使用 嵌入式Linux 在 AWS EC2 上運(yùn)行
創(chuàng)建基礎(chǔ) EC2 映像
登錄AWS EC2 控制臺(tái)
點(diǎn)擊“啟動(dòng)實(shí)例”
在 Quick Start AMI 列表中,選擇嵌入式Linux Server
選擇實(shí)例類型 -t2.micro是一個(gè)很好的起點(diǎn)
在“配置安全組”選項(xiàng)卡上,為端口 1880 添加新的“自定義 TCP 規(guī)則”
在最后的“審核”步驟中,單擊“啟動(dòng)”按鈕
控制臺(tái)將提示您配置一組 SSH 密鑰。選擇“創(chuàng)建新密鑰對(duì)”,然后單擊“下載密鑰對(duì)”。您的瀏覽器將保存.pem文件 - 確保安全。最后,單擊“啟動(dòng)”。
幾分鐘后,您的 EC2 實(shí)例將運(yùn)行。在控制臺(tái)中,您可以找到您的實(shí)例的 IP 地址。
設(shè)置節(jié)點(diǎn)-RED
下一個(gè)任務(wù)是登錄實(shí)例,然后安裝 node.js 和 Node-RED。
按照 AWS 指南連接到您的實(shí)例。
登錄后,您需要安裝 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
此時(shí),您可以通過(guò)運(yùn)行來(lái)測(cè)試您的實(shí)例node-red。注意:您可能會(huì)收到有關(guān)串行節(jié)點(diǎn)的一些錯(cuò)誤 - 這是意料之中的,可以忽略。
啟動(dòng)后,您可以在http://<your-instance-ip>:1880/.
要讓 Node-RED 在您的實(shí)例重新啟動(dòng)時(shí)自動(dòng)啟動(dòng),您可以使用 pm2:
sudo npm install -g --unsafe-perm pm2
pm2 start `which node-red` -- -v
pm2 save
pm2 startup
注意:這個(gè)最后的命令會(huì)提示你運(yùn)行另一個(gè)命令——確保你按照它說(shuō)的去做。
下一步
本指南僅涉及您可以選擇如何配置實(shí)例以在 EC2 中運(yùn)行的表面。Node-RED 是“只是”一個(gè)暴露 HTTP 服務(wù)器的 node.js 應(yīng)用程序 - 在這個(gè)原則上,有許多在線指南可以用來(lái)了解其他可能的方法。
關(guān)鍵詞:LoRa網(wǎng)關(guān)