资讯专栏INFORMATION COLUMN

ActiveMQ单主机集群案例

JessYanCoding / 805人阅读

摘要:前言集群分为两种方式伪集群集群节点都搭在一台机器上真集群集群节点分布在多台机器上更多详细真集群与伪集群的区别该教程使用的是伪集群,由于在一个主机上实现集群,这里直接使用了模式共享文件系统。该教程是使用个服务实现集群。

前言
集群分为两种方式:
1.伪集群:集群节点都搭在一台机器上
2.真集群:集群节点分布在多台机器上
更多详细:真集群与伪集群的区别

该教程使用的是伪集群,由于在一个主机上实现ActiveMQ集群,这里直接使用了Shared File System Master Slave模式(共享文件系统)。没有结合ZooKeeper。

该教程是使用3个ActiveMQ服务实现集群。理论知识请参考我前一篇文章:ActiveMQ集群整体认识第三部分Master Slave和Broker Cluster结合使用

一、配置3个ActiveMQ服务
--- 服务端口 jetty管理端口 存储位置 网络连接器 用途
Node-A 61616 8161 --- Node-B、Node-C 只能作为消费者
Node-B 61617 8162 /opt/activemq/kahadb Node-A 生产者、消费者
Node-C 61618 8163 /opt/activemq/kahadb Node-A 生产者、消费者
1. 下载ActiveMQ安装包

安装和启动一个ActiveMQ服务可以参考之前的文章:ActiveMQ安装

$ wget https://archive.apache.org/dist/activemq/5.14.4/apache-activemq-5.14.4-bin.tar.gz # 下载
$ tar -zxvf apache-activemq-5.14.4-bin.tar.gz # 解压
2. 使用3个ActiveMQ服务

2.1 复制3个ActiveMQ软件
在 activemq文件夹下复制3个ActiveMQ,分别命名为 activemq-a、activemq-b、acativemq-c,后面称之为A、B、C服务:

$ mkdir activemq
$ cp -rf apache-activemq-5.14.4 activemq/activemq-a # 创建activemq-a服务
$ cp -rf apache-activemq-5.14.4 activemq/activemq-b # 创建activemq-b服务
$ cp -rf apache-activemq-5.14.4 activemq/activemq-c # 创建activemq-c服务

$ mkdir activemq/kahadb # 创建之后给B和C服务共享的数据存储文件夹  

2.2 配置 activemq-a 服务:
分别修改 A、B、C服务下 /conf/activemq.xml 文件配置,配置网络连接器(由于知道具体的三台服务器,所以这里使用静态连接器)

配置activemq-a的activemq.xml文件,添加连接B和C服务的网络连接器:
标签下方添加静态连接器



    
    
    




    

关于activemq支持的协议可以参考:activeMQ支持的五种协议

配置jetty管理端口为8161
修改config/jetty.xml文件,找到 id="jettyPort" 的标签:


    
     

2.3 配置 activemq-b 服务

配置连接A服务的网络连接器
/conf/activemq.xml 文件:


    
    



    

配置数据存储位置(B和C服务共享的同一个)
/conf/activemq.xml 文件:


    

配置jetty管理端口8162
/conf/jetty.xml 文件


    
     

2.4 配置 activemq-c 服务

配置连接A服务的网络连接器
/conf/activemq.xml 文件:


    
    



    

配置数据存储位置(B和C服务共享的同一个)
/conf/activemq.xml 文件:


    

配置jetty管理端口8163
/conf/jetty.xml 文件


    
     

二、依次启动A、B、C三个节点
$ /opt/activemq/activemq-a/bin/activemq start # 启动A服务
$ /opt/activemq/activemq-b/bin/activemq start # 启动B服务
$ /opt/activemq/activemq-c/bin/activemq start # 启动C服务

$ ps -ef|grep activemq # 检查进程是否允许,即activemq是否启动成功

#其中B和C服务只会有一个端口对外提供服务,因为它们是Master Slaver主从配置,只有一个能成为Master,获得共享资源的使用权。
$ netstat -anp|grep 61616 # 查看端口61616
$ netstat -anp|grep 61617 # 查看端口61617
$ netstat -anp|grep 61618 # 查看端口61618


$ /opt/activemq/activemq-b/bin/activemq stop # 停止B节点服务(模拟B服务崩溃宕机).这时C服务就会自动变为Master,开始对外提供服务
三、代码编写

在此以对列模式为例,队列模式实现方式请参考我之前的文章:ActiveMQ的消息模式——队列模式(Queue)。
在此基础上,做如下修改:

生产者 AppProducer.java

//使用B节点和C节点来实现高可用性,保证其中一个节点宕机,另一个节点可以马上提供服务。
//这里不能配置A节点,因为A节点只能作为消费者
private static final String url = "failover:(tcp://192.168.31.10:61617,tcp://192.168.31.10:61618)?randomize=true";

消费者 AppConsumer.java

//A、B、C节点都可以作为消费者
private static final String url = "failover:(tcp://192.168.31.10:61616,tcp://192.168.31.10:61617,tcp://192.168.31.10:61618)?randomize=true";

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69212.html

相关文章

  • ActiveMQ集群整体认识

    摘要:二集群部署方式集群的部署方式主要有下面种模式实现负载均衡,多个之间同步消息,已达到服务器负载的可能。默认为,单位为毫秒,表示一次尝试重连之间等待的时间。如果宕机,集群退化成标准集群,只是了失去负载均衡能力。 前言 最终需要掌握 Replicated LevelDB Store部署方式,这种部署方式是基于ZooKeeper的。 集群分为两种方式:1.伪集群:集群节点都搭在一台机器上2....

    sixgo 评论0 收藏0
  • ActiveMQ+ZooKeeper 集群整合

    摘要:要想保证负载均衡得再结合部署方案,配置网络连接器。编码时,端消费者通过协议来连接集群。一服务器配置集群集群保证本身的高可用性。只需使用进行配置即可,默认端口为。 前言 本案例使用的是真集群方式,准备三台主机,IP分别为192.168.100.142、192.168.100.143、192.168.100.144 伪集群部署请看:ActiveMQ+ZooKeeper 伪集群整合如果需要了...

    xiangchaobin 评论0 收藏0
  • 慕课网_《Java消息中间件》学习总结

    摘要:时间年月日星期六说明本文部分内容均来自慕课网。这个时候,可以启动多台积分系统,来同时消费这个消息中间件里面的登录消息,达到横向扩展的作用。 时间:2017年07月22日星期六说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://github.com/zccodere/s... 第一章:课程介绍 1-1 课程安排 Java...

    twohappy 评论0 收藏0
  • ActiveMQ+ZooKeeper 伪集群整合

    摘要:前言本案例使用的是伪集群方式,即在一台主机上部署个服务端口不同个服务端口不同。要想保证负载均衡得再结合部署方案,配置网络连接器。编码时,端消费者通过协议来连接集群。只需使用进行配置即可,默认端口为。 前言 本案例使用的是伪集群方式,即在一台主机上部署3个activemq服务(端口不同)+3个zookeeper服务(端口不同)。 真集群部署请看:ActiveMQ+ZooKeeper集群整...

    Honwhy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<