我应该为我的所有应用程序创建一个实例,还是应该为每个应用程序创建一个实例?

Should I create one instance for all my applications or should I use one for each?

我对 Iot 项目和编程还很陌生。我有一个带简单加速度计的 ESP01,我想将其数据发送到数据库。现在我已经在我的机器上本地测试了所有这些并且一切正常。

这就是我正在使用的

Esp01 + 加速度计将数据发送到我机器上的本地 mqtt 代理 mosquitto 运行,一个 node-red 应用程序将这些数据发送到 Influxdb,然后 grafana 以显示这些数据。

现在我想在云服务器 AWS 上托管所有内容。我发现我应该创建一个 AWS EC2 实例并在 Ubuntu 机器上安装 Node red 和 MQTT。我的大问题是

“我应该为 Node red 创建一个实例,为 MQTT 代理创建一个实例,还是我可以只使用一个实例并在上面安装它们?”

最后但并非最不重要的问题是我应该对 influxdb 做同样的事情吗?

这取决于多种因素,包括风险状况。如果只是为了实验和开发,一个实例拥有一切可能很好。如果它是您为(付费)客户提供的服务,那么最好将它们分布在多个实例中以提供弹性。

全看钱。如果你严格遵守 AWS 指南,他们会告诉你应该有一个负载均衡器和至少两个 m 型实例,并且每个服务可能应该有自己的一对实例。这样一来,如果一个节点发生故障,就不会停机。该设置可能会花费您每月 100 美元左右。

但是对于这种项目(只为你自己),我会选择一个小的(尽可能小的)实例,然后我会把所有东西都放在上面。很高兴知道在 AWS 中任何实例都可能随时失败。这种情况很少见,但是当您有数千个实例时,它会定期发生。因此 - 最简单的解决方案是使用 Cloudformation 创建您的设置并定期备份。也许您可以创建一个只有一个实例的自动缩放组。如果失败,它将被自动替换,您可以(自动或手动)从备份中恢复数据。例如,在引导期间,它可以在 s3 中查找最后的备份并安装它(通过元数据中的脚本)。

这并不完美,但对于爱好项目来说肯定是可以接受的。而且价格便宜。

Mosquitto 和 Node-RED 都将 运行 在一个实例上愉快地运行。甚至一个 nano 实例可能足以满足业余爱好级别的使用,一个 Lightsail 实例甚至可能绰绰有余。

作为旁注,您确实需要确保在将 Node-RED 放置在面向互联网的机器上之前为 Node-RED 启用管理员 authentication