使用activeMQ配置MQTT broker叢集
主要是利用HAProxy作為負載均衡器,利用activeMQ作為broker的叢集。
1,準備4臺伺服器,預設作業系統為Ubuntu14.04,三臺伺服器安裝activeMQ, 另外一臺伺服器安裝HAProxy作為負載均衡。
2,安裝和配置activeMQ
安裝jre
sudo apt-get install default-jre
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre
安裝activeMQ
wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz tar zxvf apache-activemq-5.12.0-bin.tar.gz
啟動activeMQ
cd [activemq_install_dir]/bin
./activemq console
配置activeMQ叢集
假設三臺broker伺服器的地址分別是10.80.1.1, 10.80.1.2, 10.80.1.3,在三臺伺服器上分別配置如下
在伺服器10.80.1.1上新增如下networkConnectors配置
<networkConnectors>
<networkConnector uri="static:(tcp://10.80.1.2:61616,tcp://10.80.1.3:61616)"/>
</networkConnectors>
在伺服器10.80.1.2上新增如下networkConnectors配置
<networkConnectors>
<networkConnector uri="static:(tcp://10.80.1.1:61616,tcp://10.80.1.3:61616)"/>
</networkConnectors>
在伺服器10.80.1.3上新增如下networkConnectors配置
<networkConnectors>
<networkConnector uri="static:(tcp://10.80.1.1:61616,tcp://10.80.1.2:61616)"/>
</networkConnectors>
4, 可通過如下web console新增topic
http://10.80.1.1:8161/admin/
http://10.80.1.2:8161/admin/
http://10.80.1.3:8161/admin/
預設使用者名稱和密碼是admin和admin
分別新增一個topic,比如presence
5,安裝並配置HAProxy,假設伺服器地址為10.80.1.4
安裝HAProxy請參考如下的文件
https://www.vultr.com/docs/installing-and-configuring-haproxy-on-ubuntu-14-04
在HAProxy配置檔案裡面新增如下配置並重啟
frontend mqtt_proxy bind *:1883 mode tcp default_backend mqtt_agent backend mqtt_agent mode tcp option tcplog balance roundrobin server mqtt_01 10.80.1.1:1883 check server mqtt_02 10.80.1.2:1883 check server mqtt_03 10.80.1.3:1883 check
重啟HAProxy
6,通過mqtt.js的MQTT的客戶端來測試cluster server
var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://10.80.1.4');
client.on('connect', function () {
client.subscribe('presence');
client.publish('presence', 'Hello this is from client and server: '+new Date());
});
client.on('message', function (topic, message) {
// message is Buffer
console.log(message.toString());
client.end();
});
7, 也可以通過如下文章來使用android客戶端測試android通知訊息
http://dalelane.co.uk/blog/?p=1599
歡迎大家討論 :)