Emqtt集羣搭建

1 Emqtt簡單搭建

1.1  介紹:EMQ:EMQ 2.0,號稱百萬級開源MQTT消息服務器,基於Erlang/OTP語言平臺開發,支持大規模鏈接和分佈式集羣,發佈訂閱模式的開源MQTT消息服務器。

EMQ 默認開啓的 MQTT 服務 TCP 端口:html

1883 MQTT 協議端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8084 MQTT/WebSocket/SSL 端口

防火牆根據使用的 MQTT 接入方式,開啓上述端口的訪問權限。node

EMQ 節點集羣使用的 TCP 端口:python

4369 集羣節點發現端口
6369 集羣節點控制通道

集羣節點間若有防禦牆,需開啓上述 TCP 端口互訪權限nginx

1.2   集羣建立方式

NGINX Plus -> EMQ 集羣

NGINX Plus 產品做爲 EMQ 集羣 LB,並終結 SSL 鏈接:centos

  1. 註冊 NGINX Plus 試用版,Ubuntu 下安裝: https://cs.nginx.com/repo_setup
  2. 建立 EMQ 節點集羣,例如:
節點 IP 地址
emq1 192.168.0.2
emq2 192.168.0.3
  1. 配置 /etc/nginx/nginx.conf,示例:服務器

    stream {
        # Example configuration for TCP load balancing
    
        upstream stream_backend {
            zone tcp_servers 64k;
            hash $remote_addr;
            server 192.168.0.2:1883 max_fails=2 fail_timeout=30s;
            server 192.168.0.3:1883 max_fails=2 fail_timeout=30s;
        }
    
        server {
            listen 8883 ssl;
            status_zone tcp_server;
            proxy_pass stream_backend;
            proxy_buffer_size 4k;
            ssl_handshake_timeout 15s;
            ssl_certificate     /etc/emqttd/certs/cert.pem;
            ssl_certificate_key /etc/emqttd/certs/key.pem;
        }
    }

1.3  搭建EMQTT單機版

通用包下載地址:curl

CentOS7 http://emqtt.com/downloads/latest/centos7
[root@emq-node1 opt]# ll
total 20020
-rw-r--r-- 1 root root 20497451 Aug 23  2018 emqttd-centos7-v2.3.11.zip
[root@emq-node1 opt]# unzip emqttd-centos7-v2.3.11.zip  &>/dev/null
[root@emq-node1 opt]# cd emqttd/
#啓動EMQTT
[root@emq-node1 emqttd]# ./bin/emqttd start
emqttd 2.3.11 is started successfully!
#查看EMQTT集羣狀態
[root@emq-node1 emqttd]# ./bin/emqttd_ctl status
Node 'emq@127.0.0.1' is started
emqttd 2.3.11 is running
#WEB的URL狀態監控
[root@emq-node1 emqttd]# curl http://localhost:8080/status
Node emq@127.0.0.1 is started
emqttd is running

1.4 單機變器羣  

#emqttd-node1先關閉服務
[root@emq-node1 emqttd]# ./bin/emqttd stop
#原配置文件
[root@emq-node1 emqttd]# egrep '127.0.0.1' etc/emq.conf|egrep -v '#'
node.name = emq@127.0.0.1
listener.tcp.internal = 127.0.0.1:11883
#更改配置文件
[root@emq-node2 emqttd]# hostname -I
10.0.0.101 
[root@emq-node1 emqttd]# sed -i 's#127.0.0.1#10.0.0.101#g' etc/emq.conf 
[root@emq-node1 emqttd]# egrep '10.0.0.101' etc/emq.conf|egrep -v '#'
node.name = emq@10.0.0.101
listener.tcp.internal = 10.0.0.101:11883
#在啓動服務
[root@emq-node1 emqttd]# ./bin/emqttd start
emqttd 2.3.11 is started successfully!
#emqttd-nod2重複操做
[root@emq-node2 emqttd]# ./bin/emqttd stop
ok
[root@emq-node2 emqttd]# hostname -I
10.0.0.102 
[root@emq-node2 emqttd]# sed -i 's#127.0.0.1#10.0.0.102#g' etc/emq.conf 
[root@emq-node2 emqttd]# ./bin/emqttd start
emqttd 2.3.11 is started successfully!
#手動加入集羣
[root@emq-node2 emqttd]# ./bin/emqttd_ctl cluster join emq@10.0.0.101
Join the cluster successfully.
Cluster status: [{running_nodes,['emq@10.0.0.101','emq@10.0.0.102']}]
[root@emq-node2 emqttd]# ./bin/emqttd_ctl cluster status
Cluster status: [{running_nodes,['emq@10.0.0.101','emq@10.0.0.102']}]
#重節點中刪除
[root@emq-node2 emqttd]# ./bin/emqttd_ctl cluster leave
Leave the cluster successfully.
Cluster status: [{running_nodes,['emq@10.0.0.102']}]
#配置文件中指定集羣節點,兩臺機器操做一致先關閉EMQTT
[root@emq-node1 emqttd]# egrep -n "cluster.static.seeds|cluster.discovery" etc/emq.conf 
23: cluster.discovery = static   #默認是manual手動建立集羣,集羣節點
49:cluster.static.seeds = emq@10.0.0.101,emq@10.0.0.102

1.5 Web管理界面  

#默認帳號密碼admin publictcp

擴展插件以及優化詳見官方文檔:http://emqtt.com/docs/v2/index.html分佈式

相關文章
相關標籤/搜索