消息队列 springboot+activemq springboot+rabbitmq
软件架构说明
安装请参考,这里就不在重复:
1.下载activemq安装包到服务器目录下(wget下载或者清华大学镜像下载):
wget https://archive.apache.org/dist/activemq/5.15.9/apache-activemq-5.15.9-bin.tar.gz
清华大学镜像下载
https://mirrors.tuna.tsinghua.edu.cn/apache/activemq/5.15.9/
2.解压mq,进入下载的文件目录,使用tar命令解压文件:tar -zxvf apache-activemq-5.15.9-bin.tar.gz
3.启动mq,进入activemq的bin目录,启动activemq(默认管理端口号为:8161,默认服务端口号为:61616):
cd /export/servers/activemqs/activemq-5.15.9/bin/linux-x86-64
./activemq start
从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的 Master-Slave 方式,增加了基于 ZooKeeper + LevelDB 的 Master-Slave 实现方式,其他两种方式目录共享和数据库共享依然存在。本文采用zookeeper来管理节点实现activemq的高可用。
zookeeper安装,资源有限,只在一台机器做伪集群搭建
** 1、(清华大学镜像下载)下载并上传zookeeper-3.5.5.tar.gz到各个服务器的/usr/local/zookeepers目录,或者使用wget命令,如下**
cd /usr/local/zookeepers
wget http://apache.fayea.com/zookeeper/zookeeper-3.5.5/zookeeper-3.5.5.tar.gz
tar -zxvf zookeeper-3.5.5.tar.gz
** 2、在各个服务器上解压zookeeper安装包,并按节点号对zookeeper目录重命名**
在zookeeper-3.5.5节点目录下创建以下目录data、logs目录
并修改conf目录下的zoo_sample.cfg文件拷贝一份,命名为zoo.cfg
# 服务器1
cp -r zookeeper-3.5.5 zookeeper-3.5.5_1
# 服务器2
cp -r zookeeper-3.5.5 zookeeper-3.5.5_2
# 服务器3
cp -r zookeeper-3.5.5 zookeeper-3.5.5_3
** 3、修改各个conf目录下zoo.cfg 配置文件**
cd /usr/local/zookeepers/zookeeper-3.5.5_1/conf
# 设置内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeepers/zookeeper-3.5.5_1/data
dataLogDir=/usr/local/zookeepers/zookeeper-3.5.5_1/logs
clientPort=2181
server.1=192.168.1.101:2881:3881
server.2=192.168.1.101:2882:3882
server.3=192.168.1.101:2883:3883
# -----------------------------------
cd /usr/local/zookeeper-3.5.5_2/conf
vi zoo.cfg
# 设置内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeepers/zookeeper-3.5.5_2/data
dataLogDir=/usr/local/zookeepers/zookeeper-3.5.5_2/logs
clientPort=2182
server.1=192.168.1.101:2881:3881
server.2=192.168.1.101:2882:3882
server.3=192.168.1.101:2883:3883
# -----------------------------------
cd /usr/local/zookeeper-3.5.5_3/conf
vi zoo.cfg
# 设置内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeepers/zookeeper-3.5.5_3/data
dataLogDir=/usr/local/zookeepers/zookeeper-3.5.5_3/logs
clientPort=2183
server.1=192.168.1.101:2881:3881
server.2=192.168.1.101:2882:3882
server.3=192.168.1.101:2883:3883
** 4、在dataDir=/usr/local/zookeepers/zookeeper-3.5.5_x/data下创建 myid 文件**
vi /usr/local/zookeepers/zookeeper-3.5.5_1/data/myid #设置值为1
vi /usr/local/zookeepers/zookeeper-3.5.5_2/data/myid #设置值为2
vi /usr/local/zookeepers/zookeeper-3.5.5_3/data/myid #设置值为3
5、启动,进去各个bin下
启动
zkServer.sh start
查看状态
zkServer.sh status
下载并上传apache-activemq-5.15.9-bin.tar.gz到各个服务器的/usr/local/activemqs/目录,或者使用wget命令,如下
cd /usr/local/
wget wget http://archive.apache.org/dist/activemq/apache-activemq/5.15.9/apache-activemq-5.15.9-bin.tar.gz
tar -zxvf apache-activemq-5.15.9-bin.tar.gz
解压ActiveMQ安装包,并按节点号对ActiveMQ目录重命名
# 服务器1
cp -r apache-activemq-5.15.9 activemq-5.15.9_1
# 服务器2
cp -r apache-activemq-5.15.9 activemq-5.15.9_2
# 服务器3
cp -r apache-activemq-5.15.9 activemq-5.15.9_3
配置ActiveMQ节点中配置conf/jetty.xml中的监控端口
# 服务器1
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<property name="port" value="8161"/>
</bean>
# 服务器2
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<property name="port" value="8162"/>
</bean>
#服务器3
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<property name="port" value="8163"/>
</bean>
配置ActiveMQ节点中配置conf/activemq.xml中的监控端口 1、修改brokerName为任意名称,三个服务器一致,zookeeper才能识别它们属于同一个集群
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemqCluster" dataDirectory="${activemq.data}">
2、persistenceAdapter配置 persistenceAdapter设置持久化方式,主要有三种方式:kahaDB(默认方式)、数据库持久化、levelDB(v5.9.0提供支持)。 本文采用levelDB来进行持久化,并使用zookeeper实现集群的高可用,配置如下:
# 服务器1
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:62621"
zkAddress="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
hostname="192.168.1.101"
zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>
# 服务器2
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:62622"
zkAddress="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
hostname="192.168.1.101"
zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>
# 服务器3
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:62622"
zkAddress="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
hostname="192.168.1.101"
zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>
3、修改各节点的消息端口
服务器1:
<transportConnector name="openwire" uri="tcp://192.168.1.101:51511?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
服务器2:
<transportConnector name="openwire" uri="tcp://192.168.1.101:51511?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
服务器3:
<transportConnector name="openwire" uri="tcp://192.168.1.101:51511?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
启动各个节点
cd /usr/local/activemqs/activemq-5.15.9_1/bin/linux-x86-64
activemq start
cd /usr/local/activemqs/activemq-5.15.9_2/bin/linux-x86-64
activemq start
cd /usr/local/activemqs/activemq-5.15.9_3/bin/linux-x86-64
activemq start
查看日志
tail -f /usr/local/activemqs/activemq-5.15.9_1/data/activemq.log
tail -f /usr/local/activemqs/activemq-5.15.9_2/data/activemq.log
tail -f /usr/local/activemqs/activemq-5.15.9_3/data/activemq.log
说明1:本文采用的是官网中提到的三种集群方案中的<可复制的LevelDB>,其它方式请参考官网。
说明2:此部署方案继承了Zookeeper的特性,即需要有大于一半机器存活,则集群状态正常
说明3:由于ActiveMQ 的客户端只能访问Master的Broker,其他处于Slave的Broker不能访问。所以客户端连接Broker应该使用failover协议。
即:broker-url: failover:(tcp://192.168.1.101:51511,tcp://192.168.1.101:51512,tcp://192.168.1.101:51513)
说明4:三个节点的管理地址:
http://192.168.1.101:8161/admin/index.jsp
http://192.168.1.101:8162/admin/index.jsp
http://192.168.1.101:8163/admin/index.jsp
因为使用zookeeper做负载均衡,三台只有一台是master,其他两台处于等待状态,所以只有其中一台提供服务,但一旦这台服务器宕机以后,会有另外一台顶替上来,所以其他几个ip地址是打不开的,只有一台能打开。
1、Zookeeper单机安装 2、kafka安装
1、下载
kafka的下载地址:http://kafka.apache.org/downloads(基于:kafka_2.11-2.1.1版本演示)
2、解压(kafka目录kafka_2.11-2.1.1)
tar -zxvf kafka_2.11-2.1.1.tgz
3、配置(kafka目录下)
vi ./config/server.properties
listeners=PLAINTEXT://:9092
#放开并修改成listeners=PLAINTEXT://192.168.1.101:9092,192.168.1.101为我部署的IP
zookeeper.connect=localhost:2181
改成zookeeper.connect=192.168.1.101:2181 #这里主要是为了在实际zookeeper中更好的使用
4、启动(kafka目录下)
./bin/kafka-server-start.sh ./config/server.properties
5、测试(kafka目录下)
./bin/kafka-console-producer.sh --broker-list 192.168.1.101:9092 --topic kafka_kill
./bin/kafka-console-consumer.sh --zookeeper 192.168.1.101:2181 --topic kafka_kill --from-beginning
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。