系统使用Zookeeper,levelDB,ActiveMQ,使用Nginx作为反向代理和负载均衡,对外nginx配置提供统一的接口。
系统部署在3台服务器上,现在把关键配置参数配置记录下,仅供大家参考。
其中activemq.xml如下:
<persistenceAdapter>
<replicatedLevelDB directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="192.126.0.100:2181,192.126.0.101:2181,192.126.0.102:2181"
hostname="192.126.0.100"
sync="local_disk"
zkPath="/activemq/leveldb-stores"
/>
</persistenceAdapter>
其中hostname为主机名字,可以是ip地址,zkPath为Zookeeper中运行在2181端口的zk内的“寻址节点”。
Zookeeper配置如下:
dataDir=/data1/zookeeper-3.4.12/zkdata
dataLogDir=/data1/zookeeper-3.4.12/zklog
server.0=192.168.0.100:2888:3888
server.1=192.168.0.101:2888:3888
server.2=192.168.0.102:2888:3888
Nginx配置如下:nginx-1.15.5
stream{
upstream MQTT{
hash $remote_addr consistent;
server 192.168.0.100:1883 max_fails=3 fail_timeout=20s;
server 192.168.0.101:1883 max_fails=3 fail_timeout=20s;
server 192.168.0.102:1883 max_fails=3 fail_timeout=20s;
}
server{
listen 11883;
proxy_pass MQTT;
}
}
最后可以通过mqttbox发布、订阅消息,查看集群配置的有效性,关闭指定的ActiveMQ和Zookeeper进程,查看系统是否能够正常使用。