华为云云耀云服务器L实例评测|使用Portainer快速部署物联网低代码平台Node-RED

应用场景

Node-RED是一个开源的物联网平台,它是一个基于流程的编程工具,主要用于为物联网 (IoT)设备创建流程。它使用可视化编程方法,允许开发人员将预定义的代码块(称为“节点”,Node)连接起来执行任务。连接的节点,通常是输入节点、处理节点和输出节点的组合,当它们连接在一起时,构成一个“流” (Flows)本文将介绍如何基于华为云云耀云服务L实例的Portainer来快速部署Node-RED平台。

资源和成本规划

本次实践使用Portainer镜像。
本实践以如下资源规划为例,您可根据实际需要进行调整。

资源配置说明
云耀云服务器L实例- CPU:2核 - 内存:2GB - 系统盘:40GiBPortainer应用镜像运行的最低配置为2核2GB、系统盘40GiB,建议根据您的需求选择云耀云服务器L实例。
镜像Portainer选择Portainer应用镜像。
安全组入方向规则:- 协议:TCP- 端口:80、443、1880 - 源地址:0.0.0.0/0- 80:允许使用HTTP协议访问网站。- 443:允许使用HTTPS协议访问网站。- 1880:允许访问nodered 服务
域名domaintest.com- 如果您仅为个人开发或测试使用,可以不添加域名。- 如果您的应用对外开放,请为云服务器添加并解析域名。

操作流程

购买并配置云耀云服务器L实例

  1. 登录云耀云服务器L实例控制台
  2. 单击“购买资源”,在下拉列表中选择“购买 云耀云服务器L实例”或选择“购买 云耀服务组合”。image.png
  3. 对云服务器进行资源配置。本例以选择“购买 云耀云服务器L实例”为例。image.png
参数说明
区域不同区域的云耀云服务器L实例之间内网互不相通。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。
场景镜像选择Portainer应用镜像。
套餐规格选择套餐规格。最低配置为2核2GB、系统盘40GiB。
实例名称请自定义方便您识别的实例名称,例如Portainer-Example。
附加服务(可选)仅选择“购买 云耀云服务器L实例”时支持。根据需要任意选择数据盘、主机安全、云备份附加服务。
购买时长单次购买最短为1个月,最长为3年。
购买数量设置您购买的云耀云服务器L实例数量。
  1. 单击“立即购买”,进入订单详情页面。根据界面提示,请确认配置信息,阅读并勾选协议。
  2. 单击“去支付”,根据页面提示完成支付。
  3. 单击“返回华为云云耀云服务解决方案控制台”,查看已创建的云耀云服务器L实例。image.png
设置云耀云服务器L实例密码
  1. 单击云耀云服务器L实例卡片。
  2. 在“概览”页“镜像信息”中,单击“管理”登录管理界面,检查应用镜像是否正常启动。
  3. 在这里插入图片描述

**须知:**在应用镜像启动期间,对云耀云服务器L实例进行重置密码、重启或开关机操作将导致应用镜像管理界面登陆异常。image.png如果管理界面显示正常的引导或登陆界面表示应用镜像已经正常启动。否则请耐心等待1~2分钟,稍后重试。
4. 请参考设置/重置密码,设置云耀云服务器L实例管理员root的密码。

登录云耀云服务器L实例

请参考远程登录Linux云服务器(VNC方式)登录云耀云服务器L实例。
因为Nginx安全级别过高,可能导致部分镜像功能不可用。可登录云服务器后执行如下命令解决:
wget -N https://websoft9.github.io/stackhub/scripts/nginx_huaweicloud.sh && bash nginx_huaweicloud.sh

配置安全组

配置安全组的入方向访问规则,确保可以正常访问应用镜像。

  1. 单击云耀云服务器L实例卡片,进入资源页面。
  2. 在左侧列表中单击“云耀云服务器L实例”,单击云服务器名称,进入云服务器详情页面。
  3. 选择“安全组”页签,单击“添加规则”,添加如下规则。本例只添加基本规则,您可根据需要添加更多规则。
优先级策略类型协议端口源地址描述
100允许IPv4TCP:18800.0.0.0/0允许访问node-red服务。
100允许IPv4TCP:4430.0.0.0/0允许使用HTTPS协议访问应用管理界面。
100允许IPv4TCP:800.0.0.0/0允许访问HTTP协议访问应用管理界面。
  1. **图1 **配置结果 为了方便,我这里将所有的端口都已放开。生产环境请勿这样配置。不太安全。
    image.png
添加并解析域名(可选)

本文介绍如何为服务器添加并解析域名,以便用户可以使用域名访问网站。如果您仅为个人开发或测试使用,可以不添加域名。

  1. 在左侧列表中单击“云耀云服务器L实例”,单击云服务器名称,进入云服务器详情页面。
  2. 选择“域名”页签,单击“添加域名”。输入域名,例如domaintest.com。请确保这里的域名已注册,如果您还没有域名,请单击“立即购买”注册(付费),具体操作详见流程指引image.png
  3. 单击“确定”。
  4. 单击domaintest.com域名操作列表中的“解析域名”。前缀和域名组成子域名。支持将域名或者子域名解析至当前公网IP。若域名前缀为空,表示将域名domaintest.com解析至当前服务器公网IP。
  5. 在“域名”页签查看解析的域名。
  6. 备案域名。要想通过域名成功访问服务器,必须备案域名。请在华为云备案中心备案此域名(免费),具体操作详见快速完成网站备案

初始化Portainer

  1. 在服务器“概览”页“镜像信息”中,单击“管理”登录管理界面。image.png初始化Portainer有一定时效性,如果未能快速创建用户,会出现如下图提示。请登录云服务器执行命令sudo docker restart portainer重启Portainer,随后快速创建用户。image.png
  2. 设置Portainer管理员用户名密码,单击“Create user”。如果您有备份的数据,在“Restore Portainer from backup”配置项中,您可以从本地上传备份数据以便快速搭建Portainer环境。image.png
  3. 选择“Home”菜单,单击Local项目就可以开始使用Portainer进行Docker可视化管理 。image.png

至此,您已获得一台完备的Portainer应用云耀云服务器L实例。您可以开始使用Portainer,下面我们继续在该平台上部署Node-RED平台

使用Portainer部署Node-RED容器

下面我们以部署Node-RED容器为例,介绍如何使用Portainer进行Docker可视化管理。更多操作详见官网指导

创建Node-RED容器
  1. 选择“Contaners”菜单,单击“Add container”添加Node-RED容器。image.png

  2. 按图示配置Node-RED容器参数。

    • ①Name:自定义的容器名称
    • ②Image:容器镜像名称,例如设置nodered/node-red,系统将自动在DockerHub中拉取node-red最新镜像。
    • ③单击“publish a new network port”,添加1880端口,确保可以正常访问Node-RED服务。
    • ④Restart policy:建议选择“Always”,使得容器无论在什么情况下停止总会自动重新启动。
  3. image.png

  4. 单击“Deploy the container”创建Node-RED容器。

访问node-red服务

等待容器部署成功后,访问 http://{ip}:1880 就能够访问到node-red服务image.png

安装的节点

安装node-red中最常用的dashboard节点

image.png

搜索dashboard,点击安装

image.png
测试demo

以下是要准备导入的json流内容

[
  {
    "id": "24c1f56bc8eb1d36",
    "type": "tab",
    "label": "双silder 图表",
    "disabled": false,
    "info": "",
    "env": []
  },
  {
    "id": "64c475338976983e",
    "type": "ui_slider",
    "z": "24c1f56bc8eb1d36",
    "name": "",
    "label": "水量",
    "tooltip": "水量",
    "group": "776a423d272e1463",
    "order": 0,
    "width": "6",
    "height": "2",
    "passthru": true,
    "outs": "all",
    "topic": "topic",
    "topicType": "msg",
    "min": 0,
    "max": "100",
    "step": 1,
    "className": "",
    "x": 170,
    "y": 260,
    "wires": [
      [
        "c27918d2809fc841"
      ]
    ]
  },
  {
    "id": "1353dafc1a7b4a59",
    "type": "ui_slider",
    "z": "24c1f56bc8eb1d36",
    "name": "",
    "label": "电量",
    "tooltip": "电量",
    "group": "776a423d272e1463",
    "order": 1,
    "width": "6",
    "height": "2",
    "passthru": true,
    "outs": "all",
    "topic": "topic",
    "topicType": "msg",
    "min": 0,
    "max": "100",
    "step": 1,
    "className": "",
    "x": 170,
    "y": 340,
    "wires": [
      [
        "5b51d2ea7045bff6"
      ]
    ]
  },
  {
    "id": "4327197853397112",
    "type": "ui_chart",
    "z": "24c1f56bc8eb1d36",
    "name": "",
    "group": "776a423d272e1463",
    "order": 2,
    "width": "12",
    "height": "4",
    "label": "chart",
    "chartType": "line",
    "legend": "true",
    "xformat": "HH:mm:ss",
    "interpolate": "linear",
    "nodata": "",
    "dot": false,
    "ymin": "0",
    "ymax": "100",
    "removeOlder": 1,
    "removeOlderPoints": "",
    "removeOlderUnit": "3600",
    "cutout": 0,
    "useOneColor": false,
    "useUTC": false,
    "colors": [
      "#1f77b4",
      "#f95a15",
      "#ff7f0e",
      "#2ca02c",
      "#98df8a",
      "#d62728",
      "#ff9896",
      "#9467bd",
      "#c5b0d5"
    ],
    "outputs": 1,
    "useDifferentColor": false,
    "className": "",
    "x": 630,
    "y": 300,
    "wires": [
      []
    ]
  },
  {
    "id": "c27918d2809fc841",
    "type": "function",
    "z": "24c1f56bc8eb1d36",
    "name": "topic水量",
    "func": "msg.topic = '水量'\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 380,
    "y": 260,
    "wires": [
      [
        "4327197853397112"
      ]
    ]
  },
  {
    "id": "5b51d2ea7045bff6",
    "type": "function",
    "z": "24c1f56bc8eb1d36",
    "name": "topic电量",
    "func": "msg.topic = '电量'\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 380,
    "y": 340,
    "wires": [
    [
    "4327197853397112"
    ]
    ]
  },
    {
    "id": "30621a3a429251a3",
    "type": "inject",
    "z": "24c1f56bc8eb1d36",
    "name": "清空图表",
    "props": [
    {
    "p": "payload"
  },
    {
    "p": "topic",
    "vt": "str"
  }
    ],
    "repeat": "",
    "crontab": "",
    "once": false,
    "onceDelay": 0.1,
    "topic": "",
    "payload": "[]",
    "payloadType": "json",
    "x": 340,
    "y": 460,
    "wires": [
    [
    "4327197853397112"
    ]
    ]
  },
    {
    "id": "776a423d272e1463",
    "type": "ui_group",
    "name": "Default",
    "tab": "f00e468d8d4c1d19",
    "order": 1,
    "disp": true,
    "width": "12",
    "collapse": false,
    "className": ""
  },
    {
    "id": "f00e468d8d4c1d19",
    "type": "ui_tab",
    "name": "Home",
    "icon": "dashboard",
    "disabled": false,
    "hidden": false
  }
    ]

image.png
将要导入的json内容复制到编辑区域,点击导入,再点击部署。
image.png
点击右上角的红色部署后,访问ip+1880/ui 即可访问到面板
image.png

Node-RED是工业网物联网的重要组成部分,我最开始接触Node-RED,也算是一个偶然的机会吧,上班后领导安排我的第一个任务就是调研一下Node-RED,我之后上网查了一下,那个时候网上相对于Node-RED的资料也比较少,只知道它是IBM公司的一个开源项目。直到最近,发现许多大公司的产品都支持Node-RED,比如西门子公司的IoT2000,研华公司的WISE PaaS 网关,美国OPTO 22等设备中都安装了Node-RED,表明它在工业物联网和控制中已经广泛应用了。 那么工业物联网为什么要用它?它又处于工业物联网那个层次?它具有哪些特性?它帮助物联网解决了什么问题?为什么说它是柔性动态可重构的解决方案呢? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 本门课程,老师将带领你从Node-RED的发展,工业物联网定位开始讲解,并带领着大家进行手把手安装Node-RED,实际操作演练Node-RED,并搭建一个物联网平台,给大家带来更好的学习效果。  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 为了能够让小伙伴们快速了解本门课程的结构,本门课程从以下几个方面展开:Node-RED入门Node-RED安装与配置Node-RED教学实战Node-RED的优势与不足Node-RED能为我们带来什么Node-RED总结与展望
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拿我格子衫来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值