我们的MQTT系列将继续深入研究groov EPIC(现在是groov里约热内卢)用于高可靠性MQTT网络的特性。
第一部分-MQTT:基本的发布groov史诗
第二部份-MQTT:火花塞B更快,更好
MQTT的核心是为不可靠的网络而设计的。早在上世纪90年代,康菲石油公司(现为Phillips 66)一直在寻找一种方法来改善其低带宽拨号和昂贵的VSAT(小型卫星碟形天线)SCADA网络的遥测报告。IBM与系统集成商Arcom Control Systems合作(现在Cirrus Link解决方案)开发一种极简的通信协议,可以优雅地处理TCP/IP上许多分布式设备之间的间歇性网络中断和高延迟。
20年前,MQTT作为一种灵活、高效的物联网数据传输方式在IT界流行起来,但这些应用程序不一定能利用MQTT严格的状态管理和数据完整性特性。Cirrus Link知道MQTT要想在工业环境中蓬勃发展,可靠性是至关重要的,因此它开发了Sparkplug B规范,在一定程度上满足了这一需求。
如果您刚刚开始这个系列,我建议您回到第1部分和第2部分,熟悉一下groovEPIC的MQTT客户端和Sparkplug B规范的优势。在这篇文章中,我将更深入地讨论安全、历史和冗余特性groovManage和Ignition Edge客户端提供以及它们如何与火花塞B有效载荷一起工作,使MQTT网络更具弹性。
奖金:groov管理客户端groov里约热内卢提供本系列中描述的所有相同的MQTT函数。继续读下去,groov里约热内卢用户!
安全
网络威胁对其他稳定的系统构成了风险,但幸运的是,groovEPIC和MQTT更容易保护您的数据。
MQTT没有使用自身的安全机制使协议复杂化,而是利用了TCP/IP堆栈中内置的SSL/TLS加密。假设您的代理支持它,您可以在任何一个中启用加密通信groov通过首先替换代理地址中的协议和端口指定来管理或点火边缘。对我的经纪人来说,而不是使用
我会用
在groov在MQTT > Configuration > Broker子菜单下,还可以启用“SSL”选项并选择适当的“CA证书”。以下是这些变化的样子:
如果您以前没有处理过信任证书,那么它们是生成加密密钥和验证EPIC是否与正确端点通信的重要部分。该证书由MQTT服务器创建,并由网络管理员分发,以便在受信任的边缘设备(如EPIC)上使用。欲了解更多信息,请查看这篇文章来自我们的系列文章groov史诗的安全.
将安全证书上传到您的groovEPIC,进入Security > Client SSL菜单。完成后,证书文件将作为一个选项出现在MQTT Broker > Select certificate对话框中。的groovEPIC用户指南有关证书创建和管理的详细信息。
如果你在使用groovEPIC的Ignition Edge MQTT客户端,下面是在MQTT传输模块设置中这些相同的更改:
如果您关心SSL/TLS如何影响MQTT的性能,请查看下面的内容来自Hive MQ的基准测试报告.它的结论是,虽然加密会影响连接时的性能,但在持续使用期间几乎没有什么区别。
历史
在断开连接的情况下,普通的MQTT提供了服务质量级别,可以保证消息传递,但要牺牲握手所使用的额外流量。但是,在重新连接时只传递最近的消息。火花塞B提供了一种不同的机制,最大限度地减少数据丢失。
因为Sparkplug B用元数据装饰MQTT消息,所以SpB客户端能够将某些消息标记为历史记录。如果groovEPIC与经纪人失去联系,groovManage可以将记录存储在RAM中,然后在连接恢复时将它们转发给代理。
在groov通过在“历史队列”字段中插入一个数字,您将在MQTT >配置>设备子菜单中启用此功能。我们建议将队列大小设置为3600,以便在存储和性能之间取得平衡,但根据数据生成的速度,您可以设置更高的队列大小:
在Ignition Edge客户端中,存储和转发功能甚至更好,它提供了更大的容量和非易失性存储选项。如果您选择磁盘支持选项,您将获得额外的好处groovEPIC的电源故障安全文件系统和工业SSD。
要启用点火边缘的历史化,请转到MQTT传输>历史并编辑“默认内存存储”。选择“启用此历史存储”,并将“类型”更改为“磁盘支持的”。(我还打算改变历史商店的名称,以反映这些变化。)
如果您愿意,还可以在此调整历史容量。默认设置将在1周内缓冲多达100,000条记录。哇。
一旦这部分完成,返回MQTT传输>设置菜单并选择“发射器”选项卡。向下滚动并将“历史存储”设置为您刚刚启用的存储的名称(在我的例子中为“默认存储”)。
注意:要充分利用存储转发历史,需要与正在监视这些历史记录的网络内MQTT订阅者通信。目前,点火MQTT引擎模块和金丝雀实验室MQTT火花塞B数据收集器都可以。
随着MQTT的流行不断增长,我们希望看到对这种和Sparkplug B的其他创造性使用的支持也会添加到其他SCADA包和历史学家中。
冗余
另一个基本容错措施是设置多个MQTT代理并配置您的groov与每个连接的EPIC。
来建立这个groov管理、导航到MQTT > Configuration > Add Broker,并创建任意数量的连接。
在上图中,连同我与Opto 22现场的连接Mosquitto代理,我已经添加了第二个连接到我们的战车代理托管在AWS上。
如果您正在使用Ignition Edge MQTT客户端,那么设置冗余就像使用groov管理。从MQTT传输>设置>服务器选项卡添加新的服务器连接。任何共享相同“服务器集”属性的代理连接都将成为自动故障转移组的一部分。
点火边缘允许您在“设置”选项卡下创建额外的故障转移组。对于可能围绕特定代理对MQTT客户机进行分组的高级场景,可以通过在“Transmitter”选项卡下定义“Custom Transmitter Settings”来创建其他MQTT客户机,每个客户机都有自己的服务器集和历史存储。
主要的主机
中的“主主机ID”属性groov管理和点火边缘得到特别提到,因为它适用于我们已经讨论过的几个功能,并展示了火花塞B规范的另一个好处。
通常,在使用冗余连接时,MQTT客户机将连接到第一个可用的代理,并在失去连接时切换轮询。在向SCADA、历史记录或IoT系统等后端客户端发送数据的情况下,通过允许您将该系统指定为主主机应用程序,与spb兼容的客户端可以提高性能。
使用主主机名称(如果有的话)groov当EPIC或后端客户端失去与当前代理的连接时,EPIC将循环使用可用连接,直到再次找到后端客户端。如果您正在使用存储转发历史队列,那么一旦连接断开,EPIC就会开始存储记录,并继续存储,直到它可以将其记录交付给目标应用程序为止。
中指定主主机应用程序groov管理,转到主MQTT配置屏幕并将“主主机ID”设置为目标应用程序的MQTT客户端ID。
例如,在我的笔记本电脑上运行的点火SCADA服务器(不是点火边缘,而是完全点火),有一个笔记本点火SCADA的客户端ID,所以我将输入它作为“主主机ID”groov管理:
在Ignition Edge中,称为服务器集的冗余代理故障转移组也可以指定“主主机ID”。这可以在“设置”选项卡下找到。
在指定主主机时,请注意MQTT将优先使用连接而不是后端客户机在到代理的连接。如果所有可用的代理连接都没有发布主主机的ONLINE状态,MQTT客户端将不会保持连接,直到有一个代理连接发布。
权衡和考虑
火花塞B为可靠、可互操作的工业通信提供了一种有效的标准。groov史诗和groov里约热内卢为构建容错MQTT火花塞B数据系统提供了一个安全的OT平台。在没有额外费用的情况下,groovManage为安全性、存储和转发历史记录和冗余提供了基本特性。免费尝试,只有一点更多的授权,点火边缘把这些功能与磁盘备份存储和更多的选择,以扩大您的基础设施。
当你考虑哪种选择适合你时,请记住这一点groovManage更适合标记数在1000以下,所以如果你有一个更大的系统,Ignition Edge将是最好的选择。与groovEPIC,您可以利用任一选项来设计提供高正常运行时间、数据完整性和抗网络攻击的系统。
groov用火花塞B管理 | 点火边 | |
平台 | groov史诗 groov里约热内卢 |
groov史诗 |
数据源 | PAC控制标签和I/O | PAC控制标签和I/O,传统plc,设备或OPC标签 |
标签数 | 媒介 | 高 |
订阅其他出版商的主题 | 没有 | 是(带MQTT引擎) |
安全 | 用户身份验证 SSL / TLS加密 安全证书 |
用户身份验证 SSL / TLS加密 安全证书 客户端证书 |
Historization | 易失性存储器 最高65K条记录 |
非易失性存储(可选) 10万记录或1周 |
冗余 | 多个代理 主主机名称 |
多个代理 多个漂移组 多个客户端 主主机名称 |
成本 | 没有一个 | 800美元* +$200** w/ MQTT引擎 |
*GROOV-LIC-EDGE截至20年6月10日的当前定价;**使用点火边缘许可证购买时的特殊价格
下次我们一起来…
现在我们有了一个安全可靠的数据共享基础,我们可以看看让MQTT网络扩展到工业级别(包括遗留系统集成)的总体架构。为了提前预览,请查看我们最近与感应自动化和Cirrus Link的网络研讨会:点火社区Live与Cirrus链接:MQTT工作坊.