一、搭建Zookeeper集群
Zookeeper搭建方案
服务器编号 | 服务器IP地址 | LF通信端口 | LF选举端口 | 客户端端口 |
1 | 192.168.184.127 | 2888 | 3888 | 2181 |
2 | 192.168.184.128 | 2888 | 3888 | 2181 |
3 | 192.168.184.129 | 2888 | 3888 | 2181 |
由于是在三台不同的服务器上搭建的集群,为了操作方便,所以每台机器上创建的文件夹都是相同路径,相同名称的
2、将 zookeeper-3.4.14.tar.gz 分别上传到三台服务器上,每台服务器上分别使用命令解压得 zookeeper-3.4.14 文件夹
1 2 |
|
3、分别在三台服务器的 zookeeper-3.4.14 文件夹下,新建文件夹 mylog、mydata,用于存放 zookeeper 的日志和数据
4、进入 zookeeper-3.4.14 下的 conf 文件夹下,复制 zoo_sample.cfg 并且命名为 zoo.cfg
5、编辑 zoo.cfg (由于我们这里不是伪集群,是在三台不同的服务器上进行的集群,所以三台机器的配置文件是一样的)
14 15 16 17 18 19 20 21 22 23 24 |
|
6、在 zookeeper-3.4.14 的 mydata 文件下下面新建 myid 文件,并编辑 myid 文件,并且在里面写入对应的 server 的数字
1 2 3 4 |
|
7、同时启动三台服务器上的 zookeeper 服务,并且三台服务器的角色信息如下
启动服务的时候需要注意,一定要等全部启动完成之后再去查看状态,可能稍微有一点点延迟,如果启动一台或者两台使用 ./zkServer.sh status 去查看状态的话,会有 Error conftacting service,It is probably not running 的报错信息,如果不能正常启动,去 zookeeper.out 文件中查看不能启动的原因.
二、搭建ActiveMQ集群
1、ActiveMQ搭建方案
服务器IP地址 | ActiveMQ后台端口 | ActiveMQ管理控制台端口 |
192.168.184.127 | 61617 | 8161 |
192.168.184.128 | 61617 | 8161 |
192.168.184.129 | 61617 | 8161 |
2、拷贝压缩包到 /otp 目录下,之所以放置在 /opt 目录下,是为了备份一个压缩包,方便以后再用
1 2 |
|
3、解压缩到当前目录
4、进入解压后的文件目录
5、修改activemq.xml配置文件,使用性能比较好的LevelDB替换掉默认的KahaDB
配置项 | 说明 |
directory | 持久化数据存放地址(默认的情况下${activemq.data}下是没有leveldb目录的,要自己创建) |
replicas | 集群中节点的个数(由于我们是三台服务器搭建的ActiveMQ,所以replicas的数量是3) |
bind | 集群通信端口 |
zkAddress | ZooKeeper集群地址 |
hostname | 当前服务器的IP地址,如果集群启动的时候报未知主机名错误,那么就需要配置主机名到IP地址的映射关系 |
zkPath | ZooKeeper数据挂载点(集群启动成功之后,会在zookeeper下自动注册该节点) |
主机名配置如下:
设置主机名(三台主机分别执行)
# hostnamectl set-hostname CentOS001
# hostnamectl set-hostname CentOS002
# hostnamectl set-hostname CentOS003
各主机解析(三台主机分别执行)
# vi /etc/hosts
192.168.184.127 CentOS001
192.168.184.128 CentOS002
192.168.184.129 CentOS003
三台ActiveMQ服务器的配置如下:
192.168.184.127服务器
[root
@CentOS001
bin]# vim /usr/local/activemq/apache-activemq-5.15
.5/conf/
activemq.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
192.168.184.128服务器
[root
@CentOS002
bin]# vim /usr/local/activemq/apache-activemq-5.15
.5/conf/
activemq.xml
1 2 3 4 5 6 7 8 9 10 11 12 |
|
192.168.184.129服务器
[root
@CentOS003
bin]# vim /usr/local/activemq/apache-activemq-5.15
.5/conf/
activemq.xml
1 2 3 4 5 6 7 8 9 10 11 12 |
|
默认情况下启动时,ActiveMQ管理后台绑定到127.0.0.1:8161,这表示我们只能在本地访问,这肯定是不能接受的,我们需要修改这个地址,三台都修改。
打开/usr/local/activemq/apache-activemq-5.15
.5/
conf/jetty.xml,找到id="jettyPort"的bean,
修改这里的host成0.0.0.0,端口随意,也可以使用默认的8161:
三、启动集群
1、操作之前保证关闭防火墙,并且windows和Linux相互之间是可以ping通的
2、先启动ZooKeeper集群,因为只有zookeeper集群启动之后,你才能将ActiveMQ服务在zookeeper上注册
3、然后再分别启动三台ActiveMQ服务器
启动命令:/usr/local/activemq/apache-activemq-5.15
.5
/bin/activemq start
启动后,查看日志文件,日志目录:/usr/local/activemq/node1/data/activemq.log
四、测试
使用ZooInspector工具来查看具体的内容,可以参考Zookeeper 数据查看工具 ZooInspector 的使用 - 变体精灵 - 博客园这篇博客来了解关于ZooInspector的使用
通过查看Zookeeper的节点信息情况,可以得出192.168.184.127被选举成了主机,那么使用该主机去登录ActiveMQ的客户端,可以登录成功
使用命令 ./activemq stop 关闭 192.168.184.127这台主机,查看ZooInspector,发现zookeeper通过选举机制推举出了新的主机 192.168.184.128,使用该主机访问ActiveMQ的控制台,发现可以登录ActiveMQ的管理控制台
重新启动192.168.184.127这台服务器,保证三台服务器同时在线,然后手动down掉一台slaver,发现ActiveMQ依旧可以提供服务,如果半数的服务器是正常的情况下,整个集群就能正常工作,这样就保证了高可用
至此,整个集群的搭建就完成了.
原博主地址:Zookeeper+ActiveMQ搭建集群实现高可用 - 变体精灵 - 博客园