MQTT 是轻量的,发布订阅模式的物联网消息协议,物联网平台也基本上是离不开MQTT,
公司做的是物联网资产管理相关的平台,做了一些选择后最终选择了MQTT搭建集群。
一、软件准备
nginx:nginx-1.11.0.tar.gz
emq:emqttd-centos7-v2.1.2-1.el7.centos.x86_64.rpm
二、服务器环境准备
192.168.12.1:nginx负载均衡
192.168.12.2:emq服务器1
192.168.12.3:emq服务器2
三、emq安装部署
(1) 安装emq:
在192.168.12.2和192.168.12.3两台服务器上分别安装EMQ:
rpm -ivh emqttd-centos7-v2.1.2-1.el7.centos.x86_64.rpm
并安装Erlang/OTP R19 依赖 lksctp-tools 库
yum install lksctp-tools
配置文件目录如下:
emq配置文件: /etc/emqx/emqx.conf
插件配置文件: /etc/emqx/plugins/*.conf
日志文件目录: /var/log/emqx
数据文件目录:/var/lib/emqx
(2) EMQ集群配置
分别修改192.168.12.2和192.168.12.3两台服务器上的emqx.conf配置文件,有四个地方需要修改如下:
1、节点名称
## Default: emqx@127.0.0.1
node.name = emqx1@192.168.12.2
2、集群方式采用基于 static 节点列表自动集群
## Default: manual
cluster.discovery = static
3、集群节点配置
## Value: String
cluster.static.seeds = emqx1@192.168.12.2,emqx2@192.168.12.3
注意:这个地方在哪台服务器配置需要把节点写前面,如在192.168.12.3上配置,cluster.static.seeds = emqx2@192.168.12.3,emqx1@192.168.12.2
4、用户名密码认证,EMQ配置默认是匿名认证,EMQ的提供MySQL,PostgreSQL,Redis,MongoDB,HTTP,LDAP多种认证插件,这里我们用最简单的账号密码认证方式。
## Value: true | false
allow_anonymous = false
然后再修改/etc/emqx/plugins/emqx_auth_username.conf
auth.user.1.username = admin
auth.user.1.password = admin123
分别在192.168.12.2和192.168.12.3启动emq
service emqx start