赞
踩
docker用起来不是很熟悉,所以直接安装emqx吧。这里集群只用两个举例,因为懒。
下载:
wget https://www.emqx.com/zh/downloads/broker/5.6.1/emqx-5.6.1-el7-amd64.tar.gz
解压:
mkdir -p emqx && tar -zxvf emqx-5.6.1-el7-amd64.tar.gz -C emqx
然后复制一份到emqx2文件夹
创建虚拟网卡:
- ip addr add 192.168.1.11/24 dev eth0
- ip addr add 192.168.1.12/24 dev eth0
启动虚拟网卡(重启服务器后重新创建以及启动):
ip link set dev eth0 up
修改emqx/etc/emqx.conf 文件
- node {
- name = "emqx@192.168.1.11"
- cookie = "yffxcookie"
- data_dir = "data"
- process_limit = 2097152
- max_ports = 1048576
- }
在emqx的bin目录下
运行:
-
- ./emqx start
启动后,登录控制台:ip:18083,初始用户名密码:admin和public。
第一个emqx安装完毕。
开始安装第二个,因为是单机,所以需要解决端口冲突的问题。emqx5.0端口修改配置如下:
- listeners.tcp.default {
- bind = "0.0.0.0:3883"
- acceptors = 64
- max_connections = 1024000
- proxy_protocol = false
- }
-
- listeners.ssl.default {
- bind = "0.0.0.0:38883"
- enabled = true
- acceptors = 16
- enable_authn = true
- max_connections = infinity
- mountpoint = ""
- proxy_protocol = false
- proxy_protocol_timeout = 3s
- }
-
- listeners.ws.default {
- bind = "0.0.0.0:39083"
- enabled = true
- enable_authn = true
- max_connections = infinity
- proxy_protocol = false
- proxy_protocol_timeout = 3s
- mountpoint = ""
- }
-
- listeners.wss.default {
- bind = "0.0.0.0:38084"
- enabled = true
- enable_authn = true
- max_connections = infinity
- proxy_protocol = false
- proxy_protocol_timeout = 3s
- mountpoint = ""
- }
-
- dashboard {
- listeners.http {
- bind = 38083
- }
- }
节点名称修改如下:
- node {
- name = "emqx1@192.168.1.12"
- cookie = "yffxcookie"
- data_dir = "data"
- process_limit = 2097152
- max_ports = 1048576
- }
需要注意的是:
ip地址需要与emqx@ip对应,因为其他的emqx是需要ping通你的ip才能加入集群。
两个emqx的cookie必须一致
除了安装的第一个emqx,后面的emqx部署必须加上数字,如emqx1@ip,emqx2@ip。ip必须是可以ping通的,用于后期加入集群。
然后就可以启动第二个emqx,然后加入第一个emqx即可。
./emqx_ctl cluster join emqx@192.168.1.11
最后的分发机制,我用的nginx反向代理代理:
nginx配置:
- upstream mqtt_servers {
- server 自己的真实ip:1883 weight=1;
- server 自己的真实ip:3883 weight=1;
- }
-
- server {
- listen 2883 so_keepalive=on;
- #status_zone tcp_server;
- proxy_connect_timeout 70s;
- proxy_timeout 100s;
- proxy_pass mqtt_servers;
- tcp_nodelay on;
- proxy_protocol on;
- }
注意proxy_protocol on是用于tcp连接emqx的时候获取真实ip用的,如果nginx中开启了emqx的tcp就要同步开启,如下:
-
- listeners.tcp.default {
- bind = "0.0.0.0:3883"
- acceptors = 64
- max_connections = 1024000
- proxy_protocol = on
- }
-
-
-
如果你的nginx不支持proxy_protocol 说明nginx没有安装插件。在nginx的sbin目录下编译:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-stream_ssl_module
需要安装其他插件继续后加上--with插件名称即可。
以上就是不使用docker单机安装emqx集群的全部内容了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。