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 '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,我们会发现三个节点已经成功运行了,如图所示:
v

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

在这里插入图片描述

六、系统调优与压力测试

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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Docker 中部署 EMQ X 集群,可以使用 `docker run` 命令和 `emqx` 镜像。以下是一个简单的示例,演示如何使用 `docker run` 命令在单个节点上运行 EMQ X: ``` docker run -d --name emqx \ -p 1883:1883 -p 8083:8083 -p 8883:8883 \ -e EMQX_LISTENER__TCP__EXTERNAL=0.0.0.0:1883 \ -e EMQX_LOADED_PLUGINS="emqx_recon,emqx_retainer,emqx_management" \ emqx/emqx:latest ``` 上面的命令会在后台运行一个名为 `emqx` 的容器,并将 EMQ X 的 MQTT、WebSocket 和 MQTT over TLS 端口映射到主机的对应端口。我们还使用 `-e` 参数来定义一些环境变量,例如监听地址、加载的插件等。 要在 Docker 中部署 EMQ X 集群,需要使用多个 `docker run` 命令,并在每个容器中配置不同的节点名称、集群名称和节点地址等。以下是一个简单的示例,演示如何使用 `docker run` 命令在两个节点上运行 EMQ X 集群: ``` # 启动第一个节点 docker run -d --name emqx1 \ -p 1883:1883 -p 8083:8083 -p 8883:8883 \ -e EMQX_LISTENER__TCP__EXTERNAL=0.0.0.0:1883 \ -e EMQX_LOADED_PLUGINS="emqx_recon,emqx_retainer,emqx_management" \ -e EMQX_CLUSTER__DISCOVERY="static" \ -e EMQX_CLUSTER__STATIC__SEEDS="emqx[email protected]" \ -e EMQX_NODE__NAME="emqx1" \ -e EMQX_NODE__MACHINE="emqx1" \ emqx/emqx:latest # 启动第二个节点 docker run -d --name emqx2 \ -p 1884:1883 -p 8084:8083 -p 8884:8883 \ -e EMQX_LISTENER__TCP__EXTERNAL=0.0.0.0:1883 \ -e EMQX_LOADED_PLUGINS="emqx_recon,emqx_retainer,emqx_management" \ -e EMQX_CLUSTER__DISCOVERY="static" \ -e EMQX_CLUSTER__STATIC__SEEDS="emqx[email protected]" \ -e EMQX_NODE__NAME="emqx2" \ -e EMQX_NODE__MACHINE="emqx2" \ emqx/emqx:latest ``` 上面的命令会在两个容器中分别启动 EMQ X 节点,并将两个节点加入到同一个集群中。我们在每个容器中使用不同的节点名称、集群名称和节点地址等参数,以确保 EMQ X 能够正确地运行和通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值