主要是利用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
假设三台broker服务器的地址分别是10.80.1.1, 10.80.1.2, 10.80.1.3,在三台服务器上分别配置如下
在服务器10.80.1.1上添加如下networkConnectors配置
在服务器10.80.1.2上添加如下networkConnectors配置
在服务器10.80.1.3上添加如下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
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();
});
http://dalelane.co.uk/blog/?p=1599
欢迎大家讨论 :)