Animazione Hover

Esecuzione di Node-RED su Amazon Web Server

Questa guida illustra i passaggi per far funzionare Node-RED in un ambiente AWS.

Esistono due metodi:

Esecuzione su AWS Elastic Beanstalk Service (EB)

Esecuzione su Elastic Beanstalk con alta disponibilità

Esecuzione dell'immagine Ubuntu su AWS EC2

Esecuzione su AWS EBS

prerequisiti

Assicurarsi di avere un account AWS con Elastic Beanstalk, SQS e S3 abilitati.

Scaricare EB da riga di comando e installarlo sul computer locale - vedere il link

Creare le credenziali AWS e salvarle in un file locale (~/.aws/config o Usersusername.awsconfig) come mostrato di seguito

[profilo eb-cli]

aws_access_key_id = id della chiave

aws_secret_access_key = chiave di accesso

Creare un ambiente EB

Creare una nuova cartella (ad esempio demoapp)

cd a quella directory

Eseguire eb init per creare un nuovo progetto elastic beanstalk. Scegliere la regione preferita e utilizzare node.js come piattaforma. Vi verrà chiesto se volete usare ssh. In questo caso, assicuratevi di avere installato ssh sul vostro computer, se volete generare una nuova coppia di chiavi.

Accedere alla console AWS con un browser, scegliere Identity and Access Management (IAM) e aggiungere il criterio AmazonS3FullAccess a aws-elasticbeanstalk-ec2-role.NOTA: Questo fornisce l'accesso completo da EBS a S3; è possibile che si desideri regolare questo criterio per soddisfare le proprie esigenze di sicurezza.

Creare un ambiente Node-RED

Creare un file package.json con il seguente contenuto (sostituire "demoapp" con il nome della propria applicazione)

{

"nome": "demoapp",

"versione": "1.0.0",

"descrizione": "node-red demo app",

"principale": "",

"script": {

"start": "./node_modules/.bin/node-red -s ./settings.js"

},

"motori": {

"nodo": "10.x"

},

"dipendenze": {

"nodo-rosso": "1.1.x",

"aws-sdk": "2.4.x",

"node-red-contrib-storage-s3": "0.0.x",

"quando": "3.7.x"

},

"autore": "",

"licenza": "ISC"

}

Copiare il file settings.js predefinito di Node-RED nella cartella demoapp.

Modificare il file settings.js per aggiungere la seguente voce a module.exports (impostare awsRegion come quella usata in eb init e sostituire demoapp con il nome dell'applicazione):

awsRegion: 'eu-west-1',

awsS3Appname: 'demoapp',

storageModule: require('node-red-contrib-storage-s3'),

Al prompt dei comandi, assicuratevi di essere nella directory di primo livello dell'applicazione ed eseguite il comando eb create; potreste voler specificare un nome di applicazione più univoco. L'esecuzione richiederà molto tempo, ma alla fine verrà eseguita con successo.

Configurare l'accesso al Nodo-RED

Ora è possibile accedere a Node-RED direttamente dall'url web dell'applicazione. Tuttavia, questo non è sicuro e non funziona bene per la registrazione. Invece, configureremo l'accesso diretto alla porta di gestione di node-red sull'istanza ec2 che utilizza.

Nella console AWS, scegliere EC2, quindi scegliere un gruppo di sicurezza. Verrà visualizzata una serie di gruppi di sicurezza. Selezionare un'opzione con il nome dell'ambiente e una descrizione di "Gruppo di sicurezza per l'ambiente ElasticBeanstalk". Una volta selezionato, fare clic su Azioni e quindi su Modifica impostazioni in entrata. Viene visualizzata una finestra di dialogo con le regole. Aggiungere una nuova regola. Impostare il tipo su "tutto il traffico" e l'origine su "il mio ip". Salvare la regola.

Selezionare l'istanza EC2 che esegue l'applicazione nodo rosso. Copiare l'indirizzo IP.

Inserire l'indirizzo IP nel browser e la porta 8081. In questo modo si accede direttamente alla console di gestione del nodo rosso.

Nota: L'indirizzo IP pubblico fornisce anche l'accesso all'applicazione node-red; è meglio rimuovere anche questo accesso, in particolare la regola HTTP per la porta 80.

L'istanza Node-RED è ora in esecuzione su EBS. Tutti i flussi creati saranno salvati su AWS S3, in modo da poter smantellare l'ambiente e avere i flussi accessibili al momento della riallocazione.

Esecuzione su Elastic Beanstalk con alta disponibilità

Questa opzione di distribuzione offre una configurazione Node-RED a più nodi con un file system condiviso che utilizza Amazon Elastic File System (EFS). Poiché vengono eseguiti più nodi dietro un bilanciatore di carico, si ottiene un'elevata disponibilità: se un nodo muore, Elastic Beanstalk lo sostituisce automaticamente.

Esecuzione di Node-RED su Amazon Web Server

Per iniziare, clonare il repository qui https://github.com/guysqr/node-red-ha-on-aws e seguire le semplici istruzioni. L'infrastruttura viene creata dai modelli di CloudFormation, quindi non è necessario conoscere molto di AWS per configurarla.

Inoltre, questa opzione di distribuzione consente di eseguire Node-RED sotto https e di accedere tramite Auth0 (oppure si può facilmente passare all'autenticazione integrata o a qualsiasi fornitore di ID compatibile con Passport).

Esecuzione su AWS EC2 con Ubuntu

Creare un'immagine EC2 di base

Accedere alla console di AWS EC2

Fate clic su "Avvia istanza".

Nell'elenco delle AMI di avvio rapido, selezionare Ubuntu Server.

Scegliere un tipo di istanza: t2.micro è un buon punto di partenza.

Nella scheda Configura gruppo di sicurezza, aggiungere una nuova regola TCP personalizzata per la porta 1880.

Nella fase finale di "Audit", fare clic sul pulsante "Avvia".

La console chiederà di configurare un set di chiavi SSH. Selezionare Crea una nuova coppia di chiavi e fare clic su Scarica coppia di chiavi. Il browser salverà il file .pem, conservandolo al sicuro. Infine, fare clic su Start.

Dopo qualche minuto, l'istanza EC2 sarà in funzione. Nella console, è possibile trovare l'indirizzo IP dell'istanza.

Impostare il nodo rosso

Il compito successivo è quello di accedere all'istanza e installare node.js e Node-RED.

Seguire le linee guida di AWS per connettersi alla propria istanza.

Una volta effettuato l'accesso, è necessario installare node.js e 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

A questo punto, è possibile testare l'istanza eseguendo node-red. NOTA: È possibile che vengano visualizzati alcuni errori relativi ai nodi seriali; questo è previsto e può essere ignorato.

Una volta avviato, è possibile accedere a http://. :1880/.

Per far sì che Node-RED si avvii automaticamente al riavvio dell'istanza, si può usare pm2:

sudo npm install -g -unsafe-perm pm2

pm2 start `che nodo-rosso` - -v

pm2 salvare

Avvio pm2

NOTA: quest'ultimo comando richiederà l'esecuzione di un altro comando: assicurarsi di eseguire quanto indicato.

Passo successivo

Questa guida è solo un esempio di come si può scegliere di configurare le istanze per l'esecuzione in EC2. Node-RED è "solo" un'applicazione node.js che espone un server HTTP - in questo principio sono disponibili molte guide online per conoscere altri approcci possibili.

Parole chiave: Gateway LoRa

Contatto