ActiveMQ集群搭建

在虚拟机安装centos7,要提前安装好jdk环境

工作流程:
在ZooKeeper中管理多个Broker节点,根据 Master选举策略让其中一个 Broker选举为Master(只有Master才具备对外提供服务的能力),剩下Broker为slave。
编码时,client端(消费者)通过failover协议来连接ActiveMQ集群。

一、zookeeper 安装配置

 
服务端口


投票端口

选举端口
zk1 2181 2887 3887
zk2 2182 2888 3888
zk3 2183 2889 3889

在/Tools/zookeeper下复制3个zookeeper服务,并分别配置它们的文件conf/zoo.cfg:

zk1.

# /home/admin/Tools/zookeeper01   虚拟机zookeeper安装路径

dataDir=/home/admin/Tools/zookeeper01/data

dataLogDir=/home/admin/Tools/zookeeper01/log

#服务端口

clientPort=2181

# zk集群之间的通信地址

server.1=192.168.23.129:2887:3887

server.2=192.168.23.129:2888:3888

server.3=192.168.23.129:2889:3889

ZK2.

# zookeeper的数据存储和日志存储目录

dataDir=/home/admin/Tools/zookeeper02/data

dataLogDir=/home/admin/Tools/zookeeper02/log

#服务端口

clientPort=2182

# zk集群之间的通信地址

server.1=192.168.23.129:2887:3887

server.2=192.168.23.129:2888:3888

server.3=192.168.23.129:2889:3889

ZK3.

dataDir=/home/admin/Tools/zookeeper03/data

dataLogDir=/home/admin/Tools/zookeeper03/log

#服务端口

clientPort=2183

# zk集群之间的通信地址

server.1=192.168.23.129:2887:3887

server.2=192.168.23.129:2888:3888

server.3=192.168.23.129:2889:3889

依次启动

zookeeper01/bin/zkServer.sh  start

zookeeper02/bin/zkServer.sh  start

zookeeper03/bin/zkServer.sh  start

查询状态

zookeeper01/bin/zkServer.sh  status

返回Leader 或 follower  证明zookeeper 安装成功;

二 activeMQ安装配置


--


M-S 通讯


服务端口


jetty控制台端口


Mq01


62626


61616


8161


Mq02


62627


61617


8162


Mq03


62628


61618


8163

1. 修改ActiveMQ配置文件conf/activemq.xmlconf/jetty.xml

注意:配置中brokerName名称必须一致,否则不能集群

Mq01:

Activemq.xml 配置

1). <broker xmlns="http://activemq.apache.org/schema/core" brokerName="mq-cluster" dataDirectory="${activemq.data}">

2).<transportConnectors>

<!-- node1服务端口使用默认端口61616 -->

<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

</transportConnectors>

3).<!-- 持久化的部分为ZooKeeper集群连接地址-->

<persistenceAdapter>

<replicatedLevelDB

directory="${activemq.data}/leveldb"

replicas="3"

bind="tcp://0.0.0.0:62626"

zkAddress="192.168.23.129:2181,192.168.23.129:2182,192.168.23.129:2183"

zkPath="/activemq/leveldb-stores"

hostname="mq-server" />

</persistenceAdapter>

<!--

# directory: 存储数据的路径

# replicas:集群中的节点数【(replicas/2)+1公式表示集群中至少要正常运行的服务数量】,3台集群那么允许1台宕机, 另外两台要正常运行

# bind:当该节点成为master后,它将绑定已配置的地址和端口来为复制协议提供服务。还支持使用动态端口。只需使用tcp://0.0.0.0:0进行配置即可,默认端口为61616。

# zkAddress:ZK的ip和port, 如果是集群,则用逗号隔开(这里作为简单示例ZooKeeper配置为单点, 这样已经适用于大多数环境了, 集群也就多几个配置)

# zkPassword:当连接到ZooKeeper服务器时用的密码,没有密码则不配置。

# zkPah:ZK选举信息交换的存贮路径,启动服务后actimvemq会到zookeeper上注册生成此路径

# hostname: ActiveMQ所在主机的IP

# 更多参考:http://activemq.apache.org/replicated-leveldb-store.html

-->

jetty.xml 配置

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">

<property name="host" value="0.0.0.0"/>

<property name="port" value="8161"/>

<!-- 在这里修改端口为8161,默认就是8161 -->

</bean>

Mq02:

Activemq.xml 配置

1). <broker xmlns="http://activemq.apache.org/schema/core" brokerName="mq-cluster" dataDirectory="${activemq.data}">

2).<transportConnectors>

<!-- node1服务端口使用默认端口61616 -->

<transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

</transportConnectors>

3).<!-- 持久化的部分为ZooKeeper集群连接地址-->

<persistenceAdapter>

<replicatedLevelDB

directory="${activemq.data}/leveldb"

replicas="3"

bind="tcp://0.0.0.0:62627"

zkAddress="192.168.23.129:2181,192.168.23.129:2182,192.168.23.129:2183"

zkPath="/activemq/leveldb-stores"

hostname="mq-server"

/>

</persistenceAdapter>

<!--

# directory: 存储数据的路径

# replicas:集群中的节点数【(replicas/2)+1公式表示集群中至少要正常运行的服务数量】,3台集群那么允许1台宕机, 另外两台要正常运行

# bind:当该节点成为master后,它将绑定已配置的地址和端口来为复制协议提供服务。还支持使用动态端口。只需使用tcp://0.0.0.0:0进行配置即可,默认端口为61616。

jetty.xml 配置

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">

<property name="host" value="0.0.0.0"/>

<property name="port" value="8162"/>

<!-- 在这里修改端口为8162,默认就是8161 --></bean>

同理,修改mq3的配置信息,这里不再重复;

依次启动activemq服务

注意,启动前需要修改HOST配置文件,

修改host:

192.168.23.129 mq-server

测试:

Ping mq-server  ,验证是否能ping 通;

然后依次启动

mq01/bin/activemq start

mq02/bin/activemq start

mq03/bin/activemq start

输入命令 :ps -ef|grep activemq # 检查进程是否运行,即activemq是否启动成功

三、Client使用

该zookeeper+activemq的集群Master Slave部署方案,能够提供(3-1)/2的容错率,即3台服务器允许宕机一台,而不影响整个集群的对外提供服务。

编写代码连接时使用failover策略:

IConnectionFactory factory = new ConnectionFactory("failover:tcp://192.168.23.129:61616,tcp://192.168.23.129:61617,tcp://192.168.23.129:61618");

原文地址:https://www.cnblogs.com/brain008/p/11387774.html

时间: 2024-11-13 02:12:48

ActiveMQ集群搭建的相关文章

Zookeeper+ActiveMQ集群搭建

搭建三台虚拟机安装centos7.要提前安装好jdk环境 1.环境准备,搭建三台虚拟机ip分别是 192.168.192.130 192.168.192.131 192.168.192.134 Zookeeper环境准备 主机ip 消息端口 通信端口 节点目录/user/local/ 192.168.192.130 2181 2888:3888 zookeeper 192.168.192.131 2181 2888:3888 zookeeper 192.168.192.134 2181 2888

activemq集群搭建Demo

第一步:创建集群目录 [[email protected] ~]# mkdir -p /usr/local/activemqCluster 复制单点至集群目录 [[email protected] ~]# cp /usr/local/activemq/apache-activemq-5.14.5 /usr/local/activemqCluster/mq1 -rf 第二步:配置activemq.xml 进入conf所在目录 [[email protected] ~]# cd /usr/local

基于zookeeper+leveldb搭建activemq集群--转载

原地址:http://www.open-open.com/lib/view/open1410569018211.html 自从activemq5.9.0开始,activemq的集群实现方式取消了传统的 Master-Slave方式,增加了基于zookeeper+leveldb的实现方式,其他两种方式:目录共享和数据库共享依然存在.本文主要阐述基 于zookeeper和leveldb搭建activemq集群,这里需要特别提醒,本文实现的集群仅提供主备功能,避免单点故障,没有负载均衡功能. 下面开始

基于zookeeper+leveldb搭建activemq集群

自从activemq5.9.0开始,activemq的集群实现方式取消了传统的Master-Slave方式,增加了基于zookeeper+leveldb的实现方式,其他两种方式:目录共享和数据库共享依然存在.本文主要阐述基于zookeeper和leveldb搭建activemq集群,这里需要特别提醒,本文实现的集群仅提供主备功能,避免单点故障,没有负载均衡功能. 下面开始我们的征途. 一.搭建zookeeper集群 关于搭建zookeeper集群的文章请参考:zookeeper的集群模式下的安装

JAVAEE——宜立方商城08:Zookeeper+SolrCloud集群搭建、搜索功能切换到集群版、Activemq消息队列搭建与使用

1. 学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步索引库. a) Activemq b) 发送消息 c) 接收消息 2. 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求. So

KAFKA集群搭建

一.简介 Kafka是Apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.Spark都支持与Kafka集成.   Kafka适合做什么? 官方文档介绍,它通常被使用在两大类应用中: 搭建实时数据流管道,在系统或应用之间可靠的获取数据 搭建对数据流进行转换或相应的实时流应用程序.   为了了解Kafka具体如何实现这些功能, 首先理解几个概

47.ActiveMQ集群

(声明:本文非EamonSec原创) 使用ZooKeeper实现的Master-Slave实现方式,是对ActiveMQ进行高可用的一种有效的解决方案,高可用的原理:使用ZooKeeper(集群)注册所有的ActiveMQBroker.只有其中的一个Broker可以对外提供服务(也就是Master节点),其他的Broker处于待机状态,被视为Slave.如果Master因故障而不能提供服务,则利用ZooKeeper的内部选举机制会从Slave中选举出一个Broker充当Master节点,继续对外

架构设计:系统间通信(25)——ActiveMQ集群方案(上)

1.综述 通过之前的文章,我们讨论了ActiveMQ的基本使用,包括单个ActiveMQ服务节点的性能特征,关键调整参数:我们还介绍了单个ActiveMQ节点上三种不同的持久化存储方案,并讨论了这三种不同的持久化存储方案的配置和性能特点.但是这还远远不够,因为在生产环境中为了保证让我们设计的消息服务方案能够持续工作,我们还需要为消息中间件服务搭建集群环境,从而在保证消息中间件服务可靠性和处理性能. 2.ActiveMQ多节点方案 集群方案主要为了解决系统架构中的两个关键问题:高可用和高性能.Ac

架构设计:系统间通信(26)——ActiveMQ集群方案(下)

(接上文<架构设计:系统间通信(26)--ActiveMQ集群方案(上)>) 3.ActiveMQ热备方案 ActiveMQ热备方案,主要保证ActiveMQ的高可用性.这种方案并不像上节中我们主要讨论的ActiveMQ高性能方案那样,同时有多个节点都处于工作状态,也就是说这种方案并不提高ActiveMQ集群的性能:而是从集群中的多个节点选择一个,让其处于工作状态,集群中其它节点则处于待命状态.当主要的工作节点由于各种异常情况停止服务时,保证处于待命的节点能够无缝接替其工作. 3-1.Acti