#EMQ X集群安装

EMQ X集群安装


EMQ X R3.0 消息服务器简介

```
EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。
Erlang/OTP 是出色的软实时(Soft-Realtime)、低延时(Low-Latency)、分布式(Distributed) 的语言平台。
MQTT 是轻量的(Lightweight)、发布订阅模式(PubSub) 的物联网消息协议。
EMQ X 项目设计目标是承载移动终端或物联网终端海量 MQTT 连接,并实现在海量物联网设备间快速低延时消息路由:

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

环境准备

centos 7.2 3台

软件版本:emqx-centos7-v3.0-rc.5.x86_64.rpm 下载地址

安装步骤

```
  1. rpm -ivh  emqx-centos7-v3.0-rc.5.x86_64.rpm ## 使用rpm包格式安装
  2. emqx的相关目录路径
     /etc/emqx              #存放配置文件插件等等
     /var/lib/emqx          #数据路径,建议用软连接链接到数据盘
     /var/log/emqx          #日志路径,建议用软连接链接到数据盘
     ```
      cd /var/lib/ 
      mv emqx/ /data/soft/emqx/
      ln -s /data/soft/emqx/ emqx/
      cd /var/log
      mv emqx/ /data/soft/emqx/logs/
      ln -s /data/soft/emqx/logs emqx/
      ```
  3.配置文件  cat /etc/emqx/emqx.conf ,修改以下参数
      ```
      node.name = [email protected]  //名字将作为加入集群的身份标识,使用当前节点主机IP地址。
      zone.external.max_mqueue_len = 0 //emqx server 消费队列长度,如果队列满了, 消息会被丢弃. 0是无上限
      zone.external.session_expiry_interval = 12h //session持久化时间,增大至12小时
      zone.external.max_inflight = 128  //增加飞行窗口大小,主要作用于Qos 1,2 的消息,存储发送但还没有给回执的消息的队列大小
      zone.external.await_rel_timeout = 600s  //客户端等待服务端对于Qos2消息发送消息释放的等待时间,超过时间消息会被drop掉。
        //这些都是开发爸爸要求改的,我完全不懂是什么意思!
      ```
  4. 启动服务 systemctl start emqx.service
  5. 集群操作:
     加入集群emqx_ctl cluster join [email protected] //在实际操作时大概需要A Join B, B Join C。
     查看集群运行状态:emqx_ctl cluster status,得到如下返回
     Cluster status: [{running_nodes,['[email protected]','[email protected]',
                             '[email protected]']}]
                             
                             
  6. 服务开启密码验证:
         vi /etc/emqx/plugins/emqx_auth_username.conf  
            ```
            ##--------------------------------------------------------------------
            ## Username Authentication Plugin
            ##--------------------------------------------------------------------

            ## Examples:
            auth.user.1.username = xxxx
            auth.user.1.password = xxxxxxxxx
            
            ```
     
```

遇到的问题

    1.  tcp/1883端口无法启动
        解决办法,进入 /var/lib/emqx/mnesia目录,删除该目录下所有内容。并重新启动服务。
    2.  加入集群报错。
        解决办法: 同上,并且在不同节点上互相join

你可能感兴趣的:(#EMQ X集群安装)