工作中用到emqttd 的集群及nginx负载,
这两天负责配置测试了下整个集群相关的功能,
全部流程都整明白了,写了个文档记录一下,仅供参考.本文使用的版本为2.3.9,此集群配置需要2.3以上的版本
一. EMQ集群
参考文档 emq文档 http://www.emqtt.com/docs/v2/config.html
1.1 EMQ集群部署目的
对于相同的主题,
从集群任意一个节点发送消息。
在集群中其他任意节点都能都到消息.
1.2 安装环境
机器3台:
名称 |
IP |
系统 |
nodename |
A1 |
192.168.100.204 |
Ubuntu16.04 |
node_a@192.168.100.204 |
A2 |
192.168.100.239 |
Centos6.8 |
node_b@192.168.100.239 |
A3 |
192.168.100.42 |
Centos7 |
node_c@192.168.100.42 |
Node.Cookie=dist_cookie
集群配置采用基于 static 节点列表自动集群
端口均为默认的1883端口
1.3 EMQ下载安装
A1:
Wget http://emqtt.com/downloads/latest/ubuntu16_04-deb -O ubuntu16_04-deb.deb
sudo dpkg -i ubuntu16_04-deb.deb
vim /etc/emqttd/emq.conf
A2:
wget http://emqtt.com/downloads/latest/centos6-rpm -O emqt.rpm
rpm -ivh emqt.rpm
vim /etc/emqttd/emq.conf
A3:
wget http://emqtt.com/downloads/latest/centos7-rpm -O emqt.rpm
rpm -ivh emqt.rpm
vim /etc/emqttd/emq.conf
1.4 集群配置
修改 3个机器中的emq.cof中的node.name 为1.0安装环境中的nodename, node.cookie为相同的cookie
A1
A2
A3
修改集群方式为基于 static 节点列表自动集群
分别在a1,a2,a3 机器启动 emq
emqttd start
二. 集群测试
使用命令检查集群状态:
启 动2台节点
启动3台节点
使用java代码MQTT客户端测试,或者下载
Mosquitto使用命令测试 http://mosquitto.org/download/
订阅a2机器上的主题为x的消 息
mosquitto_sub -t x -q 1 -h 192.168.100.239 -p 1883
向a1或者a3节点推送x主题的消息
mosquitto_sub -t x -q 1 -h 192.168.100.42 -p 1883
在a2机器都能收到消息
三. Nginx反向代理
3.1 Nginx反向代理目的
让所有EMQ节点共用一个IP端口,统一入口.
即使EMQ有节点无法工作,nginx反向代理的地址依然能正常工作.
3.2 Nginx安装
以centos6.8为例,安装目录/usr/local
ubuntu16.04安装,及目录目录端口映射参考另外一篇ubuntu16.04 安装mysql,zookeeper,nginx等这里
准备依赖包:
cd /usr/local/
yum -y install gcc pcre-devel zlib-devel openssl-devel openssl
#ubuntu安装
#apt-get install build-essential libtool libpcre3 libpcre3-dev zlib1g-dev openssl
wget http://nginx.org/download/nginx-1.11.5.tar.gz
安装NginX,编译过程中开启 --with-stream,tcp转 发必须模块
tar -zxvf nginx-1.11.5.tar.gz
cd nginx-1.11.5
./configure --with-http_stub_status_module --with-http_ssl_module --with-stream --prefix=/usr/local/nginx
make && make install
3.3 Nginx反向tcp代理
配置nginx 用18084端口代理 emq集群的1883端口
vim /usr/local/conf/nginx.conf
在文件最后添加
include my.conf;
新的配置在my.conf文件单独配置,
vim /usr/local/conf/my.conf
Stream
{
upstream emqt_cluster {
server 192.168.100.239:1883;
server 192.168.100.204:1883;
}
server
{
listen 18084;
proxy_connect_timeout 1s;
proxy_pass emqt_cluster;
}
}
/usr/local/nginx/sbin/nginx -s reload;
本文基于CC BY-NC-ND 4.0 许可协议发布,作者:野生的喵喵。 固定链接: 【EMQ NGINX 集群配置】 转载请注明
相关文章: