EMQ集群部署并使用Nginx实现负载均衡
一、准备工作三台服务器或者虚拟机(141、142、143)。二、单机部署三台虚拟机分别进行单机部署:$ cd /usr/local$ unzip emqx-centos7-v3.1.0.zip启动EMQX$ cd /usr/local/emqx$ ./bin/emqx startemqx 3.1.0 is started successfully!$ ./bin/emqx_ctl statusNo
·
一、准备工作
三台服务器或者虚拟机(141、142、143)。
二、单机部署
三台虚拟机分别进行单机部署:
$ cd /usr/local
$ unzip emqx-centos7-v3.1.0.zip
启动EMQX
$ cd /usr/local/emqx
$ ./bin/emqx start
emqx 3.1.0 is started successfully!
$ ./bin/emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx v3.1.0 is running
访问 http://xxx.xxx.xxx.xxx:18083,默认用户名: admin,密码:public,如图所示:
三、EMQ集群搭建
首先我们先搞两台机器,然后我们在两台机器上启用以下端口
1883 MQTT 协议端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8080 HTTP API 端口
18083 Dashboard 管理控制台端口
接下来修改一下EMQX的配置文件
vim ./etc/emqx.conf
修改以下内容,改成各自本机ip
node.name = emqx@192.168.72.141
node.name = emqx@192.168.72.142
node.name = emqx@192.168.72.143
另外统一配置文件中集群名称,这里集群名称必须一致,否则不能加入集群显示无响应
cluster.name = emqx
修改完成之后,启动两台节点后,192.168.72.142和192.168.72.143上分别执行
./bin/emqx_ctl cluster join emqx@192.168.72.141
./bin/emqx_ctl cluster join emqx@192.168.72.141
任意节点上查询集群状态:
./bin/emqx_ctl cluster status
然后我们访问 http://192.168.72.141:18083,我们会发现三个节点已经成功运行了,如图所示:
四、使用nginx配置负载均衡
1)、安装nginx的依赖包
# 解决依赖包openssl安装
sudo apt-get install openssl libssl-dev
# 解决依赖包pcre安装
sudo apt-get install libpcre3 libpcre3-dev
# 解决依赖包zlib安装
sudo apt-get install zlib1g-de
2)、下载nginx
# 下载nginx(到官网查看对应版本)
wget http://nginx.org/download/nginx-1.13.1.tar.gz
# 解压文件到/opt目录下
tar -xzvf nginx-1.13.1.tar.gz -C /opt
3)、安装nginx
# 到安装目录下,编译过程中开启 --with-stream,tcp转发必须模块,因为emqx转发的是tcp连接
./configure --with-http_stub_status_module --with-http_ssl_module --with-stream --prefix=/opt/nginx
make && make install
4)、编辑nginx配置文件,用nginx 8000端口代理emq1883端口
#user nobody;
worker_processes 1;
#worker_rlimit_nofile 90000;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
stream{
upstream emqx_cluster {
#轮询
server 192.168.72.141:1883;
server 192.168.72.142:1883;
server 192.168.72.143:1883;
}
server{
listen 8883 ssl;
proxy_connect_timeout 10s;
proxy_timeout 20s;
proxy_pass emqx_cluster;
# ssl_handshake_timeout 15s;
#ssl_certificate /export/softwares/emqx/etc/certs/cert.pem;
#ssl_certificate_key /export/softwares/emqx/etc/certs/key.pem;
}
}
5)、启动nginx
./nginx
五、负载均衡测试
./emqtt_bench sub -h 192.168.72.141 -p 8000 -c 300 -i 1 -t bench /%i -q 1
六、系统调优与压力测试
更多推荐
已为社区贡献10条内容
所有评论(0)