一、activeMQ主要的部署方式?
1,默认的单机部署(kahadb)
activeMQ默认的存储单机模式,如果配置文件不做修改,则默认使用此模式。以本地的kahadb文件的方式进行存储,性能完全依赖本地磁盘,不能提供高可用。
2,基于zookeeper主从模式(levelDB Master/Slave)
基于zookeeper来选举一个master,其他节点作为slave实时同步消息,levelDB会优先采用内存存储消息,异步同步到磁盘。该方式读写性能都较好,写性能能媲美非持久化消息。
优点:实现高可用和数据安全,性能较好。
缺点:由于zookeeper的选举机制,必须要使用2n+1(n>=1)的节点,才能实现高可用。
3,基于共享数据库的主从模式(Shared JDBC Master/Slave)
可以基于常用的mysql,mariadb,oracle等数据库。
每个节点启动都会争抢数据库锁,从而保证master的唯一性,其他节点作为备份,一直等待数据库锁的释放。
因为所有消息读写,其实都是数据库操作,activeMQ节点本身压力很小,性能完全取决于数据库性能。
优点:实现高可用和数据安全,一般两个节点就可以实现高可用。
缺点:性能和稳定性都依赖于数据库。
二、基于zookeeper的activeMQ单台服务器集群部署
1,环境需求
Centos7系统,java环境(jdk),zookeeper安装包,activeMQ安装包
2,部署jdk环境
jdk安装包下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
上面这个是最新版的,我使用的是jdk-8u121-linux-x64.tar.gz。
2.1 上传压缩包到服务器,在当前有压缩包的目录下进行操作。
2.2 创建文件夹
mkdir /application
2.3 解压压缩包(根据你自己的包名进行修改)
tar xf jdk-8u121-linux-x64.tar.gz -C /application/
2.4 创建软链接(根据你自己的包名进行修改)
ln -s /application/jdk1.8.0_121/ /application/jdk
2.5 配置环境变量
vim /etc/profile
在最后面添加这么几行:
export JAVA_HOME=/application/jdk
export PATH=$JAVA_HOME/bin: