晓夏

YoungCheung

Zhang Sir's technical way

Activemq的高可用—基于Zookeeper的主从集群

浏览量:59

一、Activemq介绍

1.1  Activemq简介

      Activemq 是Apache出品,最流行的,能力强劲的开源消息总线。完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。

1.2  Activemq特性

       多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务);

       对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性;

       通过常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resourceadaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE1.4商业服务器上支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA

       支持通过JDBC和journal提供高速的消息持久化

      从设计上保证了高性能的集群,客户端-服务器,点对点

      支持Ajax

      支持与Axis的整合 可以很容易得调用内嵌JMS provider,进行测试


二、环境部署演示


2.1 主机规划

image.png


2.2 搭建zookeeper集群(略)

zk集群地址:

zkAddress="192.168.1.10:2181,192.168.1.11:2181,192.168.1.12:2181"


2.3 搭建Activemq集群

2.3.1 下载Activemq安装包

cd /data
wget https://mirrors.tuna.tsinghua.edu.cn/apache/activemq/5.18.3/apache-activemq-5.18.3-bin.tar.gz

2.3.2 解压

tar xf apache-activemq-5.18.3-bin.tar.gz -C /data/
mv apache-activemq-5.18.3 activemq
cd activemq

#下载jdk13并解压
https://download.java.net/java/GA/jdk13/5b8a42f3905b406298b72d750b6919f6/33/GPL/openjdk-13_linux-x64_bin.tar.gz
修改 env,vi /data/activemq/bin/env ,增加如下配置
JAVA_HOME="/data/activemq/jdk-13"
CLASSPATH=.:$JAVA_HOME/lib
PATH=$PATH:$JAVA_HOME/bin

2.3.3 修改控制台的登录用户名密码

cd /data/activemq/conf/
vi jetty-realm.properties

#用户名:密码,权限
admin: admin,admin
user: user,user
operation: Admin@123,admin

2.3.4  配置策安全略,禁止无关人员访问发送接收信息

#新增一个插件,在<broker>节点里面<systemUsage>节点前面添加
<plugins>  
    <simpleAuthenticationPlugin>  
        <users>  
            <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>  
        </users>  
    </simpleAuthenticationPlugin>  
</plugins>

2.3.5 修改三台服务器管控台端口。默认为8161。

vi /data/activemq/conf/jetty.xml

image.png

image.png

image.png

2.3.5 集群持久化配置

 注意:3个activemq的brokerName必须相同,否则不能加入集群

image.png

<persistenceAdapter>
            <!--<kahaDB directory="${activemq.data}/kahadb"/>-->
            <replicatedLevelDB
            directory="${activemq.data}/leveldb"
            replicas="3"
            bind="tcp://0.0.0.0:62621"
            zkAddress="192.168.1.10:2181,192.168.1.11:2181,192.168.1.12:2181"
                        zkPassword=""
            hostname="本机IP"
            zkPath="/activemq/leveldb-stores" />
        </persistenceAdapter>

2.3.6 启动

/data/activemq/bin/activemq start


2.4 集群管理

(1)通过使用ZooInspector工具查看zookeeper集群情况

(2)http://192.168.1.10:8161/admin 默认用户名与口令为admin登录ActiveMQ管理端

通过以上步骤,便可以实现Activemq的主从集群,当Master主节点出现故障宕机后,Slave从节点便会通过投票机制,票数最多的Slave从节点升级为新的Master主节点,用来提供服务。当故障节点恢复之后,会重新加入到集群中并连接 Master 进入Slave 模式。


客户端配置:failover:(tcp:192.168.1.10:61616,192.168.1.11:61616,192.168.1.12:61616)?randomize=false

神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。