多语言展示
当前在线:1461今日阅读:83今日分享:25

zookeeper+activemq+levelDB集群消息中间件搭建

activemq是一款非常流行的分布式消息中间件,在开发程序中大大减少了程序员开发的工作和提高了开发效率,在这里介绍基于zookeeper服务器环境的集群分布式消息中间件开发配置。
工具/原料
1

linux系统,jdk1.7 三台linux系统电脑。

2

我这里使用一台window,分别远程3台linux电脑。三台电脑的ip分别为10.0.88.10 ,10.0.88.11 ,10.0.88.12

方法/步骤
1

下载activemq 和zookeeper,levelDB会activemq自带有,所以不需要下载,把下载好的压缩包发送到所有的linux上,(我这里是把下载好的压缩包放在当前window下的tomcat,root目录下,可在linux终端上使用命令:curl -o activeMq.tar.gz http://10.0.10.37:8080/apache-linux-activemq-5.11.1-bin.tar.gz把activemq下载下来)关键就是配置好zookeeper集群和activemq集群

2

登录linux系统,在某个目录下新建文件activemq,使用curl -o activeMQ.tar.gz  http://10.0.10.37:8080/apache-linux-activemq-5.11.1-bin.tar.gz 下载activeMQ.tar.gz,相应的把zookeeper.tar.gz下载到activemq目录下,分别解压这两个文件放在activeMQ文件夹下,和zookeeper文件夹下。

3

当linux系统的所有的压缩包都解压好了,所有的文件都准备好了, zookeeper比如在目录/home/activemq/zookeeper目录下,activemq在/home/activemq/activemq目录下,那么我们先来配置zookeeper,在zookeeper/conf目录下找到zoo_sample.cfg文件,使用命令cp  -f zoo_sample.cfg zoo.cfg 复制成zoo.cfg文件,使用命令vi zoo.cfg  再按键盘I,进入编辑状态,修改zoo.cfg内容为# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial# synchronization phase can takeinitLimit=10# The number of ticks that can pass between# sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# the port at which the clients will connectclientPort=2181# the directory where the snapshot is stored.dataDir=/home/ activemq/zookeeper/data/data# the port at which the clients will connectdataLogDir=/home/activemq/zookeeper/data/log# add diffenrent server这里有dataDir=/home/ activemq/zookeeper/data/data和dataLogDir=/home/activemq/zookeeper/data/log如果没有这些目录,我们需要新建这些目录         建好目录之后,在dataDir目录下,新建myid文件,使用命令:touch  myid 新建文件,内容为当前机子ip所对应的zoo.cfg中server.x中的x,比如:按照上面配置zoo.cfg当前电脑ip为10.0.88.12,则myid的内容就为3,这里注意:myid文件中不能留任何空格,空行,zoo.cfg文件中的注释#与注释内容之间需要加一个空格,不是注释的,前面不能留空格和不能重写相同的变量。

4

上面配置完之后,需要配置一下环境变量,方便操作,先使用命令才cd /进入根目录,使用root权限,使用vi /etc/profile,编辑profile文件,在PATH面前添加配置如下:export ZOOKEEPER=/home/activemq/zookeeperexport PATH=$PATH:$ZOOKEEPER/bin:$ZOOKEEPER/conf这里注意conf目录也要添加进来,要不可能会报错的配置好之后,使用命令:source  /etc/profile 使配置生效。

5

配置好上述之后,接下来就是测试了使用zkServer.sh start 命令启动zookeeper,中途可能会出现一些错误,当出现错误或者查看zkServer.sh status命令的时候,不正常,可以查看dataDir或者dataLogDir目录下的zookeeper.out文件,里面有相应的启动记录,启动每个电脑的zookeeper服务器时,使用zkServer.sh status 查看状态,如果如图有出现红圈中的mode字样说明配置成功了:

6

在配置过程中,我遇到的问题,有端口被占用的,弄了好久,后来还是解决了,端口占用的进程名QuorumPeerMain这也是zookeeper进程名称,使用命令ps -ef | grep QuorumPeerMain 查出进程ID,使用kill -9  进程ID  结束进程。Zookeeper配置大概就这些了 下面我们配置activemq配置activemq比较简单 自从activemq5.9.0开始,activemq的集群实现方式取消了传统的Master-Slave方式,增加了基于zookeeper+leveldb的实现方式,其他两种方式:目录共享和数据库共享依然存在。本文主要阐述基于zookeeper和leveldb搭建activemq集群,这里需要特别提醒,本文实现的集群仅提供主备功能,避免单点故障,没有负载均衡功能。在conf目录下找到activemq.xml 把里面内容的替换成  hostname="10.0.88.10"       sync="local_disk"       zkPath="/activemq/leveldb-stores"       />这里的hostname要写当前机子ip接下来配置环境变量,方便操作。由于我的系统是64位的,所以我在profile后新添加一条语句:export  $PATH:/home/ activemq /activemq /bin/linux-x86-64不同的位数系统,选择不同的activemq,如果是32位的好像是export  $PATH:/home/ activemq /activemq /bin/linux-x86-32那么配置完成了,使用source  /etc/profile使命令生效activemq start 启动在这里要先启动zookeeper 在启动activemq配置好了,测试一下,使用命令:http://10.0.88.10:8161/admin/index.jsp如果能运行,说明activemq启动成功,如果把10.0.88.10上的activemq关闭了,这个链接还可以访问,说明配置已经成功。

7

注意事项:如果activemq启动出错的,我们可以在启动目录下的wrapper.log文件查看哪里出错。配置注意事项1、  zoo.cfg文档开头和结尾不能留空格2、  myid前后不能留换行和空格3、  zookeeper 进程名为QuorumPeerMain4、  zoo.cfg配置文件写法需要注意,不能重写同一个变量activemq在不同权限下可以启动两个不同的activemq服务,如果某个机子上有activemq关闭了,客户端还可以访问,说明还有一个activemq在启动优化配置待续:修改activemq文件改变内存ACTIVEMQ_OPTS_MEMORY="-Xms256M -Xmx384M -XX:PermSize=256M -XX:MaxPermSize=384M"注意的问题:1、         通过failover方式进行连接,多个AMQ实例地址使用英文逗号隔开,当某个实例断开时会自动重连,但如果所有实例都失效,failover默认情况下会无限期的等待下去,不会有任何提示2、        不要频繁的建立和关闭连接JMS使用长连接方式,一个程序,只要和JMS服务器保持一个连接就可以了,不要频繁的建立和关闭连接。频繁的建立和关闭连接,对程序的性能影响还是很大的。这一点和jdbc还是不太一样的。3、      JMS的Connection的start()和stop()方法代价很高,不能经常调用。我们试用的时候,写了个jms的connection pool,每次将connection取出pool时调用start()方法,归还时调用stop()方法,然而后来用jprofiler发现,一般的 cpu时间都耗在了这两个方法上

8

代码:activemq.xml                             file:${activemq.conf}/credentials.properties                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

注意事项
1

如果activemq启动出错的,我们可以在启动目录下的wrapper.log文件查看哪里出错。 配置注意事项 1、 zoo.cfg文档开头和结尾不能留空格 2、 myid前后不能留换行和空格 3、 zookeeper 进程名为QuorumPeerMain

2

4、 zoo.cfg配置文件写法需要注意,不能重写同一个变量

推荐信息