EMQ 介绍
EMQ 2.0 完整支持 MQTT V3.1/V3.1.1 版本协议规范,并扩展支持 WebSocket、Stomp、CoAP、MQTT-SN 或私有 TCP 协议。EMQ 2.0 消息服务器支持单节点100万连接与多节点分布式集群。
EMQ 2.0 为大规模客户端连接 (C1000K+) 的移动推送、移动消息、物联网、车联网、智能硬件等应用,提供一个完全开放源码、安装部署简便、企业级稳定可靠、可弹性扩展、易于定制开发的 MQTT 消息服务器。
环境准备
CentOS 7
JDK 1.8
Kafka
安装Erlang
二、 安装Erlang
1、下载erlang
yum install wget #安装wget插件,若已安装可以忽略
wget
http://erlang.org/download/otp_src_19.3.tar.gz
2、使用yum安装下必须的配件
yum install gcc* glibc-devel make ncurses-devel openssl-devel autoconf -y
yum install unixODBC unixODBC-devel -y
3、开始安装
tar -zxvf otp_src_19.3.tar.gz
cd otp_src_19.3
./configure –prefix=/usr/local/erlang #这步可能会出现提示提示缺少的组件,详情见常见问题
make && make install #超慢
ln -s /usr/local/erlang/bin/erl /usr/local/bin/
ln -s /usr/local/erlang/bin/erlc /usr/local/bin/
ln -s /usr/local/erlang/bin/escript /usr/local/bin/
4、测试安装
输入命令:
erl
若出现下面的提示则证明安装成功。
按Ctrl+C后输入a退出命令。
5、常见问题
********************** APPLICATIONS DISABLED **********************
jinterface : Java compiler disabled by user
********************** APPLICATIONS INFORMATION *******************
wx : wxWidgets not found, wx will NOT be usable
********************** DOCUMENTATION INFORMATION ******************
documentation :
fop is missing.
Using fakefop to generate placeholder PDF files.
其中APPLICATIONS DISABLED 标示是必须要安装的,另外两个项目可以忽略
jinterface : Java compiler disabled by user
如果不用java编译可以忽略 在编译的时候 加入–without-javac
安装Rebar
1、下载Rebar
cd /usr/local
yum install git -y #安装git插件,若已安装可以忽略
git clone git://github.com/rebar/rebar.git
2、开始安装
yum -y install gcc* gcc-c++ make*
cd rebar
./bootstrap
3、配置环境变量
配置环境变量
vi /etc/profile
export PATH=/usr/local/rebar:$PATH
执行文件:
source /etc/profile
4、测试安装
输入命令:
rebar -V
若出现如下提示,则证明安装成功
使用源码安装EMQ
1、下载EMQ
cd /usr/local
wget
https://codeload.github.com/emqx/emqx-rel/tar.gz/v2.3.11
2、编译安装
tar -zxvf emqx-rel-2.3.11.tar.gz
cd emqx-rel-2.3.11
make #编译(超慢)
若make中出现问题,一般是没有安装相应的插件,使用yum安装即可。见常见问题。
3、性能调优
优化设置 Erlang 虚拟机启动参数
vi /usr/local/emqx-rel-2.3.11/_rel/emqttd/etc/emq.conf
#关闭匿名认证
mqtt.allow_anonymous = false
Erlang Process Limit
node.process_limit = 2097152
#Sets the maximum number of simultaneously existing ports for this system
node.max_ports = 1048576
EMQ 消息服务器参数
设置 TCP 监听器的 Acceptor 池大小,最大允许连接数:
#SSL Listener
listener.ssl.external = 0.0.0.0:8883
listener.ssl.external.acceptors = 64
listener.ssl.external.max_clients = 1000000
4、常见问题
若编译过程中遇到如下错误,Ctrl+C取消编译,重新输入make编译。
安装EMQ-Kafka插件
1、参数配置
(1)vi /usr/local/emqx-rel-2.3.11/Makefile
添加:
DEPS += emqttd_kafka_bridge
dep_emqttd_kafka_bridge = git
https://github.com/shsjdcbg/emq-kafka.git
(2)vi /usr/local/emqx-rel-2.3.11/relx.config
在中 release 段落添加:
{emqttd_kafka_bridge, load}
2、编译
cd /usr/local/emqx-rel-2.3.11
make
3、配置Kafka插件
vi /usr/local/emqx-rel-2.3.11/_rel/emqttd/etc/plugins/emqttd_kafka_bridge.config
修改bootstrap_broker参数为Kafka为IP和端口
kafka_producer_topic为Kafka主题,需要提前在Kafka中创建主题,创建主题命令见六。
4、启动EMQ
cd /usr/local/emqx-rel-2.3.11/_rel/emqttd/bin
./emqttd start
查看日志(/usr/local/emqx-rel-2.3.11/_rel/emqttd/log)无报错则安装成功。
访问ip:18083地址可以查看EMQ 控制台。
存入Kafka消息格式{“topic”:””, “message”:[{}]}