一 、ActiveMQ主要的几类部署方式比较
1.1、默认的单机部署(kahadb)
ActiveMQ的默认存储的单机方式,以本地kahadb文件的方式存储,所以性能指标完全依赖本地磁盘IO,不能提供高可用。
1.2、基于ZooKeeper的主从(levelDB Master/Slave)
从 apache-activemq-5.9.0
开始, 新推出的主从实现,基于zookeeper来选举出一个master,其他节点自动作为slave实时同步消息。
因为有实时同步数据的slave的存在,master不用担心数据丢失,所以leveldb会优先采用内存存储消息,异步同步到磁盘。所以该方式的ActiveMQ读写性能都最好,特别是写性能能够媲美非持久化消息。
优点:
- 实现高可用和数据安全
- 性能较好
缺点:
- 因为选举机制要超过半数,所以最少需要3台节点,才能实现高可用。
1.3、基于共享数据库的主从(Shared JDBC Master/Slave)
可以基于postgres、mysql、oracle等常用数据库。
每个节点启动都会争抢数据库锁,从而保证master的唯一性,其他节点作为备份,一直等待数据库锁的释放。
因为所有消息读写,其实都是数据库操作,ActiveMQ节点本身压力很小,性能完全取决于数据库性能。
优点:
- 实现高可用和数据安全
- 简单灵活,2台节点就可以实现高可用
缺点:
- 稳定性依赖数据库
- 性能依赖数据库
下面是ActiveMQ+ZooKeeper集群整合
二、 ActiveMQ+ZooKeeper 集群整合
服务器说明
共有3台服务器,服务器的操作系统是 centos6.4,其他信息如下:
– | – | – | – |
---|---|---|---|
服务名称 | 服务器1 | 服务器2 | 服务器3 |
ip地址 | 192.168.4.101 | 192.168.4.102 | 192.168.4.103 |
主机名称 | week01 | week02 | week03 |
三、 activemq下载
使用 activemq下载地址:https://mirrors.cnnic.cn/apache/activemq (清华大学镜像)
选择的是 apache-activemq-5.14.5-bin.tar.gz
四、 activemq 配置
4.1、上传、解压
/my_soft
tar -zxvf apache-activemq-5.14.5-bin.tar.gz
4.2、修改 activemq.xml
配置
4.2.1、修改 brokerName 的值
修改
brokerName="activemq-cluster"
4.2.2、注释掉默认的persistenceAdapter
<!--
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
-->
4.2.3、添加新的leveldb
week01:
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="192.168.4.101:2181,192.168.4.102:2181,192.168.4.103:2181"
hostname="week01"
sync="local_disk"
zkPath="/activemq/leveldb-stores"
/>
</persistenceAdapter>
参数说明:
directory:
存储数据的路径replicas:
集群中的节点数[(replicas/2)+1公式表示集群中至少要正常运行的服务数量], 即3台集群保证两台要正常运行bind:
这个节点成为Master,它会绑定配置好的地址和端口来履行主从复制协议zkAddress:
ZooKeeper的ip和porthostname:
主机名或IPzkPath:
ZooKeeper选举信息交换的存贮路径
其他配置项:
zkPassword="password"
当连接到ZooKeeper服务器时用的密码 。
4.3、week02、week03的配置修改
将配置好的activemq远程上传到week02、week03服务器上
scp -r /my_soft/apache-activemq-5.14.5 root@week02:/my_soft/
scp -r /my_soft/apache-activemq-5.14.5 root@week03:/my_soft/
上传完毕后,只需要修改上面修改内容中的hostname,分别改成hostname="week02"
、hostname="week03"
即可。
五、 启动
在/my_soft/apache-activemq-5.14.5/bin
目录下,执行启动命令:
[root@week01 bin]# ./activemq start
week02、week03 使用相同的命令启动服务。
activemq命令说明:
./activemq start
启动 activemq
./activemq stop
停止 activemq
六、 查看日志
默认日志存放目录是 /apache-activemq-5.14.5/data/activemq.log
查看日志命令:
tail -500f activemq.log
七、 测试
登录activemq web页面,测试
http://192.168.4.101:8161/admin/
http://192.168.4.102:8161/admin/
http://192.168.4.103:8161/admin/
结果: 有一台能打开网页,其它两台打不开网页。
分析原因: 因为使用zookeeper做负载均衡,三台只有一台是master,其他两台处于等待状态,所以只有其中一台提供服务(能打开网页),但一旦这台服务器宕机以后,会有另外一台顶替上来,所以其他几个ip地址是打不开的(打不开网页),只有一台能打开。
将当前可以访问的activemq进程干掉,其余两个中的其中一个成为master,即可以访问。