erlang官方文档,http://erlang.org/doc/man/
https://github.com/emqx
https://github.com/emqtt
https://github.com/emqtt/emq-relx
https://github.com/emqtt/emqttd
https://github.com/emqtt/esockd
https://github.com/emqtt/esockd/tree/v4.2
https://github.com/emqtt/gen_logger
https://github.com/emqtt/emqtt_benchmark
https://github.com/mochi/mochiweb
https://github.com/uwiger/gproc
https://github.com/basho/lager
https://github.com/devinus/poolboy
https://github.com/ferd/recon
我写的两篇重要的文章推荐,请先看:
erlang无图形界面的linux下如何使用observer:start().
+++++++++++++++v1.1.3++++++++++++++++++++++
https://github.com/emqtt/emqttd
cd emqttd make && make dist
编译成功后,可执行程序包在目录: rel/emqttd
控制台启动编译的emqttd程序包:
cd rel/emqttd && ./bin/emqttd console
./emqttd start
./emqttd stop
./emqttd_ctl cluster join emqttd@172.16.6.161
./emqttd_ctl cluster status
./emqttd_ctl cluster leave
./emqttd_ctl cluster remove emqttd_copy@172.16.6.161
图形化监控
在Windows安装erlang OTP,然后在cmd命令提示符输入:
werl -name firecat@172.16.6.??? -setcookie emqttdsecretcookie
或者werl -name firecat@127.0.0.1 -setcookie emqttdsecretcookie
observer:start().
然后shell输入终端命令observer:start().弹出对话框,点击菜单Nodes->Connect Node,输入Linux的节点名称
emqttd@172.16.6.161
emqttd_copy@172.16.6.161
emq1.0和2.0架构变化很大,编译和下载的方式不同了。2.0要求OTP版本在19.1以上,本人使用19.3。
++++++++++++++++++++++v2.3.7++++++++++++++++++++
https://github.com/emqtt/emq-relx,要求erlang OTP 19.3+版本
下载解压完成,编译,编译过程会自动去github下载相关的依赖库源码,完整的命令如下:
如果提示/bin/sh: git: command not found,需要安装git
yum install -y git
chmod -R 777 emq-relx-2.3.7 #获得整个文件夹所有文件的权限
cd emq-relx-2.3.7 && make
cd _rel/emqttd && ./bin/emqttd console
或者 ./_rel/emqttd/bin/emqttd console
或者 ./_rel/emqttd/bin/emqttd start
./_rel/emqttd/bin/emqttd stop
编译发布插件:
Makefile 增加
DEPS: DEPS += plugin_name
dep_plugin_name = git url_of_plugin
relx.config 中 release 段落添加:
{plugin_name, load},
编译完成之后,/home/firecat/Prj/emq2.0/emq-relx-2.3.7/data/loaded_plugins设置自启动插件
原始的配置文件的路径是,编译完成每次都会从这里copy一份到_rel
/home/firecat/Prj/emq2.0/emq-relx-2.3.7/deps/emqttd/etc/emq.conf
/home/firecat/Prj/emq2.0/emq-relx-2.3.7/data/loaded_plugins
注意:使用XftpPortable软件时,不要用Windows的写字板来编辑emq.conf和loaded_plugins等文件,否则编码不同,会导致emqttd的进程起不来。
在Windows操作系统使用图形化监控
在Windows安装erlang OTP,然后在cmd命令提示符输入:
werl -name firecat@172.16.6.??? -setcookie emqsecretcookie
或者werl -name firecat@127.0.0.1 -setcookie emqsecretcookie
observer:start().
然后shell输入终端命令observer:start().弹出对话框,点击菜单Nodes->Connect Node,输入Linux的节点名称
emq@172.16.6.161
如果是Linux虚拟机建议使用NAT网络模式,因为Ip地址比较固定,
在物理机Windows终端命令行输入:
werl -name firecat@127.0.0.1 -setcookie emqsecretcookie
werl -name firecat@192.168.83.1 -setcookie emqsecretcookie
observer:start().
emq@192.168.83.128
然后shell输入终端命令observer:start().弹出对话框,点击菜单Nodes->Connect Node,输入Linux的节点名称emq@192.168.83.128
emq运行之后,在linux后台的进程名称是:beam.smp
[root@localhost emq-relx-2.3.7]# netstat -tunlp|egrep "beam.smp"
tcp 0 0 127.0.0.1:11883 0.0.0.0:* LISTEN 31483/beam.smp
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 31483/beam.smp
tcp 0 0 0.0.0.0:8883 0.0.0.0:* LISTEN 31483/beam.smp
tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN 31483/beam.smp
tcp 0 0 0.0.0.0:8084 0.0.0.0:* LISTEN 31483/beam.smp
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN 31483/beam.smp
tcp 4 0 0.0.0.0:6369 0.0.0.0:* LISTEN 31483/beam.smp
tcp 0 0 0.0.0.0:18083 0.0.0.0:* LISTEN 31483/beam.smp
tcp 0 0 0.0.0.0:18084 0.0.0.0:* LISTEN 31483/beam.smp
[root@localhost emq-relx-2.3.7]# kill -9 31483
常见问题解答:
1、EMQ有kafka插件吗?
答:没,要自己写个,用erlang brod库。https://github.com/klarna/brod
或者erlang ekaf库。https://github.com/helpshift/ekaf
这里有个我自己写的完整kafka项目:
https://blog.csdn.net/libaineu2004/article/details/79542220
参考博客:
(1)https://github.com/msdevanms/emqttd_plugin_kafka_bridge
(2)http://www.cnblogs.com/wunaozai/p/8249657.html
2、EMQ是ejabberd+activemq+rabbitmq的综合体
3、EMQ的hook和session是参考了ejabberd的。
4、CentOS7默认的防火墙是firewall,关掉它
关闭firewall防火墙:sudo systemctl stop firewalld.service
关闭firewall开机启动:sudo systemctl disable firewalld.service
firewall-cmd --state #查看状态
5、如果出现域名解析出错
curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
则修改/etc/resolv.conf,添加
nameserver 8.8.8.8
nameserver 202.106.0.20
6、压缩命令
tar -zcvf emq-relx-2.3.7.tar.gz emq-relx-2.3.7
解压命令
tar -xvf emq-relx-2.3.7.tar.gz
7、erlang打印输出
io:format("Value is ~p~n", [Val]).%原生打印
io:format("Value is ~w~n", [Val]).%二进制打印
8、emq常用终端命令
./_rel/emqttd/bin/emqttd console
./_rel/emqttd/bin/emqttd start
./_rel/emqttd/bin/emqttd_ctl status
./_rel/emqttd/bin/emqttd stop
./_rel/emqttd/bin/emqttd_ctl cluster join emq@192.168.0.116
./_rel/emqttd/bin/emqttd_ctl cluster status
./_rel/emqttd/bin/emqttd_ctl cluster leave
9、netstat -nalp|grep 1883#查看1883端口的连接情况,观察TCP状态图
netstat -nalp|grep 1883|wc -l #查看1883端口的客户端连接数
ulimit -n 102400 #修改当前进程的最大文件数