1.虚拟机
准备两台虚拟机,网上都有安装教程,我的是virtual box +centos7,附加一个centos7的中科大镜像地址:
http://mirrors.ustc.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso
IP地址分别为:
192.168.1.111 192.168.1.112
2.下载emqx(两台一起)
1. 下载 emqx-centos7-v4.1.5.x86_64.rpm
wget https://www.emqx.com/zh/downloads/broker/4.1.5/emqx-centos7-v4.1.5.zip
2.安装
unzip emqx-centos7-v4.1.5.zip
3.运行
./emqx/bin/emqx start
4.相关命令
查看状态: ./emqx/bin/emqx_ctl status
停止服务 ./emqx/bin/emqx stop
5.打开可视化dashboard
地址为: http://ip地址:18083/ (默认账号: admin 密码: public)
能打开说明安装成功
3.修改配置
找到emqx.conf 打开
修改node.name 为各自的ip(112的机器就改为emqx@192.168.1.112)
可以在登录dashboard看看,节点从127.0.0.1变成修改的 就说明成功
4.集群
将111集群到112机器上,就在111机器上输入命令:
./emqx/bin/emqx_ctl cluster join eqmx@192.168.1.112
查看集群状态:
./emqx/bin/emqx_ctl cluster status
如果是这样,说明集群成功:
打开可视化dashboard
5.nginx负载均衡
1.nginx下载:(我是在112机器上安装了nginx,没必要在整个机器了)
1 yum install openssl
yum install zlib
yum install pcre
2 rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx
service nginx start
3 直接浏览器访问localhost就会出现Nginx的欢迎界面表示你安装成功了,否则就是安装失败了
2.文件配置
成功后,修改nginx.conf(在etc/nginx下)
stream {
# 轮询负载均衡配置
upstream emqx_cluster {
server 192.168.1.112:1883 weight=1;
server 192.168.1.111:1883 weight=1;
}
server {
# 监听 8884 端口
listen 8884;
# 反向代理到 emqx_cluster
proxy_pass emqx_cluster;
proxy_buffer_size 4k;
}
}
3.执行命令
修改完成配置后,执行命令:
nginx -t :自我检查conf文件
nginx -s reload :重新加载
4.模拟负载均衡
用mqttx模拟客户端连接,端口别1883了,要用884
模拟了四个客户端连向112节点
然后去控制台看看有没有客户端分配到111节点上
6.可能遇到问题总结:
1.端口问题:1883,18083,直接把虚拟机防火墙关了,不用费事在开放端口了
2.没有负载均衡成功,因为开放的8884端口被限制了。执行命令:
getenforce
setenforce 0
3.报错:
RPC to emqx@192.168.17.129 failed: {‘EXIT’, {badarg, [{ets,match, [emqx_command,{{‘_’,status},‘$1’,‘_’}], []}, {emqx_ctl,lookup_command,1, [{file,“emqx_ctl.erl”},{line,118}]}, {emqx_ctl,run_command,2, [{file,“emqx_ctl.erl”},{line,103}]}, {rpc,‘-handle_call_call/6-fun-0-’,5, [{file,“rpc.erl”},{line,197}]}]}}
解决:找到emqx下的data下的mnesia目录 删掉他
4.报错:Node ‘emqx@192.168.1.111’ not responding to pings.
解决:ps -ef看看emqx服务,然后kill -9 xxx ,之后在重新开启emqx服务