• EMQX 入门实战(1)安装及简单使用


    EMQX 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器,本文主要介绍其安装及简单使用,文中使用到的软件版本:emqx 4.4.2、Centos 7.

    1、概述

    EMQX (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。

    Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台。

    MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。

    EMQX 设计目标是实现高可靠,并支持承载海量物联网终端的 MQTT 连接,支持在海量物联网设备间低延时消息路由:

    1. 稳定承载大规模的 MQTT 客户端连接,单服务器节点支持 200 万连接。
    2. 分布式节点集群,快速低延时的消息路由。
    3. 消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
    4. 完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持。

    2、单机安装

    EMQX 提供了多种安装方式:RPM/DEB包安装 (Linux)、ZIP 压缩包安装 (Linux、MacOS、Windows)、通过 Docker 运行、通过 Helm 安装、源码编译安装;这里主要介绍 通过ZIP 压缩包安装 EMQX。

    2.1、下载并解压安装包

    下载对应系统的安装包:https://www.emqx.com/zh/try?product=broker,然后解压:

    unzip emqx-4.4.2-otp24.1.5-3-el7-amd64.zip

    2.2、启动 EMQX Broker

    cd emqx/bin
    ./emqx start

    2.3、停止 EMQX Broker

    cd emqx/bin
    ./emqx stop

    2.4、查看状态

    cd emqx/bin
    ./emqx_ctl status

    2.5、Listener

    Listener 主要用于配置不同协议的监听端口和相关参数,EMQX 支持配置多个 Listener 以同时监听多个协议或端口,以下是支持的 Listener:

    监听器说明
    TCP Listener A listener for MQTT which uses TCP
    SSL Listener A secure listener for MQTT which uses TLS
    Websocket Listener A listener for MQTT over WebSockets
    Secure Websocket Listener A secure listener for MQTT over secure WebSockets (TLS)

    EMQX 默认提供 5 个 Listener,它们将占用以下端口:

    端口说明
    1883 MQTT/TCP 协议端口
    11883 MQTT/TCP 协议内部端口,仅用于本机客户端连接
    8883 MQTT/SSL 协议端口
    8083 MQTT/WS 协议端口
    8084 MQTT/WSS 协议端口

    2.5、控制台

    EMQX 提供了 Dashboard 以方便用户管理设备与监控相关指标。控制台地址为:http://localhost:18083,默认用户名密码为:admin/public,可以在 etc/plugins/emqx_dashboard.conf 配置文件中修改默认密码。

    3、集群安装

    3.1、集群原理

    Erlang/OTP 最初是爱立信为开发电信设备系统设计的编程语言平台,电信设备(路由器、接入网关等)典型设计是通过背板连接主控板卡与多块业务板卡的分布式系统。

    Erlang/OTP 语言平台的分布式程序,由分布互联的 Erlang 运行系统组成,每个 Erlang 运行系统被称为节点(Node),节点(Node) 间通过 TCP 互联,消息传递的方式通信:

    EMQX 消息服务器集群基于 Erlang/OTP 分布式设计,集群原理可简述为下述两条规则:

    MQTT 客户端订阅主题时,所在节点订阅成功后广播通知其他节点:某个主题(Topic)被本节点订阅。

    MQTT 客户端发布消息时,所在节点会根据消息主题(Topic),检索订阅并路由消息到相关节点。

    3.2、集群规划

    ip 节点名称
    10.49.196.10 emqx@10.49.196.10
    10.49.196.11 emqx@10.49.196.11
    10.49.196.12 emqx@10.49.196.12

    3.3、按单机方式安装 EMQX

    在各机器上按单机方式安装 EMQX,注意修改配置(etc/emqx.conf)的节点名称:

    10.49.196.10 上:

    node.name = emqx@10.49.196.10

    10.49.196.11 上:

    node.name = emqx@10.49.196.11

    10.49.196.12 上:

    node.name = emqx@10.49.196.12

    分别启动各机器上的 EMQX。

    3.4、节点加入集群

    在 10.49.196.11 和 10.49.196.12 上执行:

    cd emqx/bin
    ./emqx_ctl cluster join emqx@10.49.196.10

    3.5、节点推出集群

    A、节点主动退出集群:

    cd emqx/bin
    ./emqx_ctl cluster leave

    B、在其他节点上删除其他节点

    如在  emqx@10.49.196.11 上删除 emqx@10.49.196.12  节点:

    cd emqx/bin
    ./emqx_ctl cluster force-leave emqx@10.49.196.12

    3、认证

    身份认证是大多数应用的重要组成部分,MQTT 协议支持用户名密码认证,启用身份认证能有效阻止非法客户端的连接。

    EMQX 中的认证指的是当一个客户端连接到 EMQX 的时候,通过服务器端的配置来控制客户端连接服务器的权限。

    EMQX 的认证支持包括两个层面:

    • MQTT 协议本身在 CONNECT 报文中指定用户名和密码,EMQX 以插件形式支持基于 Username、ClientID、HTTP、JWT、LDAP 及各类数据库如 MongoDB、MySQL、PostgreSQL、Redis 等多种形式的认证。

    • 在传输层上,TLS 可以保证使用客户端证书的客户端到服务器的身份验证,并确保服务器向客户端验证服务器证书。也支持基于 PSK 的 TLS/DTLS 认证。

    这里主要介绍下基于内置数据源(Mnesia)的认证。

    3.1、修改配置

    根据需要在 etc/plugins/emqx_auth_mnesia.conf 文件中修改密钥算法、增加或修改用户信息。

    ## Value: plain | md5 | sha | sha256 | sha512
    auth.mnesia.password_hash = sha256
    
    auth.user.1.username = admin
    auth.user.1.password = 123456

    3.2、启用插件

    在控制台启用该插件即可。

    4、MQTTX 使用

    MQTT X 是一款优雅的跨平台 MQTT 5.0 开源桌面客户端工具,支持在 macOS, Linux 和 Windows 上运行。下载与使用可参考 MQTT X 官网

     

    更多详细的说明可参考官网文档:https://www.emqx.io/docs/zh/v4.4/
  • 相关阅读:
    Linux下Git远程仓库的使用详解
    Git单人本地仓库操作
    分布式版本控制系统之Git
    搭建Redis集群
    搭建 Redis 的主从
    Redis与Python进行交互
    Redis的数据类型以及各类型的操作
    Redis服务端和客户端的命令
    配置Redis
    Linux下Redis的安装
  • 原文地址:https://www.cnblogs.com/wuyongyin/p/16178893.html
Copyright © 2020-2023  润新知