ActiveMQ集群搭建

摘要:
编码时,client端(消费者)通过failover协议来连接ActiveMQ集群。--node1服务端口使用默认端口61616--˃hostname="mq-server"正式环境mq-server01mq-server02mq-server03等等在etc/hosts中做映射jetty.xml配置˂!

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

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

一、zookeeper 安装配置

服务端口

投票端口

选举端口
zk1218128873887
zk2218228883888
zk3218328893889

在/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.shstart

zookeeper02/bin/zkServer.shstart

zookeeper03/bin/zkServer.shstart

查询状态

zookeeper01/bin/zkServer.shstatus

返回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>

hostname="mq-server" 正式环境 mq-server01 mq-server02mq-server03等等 在etc/hosts中做映射

<!--

# 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

命令:vi /etc/hosts

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");

免责声明:文章转载自《ActiveMQ集群搭建》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇curl传递大json文件报错解决方法android中使用toolbar下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

kafka入门

问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行“随机读写”的原因是什么? 3.kafka集群consumer和producer状态信息是如何保存的? 4.partitions设计的目的的根本原因是什么? 一、入门 1、简介 Kafka is a distributed,partitioned,rep...

浏览器访问网页的详细内部过程(转)

我们来看当我们在浏览器输入http://www.mytest.com:81/mytest/index.html,幕后所发生的一切。 首先http是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约定一个规范。 1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,...

3、iptables扩展及使用

iptables/netfilter netfilter: kernel framework,位于内核中的协议框架 iptables  是规则管理命令行工具   四表:filter, nat, mangle, raw 五链:PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING   iptables 子命令: 链:-...

zookeeper安装以及遇到的一些坑

 正文前先来一波福利推荐: 福利一: 百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。 福利二: 毕业答辩以及工作上各种答辩,平时积累了不少精品PPT,现在共享给大家,大大小小加起来有几千套,总有适合你的一款,很多是网上是下载不到。 获取方式: 微信关注 精品3分钟...

k8s集群部分常见问题处理

目录部分常见问题处理 Coredns CrashLoopBackOff 导致无法成功添加工作节点的问题 添加工作节点时提示token过期 kubectl 执行命令报“The connection to the server localhost:8080 was refused” 网络组件flannel无法完成初始化 部分节点无法启动pod  最后  ...

docker学习笔记——docker网络配置

本文主要介绍docker默认的网络行为。其中,包含创建的默认网络类型和如何创建用户自定义网络。 默认网络:当我们安装docker后,它会自动创建3个网络,我们也可以通过docker network命令来查看(在此就不附图了) 注意:这3个网络是被docker内建的。当我们运行一个容器需要制定的网络的时候,就可以通过--network参数来指定我们的容器连接...