zookpeer集群+ActiveMQ(levelDB-store) 主从集群

zookpeer集群+ActiveMQ(levelDB-store) 主从集群

一. 环境准备

Linux服务器:CentOS7.3 (本次采用阿里云服务器)
zookpeer:下载地址(选择有bin的包)
ActiveMQ:下载地址(选择有bin的包)

二. 环境搭建

将zookpeer、ActiveMQ压缩包上传服务器opt目录下

[root@user~]# cd /opt/
[root@useropt]# ll
total 74816
-rw-r--r--  1 root root 62059998 Nov  1 09:58 apache-activemq-5.15.10-bin.tar.gz
-rw-r--r--  1 root root 10622522 Nov  3 15:18 apache-zookeeper-3.5.5-bin.tar.gz
[root@root opt]# 

在根目录下建立以下目录

[root@user \]# mkdir myzookper 
[root@user \]# mkdir mq_cluster  
[root@user \]# mkdir mycommond
目录内容
myzookperzookpeer集群目录
mq_clusterActivweMQ集群目录
mycommond批处理命令目录

将opt目录下压缩包解压

[root@user opt]# tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz 
[root@user opt]# tar -zxvf apache-activemq-5.15.10-bin.tar.gz 

1、 zookpeer集群搭建
1.1 进入myzookper目录,将opt目录解压的zookpeer文件复制到myzookper下并重命名

[root@user myzookper]# cp -r /opt/apache-zookeeper-3.5.5 myzk01
[root@user myzookper]# cp -r /opt/apache-zookeeper-3.5.5 myzk02
[root@user myzookper]# cp -r /opt/apache-zookeeper-3.5.5 myzk03

1.2 在myzk01,myzk02,myzk03中新建目录zkData

[root@user myzookpeer]# cd myzk01
[root@user myzookpeer]# mkdir zkData
[root@user myzk01]# ll
total 48
drwxr-xr-x 2 root root  4096 Nov  3 16:39 bin
drwxr-xr-x 2 root root  4096 Nov  4 13:20 conf
drwxr-xr-x 5 root root  4096 Nov  3 15:21 docs
drwxr-xr-x 2 root root  4096 Nov  3 15:21 lib
-rw-r--r-- 1 root root 11358 Nov  3 15:21 LICENSE.txt
drwxr-xr-x 2 root root  4096 Nov  3 15:25 logs
-rw-r--r-- 1 root root   432 Nov  3 15:21 NOTICE.txt
-rw-r--r-- 1 root root  1560 Nov  3 15:21 README.md
-rw-r--r-- 1 root root  1347 Nov  3 15:21 README_packaging.txt
drwxr-xr-x 3 root root  4096 Nov  4 13:20 zkData
[root@user myzk01]# 

1.3 修改配置文件
配置文件 server 填写自己服务器地址,如果是阿里云服务器,填写内网IP,虚拟机填写虚拟机IP
(这里为保护隐私 我用 0.0.0.0 代替自己服务器IP地址)
myzk01 zoo.cfg

说明:虚拟机
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/myzookpeer/myzk01/zkData
clientPort=2191

server.1=0.0.0.0:2887:3887
server.2=0.0.0.0:2888:3888
server.3=0.0.0.0:2889:3889

myzk02 zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/myzookpeer/myzk02/zkData
clientPort=2192

server.1=0.0.0.0:2887:3887
server.2=0.0.0.0:2888:3888
server.3=0.0.0.0:2889:3889

myzk03 zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/myzookpeer/myzk03/zkData
clientPort=2193

server.1=0.0.0.0:2887:3887
server.2=0.0.0.0:2888:3888
server.3=0.0.0.0:2889:3889

server.A=B:C:D配置项 A:这是一个数字,表示这是第几号服务器 B:A服务器的IP地址 C:通讯端口,即A服务器与集群中的
Leader 服务器交换信息的端口 D:选举通讯端口,表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,
选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式, 由于 B 都是一样,所以不同的
Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号

参数说明:

  • tickTime: 基本事件单元,以毫秒为单位。这个时间是作为zookeeper服务器之间或客户端与服务器间维持心跳的时间。也就是每隔tickTime时间就会发送一个心跳
  • dataDir: 存储内存中数据库快照的位置,就是zookeeper保存数据的目录,默认情况下,zookeeper将数据的日志问也保存在这个目录里
  • clientPort: 客户端连接zookeeper服务器的端口,默认是2181,zookeeper会监听这个端口,接收客户端的访问请求
  • initLimit: 这个配置项是用来配置zookeeper接收客户端初始化连接能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(tickTime)长度后,zookeeper服务器还没有接收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000 = 20 秒
  • syncLimit: 这个配置项标识Leader和Follower之间发送消息,请求和应答的长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是 5 * 2000 = 10秒

1.4 进入zkData目录下创建myid文件

除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 zkData目录下,
这个文件里面就只有一个数据就是 server.A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与
zoo.cfg 里面的配置信息比较从而判断到底是那个server。

[root@user zkData]# touch myid

1.5 打开 myzk01 myid 填写1,myzk02 myid 填写2,myzk03 myid 填写3

查看防火墙状态

[root@user ~]# firewall-cmd --state
not running
[root@user ~]# 

1.6 关闭防火墙(如果是云服务器,在控制台-安全-防火墙添加规则:配置文件中的端口号)

[root@user ~]# systemctl stop firewalld.service

1.7 编写批处理启动脚本
1.7.1 在mycommond目录下新建 startZK.sh 文件

cd /myzookpeer/myzk01/bin 
./zkServer.sh start

cd /myzookpeer/myzk02/bin
./zkServer.sh start

cd /myzookpeer/myzk03/bin
./zkServer.sh start

说明:
同理 停止zookeeper服务 将 start 改为 stop
启动 AMQ 集群 批处理同理

1.7.2 运行脚本

[root@user mycommond]# ./startZK.sh

启动成功

[root@user mycommond]# ./startZK.sh 
ZooKeeper JMX enabled by default
Using config: /myzookpeer/myzk01/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /myzookpeer/myzk02/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /myzookpeer/myzk03/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@user mycommond]# 

1.7.3 查看启动状态
myzk01状态

[root@user bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /myzookpeer/myzk01/bin/../conf/zoo.cfg
Client port found: 2191. Client address: localhost.
Mode: follower
[root@user bin]# 

myzk02状态

[root@user bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /myzookpeer/myzk02/bin/../conf/zoo.cfg
Client port found: 2192. Client address: localhost.
Mode: follower
[root@user bin]# 

myzk03状态

[root@user bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /myzookpeer/myzk03/bin/../conf/zoo.cfg
Client port found: 2193. Client address: localhost.
Mode: leader
[root@user bin]# 

到此 zookpeer 集群搭建完成 一主两从

2、ActiveMQ集群搭建

2.1 进入mq_cluster目录,将opt目录解压的zookpeer文件复制到mq_cluster下并重命名

[root@user mq_cluster]# cp -r /opt/apache-activemq-5.15.10 mq_node01

2.2 修改管理控制台端口

[root@user conf]# pwd
/mq_cluster/mq_node01/conf
[root@user conf]# vim jetty.xml

在这里插入图片描述
以下对应每个控制台的端口号:
mq_node01:8161
mq_node02:8162
mq_node03:8163

2.3 hostname名字映射

[root@user /]# vim /etc/hosts
#这是默认
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#这是自己添加
#这里的IP,如果是云服务器,填写自己的服务器外网IP,如果是虚拟机,填写虚拟机IP
#格式: IP 空格 名称
0.0.0.0 mmww-server

2.4 修改 activemq.xml 配置
2.4.1 进入 mq_node01/conf 目录下 修改 activemq.xml 配置

[root@user conf]# pwd 
/mq_cluster/mq_node01/conf
[root@user conf]# vim activemq.xml 

第一步,修改brokerName
注意:三个结点的brokeName必须保持一致,zookeeper通过brokeName判断activemq是否是一个集群
在这里插入图片描述
第二步,添加配置
在这里插入图片描述

<persistenceAdapter>
    <replicatedLevelDB
      directory="${activemq.data}/leveldb"
      replicas="3"
      bind="tcp://0.0.0.0:63631"
      zkAddress="zookeeper集群IP地址:2191,zookeeper集群IP地址:2192,zookeeper集群IP地址:2193"
      hostname="mmww-server"
      sync="local_disk"
      zkPath="/activemq/leveldb-stores"
      />
</persistenceAdapter>

官网配置说明:点击查看

第三步, 修改AMQ消息 tcp 端口
在这里插入图片描述
第四步,添加数据库配置。说明:这里以mysql为例,确保服务器或者虚拟机已安装mysql数据库
在这里插入图片描述

<bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://0.0.0.0:3306/activemq?relaxAutoCommit=true"/>
    <property name="username" value="****"/>
    <property name="password" value="****"/>
    <property name="poolPreparedStatements" value="true"/>
</bean>

第五步,进入 /mq_cluster/mq_node01/lib 目录下 ,上传mysql数据库连接驱动jar包
第六步,进入 mq_cluster 目录下,将 mq_node01 复制两份,修改对应参数

[root@user mq_cluster]# pwd
/mq_cluster
[root@user mq_cluster]# cp -r mq_node01 mq_node02
[root@user mq_cluster]# cp -r mq_node01 mq_node03
[root@user mq_cluster]# ll
total 12
drwxr-xr-x 11 root root 4096 Nov  5 13:16 mq_node01
drwxr-xr-x 11 root root 4096 Nov  5 13:19 mq_node02
drwxr-xr-x 11 root root 4096 Nov  5 13:19 mq_node03
[root@user mq_cluster]# 

以上步骤完成后对应的参数列表
在这里插入图片描述
搭建完成,启动运行

1 先启动zookeeper集群服务器
2 启动ActiveMQ 集群
3 启动 zookeeper 客户端
3.1 进入zookeeper集群任意结点 bin 目录下

[root@user bin]# pwd
/myzookeeper/zk01/bin
[root@user bin]# 
[root@user bin]# ./zkCli.sh -server 0.0.0.0:2191

说明:这里IP 我以 0.0.0.0 代替,如果是云服务器,填写内网IP,虚拟机填写 127.0.0.1

在这里插入图片描述
连接成功,查看结点 看到有 activemq zookeeper 目录
在这里插入图片描述

进入activemq 目录
在这里插入图片描述
进入 leveldb-stores 目录,看到三个结点
在这里插入图片描述
查看结点状态
在这里插入图片描述
浏览器访问 AMQ消息 控制台
用户名:admin
密码:admin在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值