一. 环境准备
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
目录 | 内容 |
---|---|
myzookper | zookpeer集群目录 |
mq_cluster | ActivweMQ集群目录 |
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 实例通信端口号不能一样,所以要给它们分配不同的端口号
参数说明:
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