EMQ集群部署并使用Nginx实现负载均衡

一、准备工作

三台服务器或者虚拟机(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 '[email protected]' is started
emqx v3.1.0 is running

访问 http://xxx.xxx.xxx.xxx:18083,默认用户名: admin,密码:public,如图所示:
EMQ集群部署并使用Nginx实现负载均衡_第1张图片

三、EMQ集群搭建

首先我们先搞两台机器,然后我们在两台机器上启用以下端口

1883 MQTT 协议端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8080 HTTP API 端口
18083 Dashboard 管理控制台端口

接下来修改一下EMQX的配置文件

vim ./etc/emqx.conf

修改以下内容,改成各自本机ip

node.name = [email protected]
node.name = [email protected]
node.name = [email protected]

另外统一配置文件中集群名称,这里集群名称必须一致,否则不能加入集群显示无响应

 cluster.name = emqx

修改完成之后,启动两台节点后,192.168.72.142和192.168.72.143上分别执行

./bin/emqx_ctl cluster join [email protected]
./bin/emqx_ctl cluster join [email protected]

任意节点上查询集群状态:

./bin/emqx_ctl cluster status

然后我们访问 http://192.168.72.141:18083,我们会发现三个节点已经成功运行了,如图所示:
EMQ集群部署并使用Nginx实现负载均衡_第2张图片

四、使用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

EMQ集群部署并使用Nginx实现负载均衡_第3张图片

六、系统调优与压力测试

参考官方文档:
1、EMQ系统调优
2、EMQ性能测试

你可能感兴趣的:(物联网,nginx,emqx)