Activemq+Zookeeper集群
如果在同一台机器上请参考
http://blog.csdn.net/liuyifeng1920/article/details/50233067
http://blog.csdn.net/zuolj/article/details/53186136
环境
[root@node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@node1 ~]# uname -r
3.10.0-229.el7.x86_64
关闭防火墙和SElinux
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0
安装包下载
链接:http://pan.baidu.com/s/1c32p2Y 密码:ejeq
以下操作是在其中一台上,其他两台按照如下配置即可
添加hosts信息
10.0.0.20 node1
10.0.0.21 node2
10.0.0.22 node3
安装Java 1.8
查看CentOS自带JDK是否已安装

[root@node1 ~]# yum list installed |grep java
java-1.6.0-openjdk.x86_64
java-1.6.0-openjdk-devel.x86_64
java-1.7.0-openjdk.x86_64
java-1.7.0-openjdk-devel.x86_64
tzdata-java.noarch 2015e-1.el6 @anaconda-CentOS-201508042137.x86_64

若有自带安装的JDK,卸载CentOS系统自带Java环境
[root@node1 ~]# yum -y remove java-1.7.0-openjdk*
[root@node1 ~]# yum -y remove java-1.6.0-openjdk*
卸载 tzdata-java
[root@node1 ~]# yum -y remove tzdata-java.noarch
上传jdk-8u131-linux-x64.rpm
[root@node1 ~]# rz 软件包的地址
解压

[root@node1 ~]# rpm -ivh jdk-8u131-linux-x64.rpm Preparing... ########################################### [100%]
1:jdk1.8.0_131 ########################################### [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...

进入配置文件
[root@node1 ~]# vim /etc/profile
将以下文件添加到尾行
JAVA_HOME=/usr/java/jdk1.8.0_131
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
更新 profile 文件
[root@node1 ~]# source /etc/profile
查看Java版本信息
[root@node1 ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
安装zookeeper
[root@node1 local]# cd /usr/local/src/
[root@node1 src]# rz
[root@node1 src]# ll
-rw-r--r-- root root Jun : zookeeper-3.4..tar.gz
[root@node1 src]# tar -zxvf zookeeper-3.4..tar.gz -C /usr/local/
配置环境变量,在尾部添加以下信息
[root@node1 ~]# vim /etc/profile
#zookeeper
ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.
export PATH=$PATH:$ZOOKEEPER_HOME/bin
[root@node1 ~]# source /etc/profile
创建zookeeper的数据目录和日志目录
[root@node1 ~]# mkdir -p /usr/local/zookeeper-3.4.9/{data,log}
修改zookeeper配置文件
[root@node1 ~]# cd /usr/local/zookeeper-3.4./conf/
[root@node1 conf]# cp zoo_sample.cfg zoo.cfg
[root@node1 conf]# vim zoo.cfg
# Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔
tickTime=
# The number of ticks that the initial
# synchronization phase can take
# Zookeeper接受客户端初始化连接时最长能忍受多少个心跳时间间隔数
initLimit=
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
# 标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度
syncLimit=
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# dataDir=/tmp/zookeeper
# Zookeeper保存数据的目录
dataDir=/usr/local/zookeeper-3.4./data
# Zookeeper保存日志的目录
dataLogDir=/usr/local/zookeeper-3.4./log # the port at which the clients will connect
#客户端访问 zookeeper 的端口号
clientPort=
# the maximum number of client connections.
# increase this if you need to handle more clients
# maxClientCnxns=
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=
# Purge task interval in hours
# Set to "" to disable auto purge feature
# autopurge.purgeInterval=
# server.A=B:C:D
# A位数字与myid文件值对应,B服务器地址,C集群成员信息交换端口,D是Leader挂掉后用来选举Leader的端口
server.=10.0.0.20::
server.=10.0.0.21::
server.=10.0.0.22::
在dataDir下创建myid文件,对应节点id
在10.0.0.20上
[root@node1 ~]# cd /usr/local/src/zookeeper-3.4./data
[root@node1 data]# echo >myid 在10.0.0.21上
[root@node2 ~]# cd /usr/local/src/zookeeper-3.4./data
[root@node2 data]# echo >myid 在10.0.0.22上
[root@node3 ~]# cd /usr/local/src/zookeeper-3.4./data
[root@node3 data]# echo >myid
启动zookeeper服务,依次在3台服务器上启动zk服务
[root@node1 ~]# /usr/local/zookeeper-3.4./bin/zkServer.sh start
[root@node2 ~]# /usr/local/zookeeper-3.4./bin/zkServer.sh start
[root@node3 ~]# /usr/local/zookeeper-3.4./bin/zkServer.sh start
查看zookeeper所有节点的状态
[root@node1 ~]# /usr/local/zookeeper-3.4./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: follower [root@node2 ~]# /usr/local/zookeeper-3.4./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: follower [root@node3 ~]# /usr/local/zookeeper-3.4./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: follower
activemq安装
[root@node1 ~]# cd /usr/local/
[root@node1 src]# rz
[root@node1 src]# ll
-rw-r--r-- root root Oct apache-activemq-5.15.0-bin.tar.gz
[root@node1 src]# tar -zxvf apache-activemq-5.15.0-bin.tar.gz -C /usr/local/
2.配置,在3台服务器上做同样配置,需注意个别参数配置
[root@node1 ~]# cd /usr/local/src/apache-activemq-5.15.0/conf
[root@node1 conf]# vim activemq.xml
81 <persistenceAdapter>
<!--
< kahaDB directory="${activemq.data}/kahadb"/>
-->
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas=""
bind="tcp://0.0.0.0:0"
zkAddress="10.0.0.20:2181,10.0.0.21:2181,10.0.0.22:2181"
hostname="10.0.0.20"
sync="local_disk"
zkPath="/activemq/leveldb-stores"
/>
</persistenceAdapter>
directory : 存储数据的路径 replicas : 集群中的节点数【(replicas/)+1公式表示集群中至少要正常运行的服务数量】,3台集群那么允许1台宕机, 另外两台要正常运行 bind : 当这个节点成为Master, 它会绑定配置好的地址和端口来履行主从复制协议,默认端口为61616 zkAddress : ZooKeeper的ip和port, 如果是集群, 则用逗号隔开(这里作为简单示例ZooKeeper配置为单点, 这样已经适用于大多数环境了, 集群也就多几个配置) zkPassword : 当连接到ZooKeeper服务器时用的密码,此处由于没有密码 hostname : 本机ip sync : 在认为消息被消费完成前, 同步信息所存贮的策略, 如果有多种策略用逗号隔开, ActiveMQ会选择较强的策略(local_mem, local_disk则肯定选择存贮在本地硬盘) zkPath : ZooKeeper选举信息交换的存贮路径,启动服务后actimvemq会到zookeeper上注册生成此路径。
启动服务,依次在3台服务器上启动服务,会启动activemq的8161和61616两个端口;由于zookeeper机制,并不是3台服务器都会启动这两个端口,zookeeper确保只有一台会启动这两个端口对外提供服务
[root@node1 ~]# /usr/local/src/apache-activemq-5.15.0/bin/activemq start [root@node2 ~]# /usr/local/src/apache-activemq-5.15.0/bin/activemq start [root@node3 ~]# /usr/local/src/apache-activemq-5.15.0/bin/activemq start
在浏览器地址栏里输入
10.0.0.20:
10.0.0.21:
10.0.0.22:
将当前可以访问的activemq进程干掉,其余两个中的其中一个成为master,即可以访问
总结
zookeeper+activemq的配置方案,能够提供(3-1)/2的容错率,也就是3台服务器允许宕机一台,而不影响整个集群的对外提供服务。
Activemq+Zookeeper集群的更多相关文章
- ActiveMQ+Zookeeper集群配置文档
Zookeeper + ActiveMQ 集群整合配置文档 一:使用ZooKeeper实现的MasterSlave实现方式 是对ActiveMQ进行高可用的一种有效的解决方案, 高可用的原理:使用Zo ...
- Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群
ActiveMQ从5.9.0版本开始,集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的实现方式. 本文主要介绍了在Windows环境下配置基于Zoo ...
- Centos7上搭建activemq集群和zookeeper集群
Zookeeper集群的搭建 1.环境准备 Zookeeper版本:3.4.10. 三台服务器: IP 端口 通信端口 10.233.17.6 2181 2888,3888 10.233.17.7 2 ...
- ActiveMQ的集群方案对比及部署
转载:http://blog.csdn.net/lifetragedy/article/details/51869032 ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这 ...
- ActiveMQ伪集群部署
本文借鉴http://www.cnblogs.com/guozhen/p/5984915.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 介绍如何在 ...
- ActiveMQ实战-集群
原文:http://blog.csdn.net/lifetragedy/article/details/51869032 ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这 ...
- activemq 搭建--集群
linux activmemq 集群安装,配置和高可用测试 从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的Master-Slave 方式,增加了基于Z ...
- zookeeper集群+kafka集群 部署
zookeeper集群 +kafka 集群部署 1.Zookeeper 概述: Zookeeper 定义 zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目 Zooke ...
- zookeeper集群的搭建以及hadoop ha的相关配置
1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...
随机推荐
- C#string与stringBuilder的区别
string的缺点是每次字符串变量的内容发生了改变时,都必须重新分配内存.你想想,如果创建一个迭代100000次的循环,每次迭代都将一个字符连接到字符串,这样内存中就会有100000个字符串,每个字符 ...
- SHELL (3) —— 变量知识进阶和实践
摘自:Oldboy Linux运维——SHELL编程实战 SHELL中特殊切重要的变量 位置变量 作用说明 $0 获取当前执行的Shell脚本的文件名,如果执行脚本包含了路径,那么就包括脚本路径 $n ...
- 那些年的 网络通信之 TCP/IP 传输控制协议 ip 加 端口 客户端上传文件到服务器端服务器端返回上传成功消息
多线程开启, 客户端通过 Socket 流 上传文件到服务端的一个小程序练习. 1. 抓住阻塞式方法,去调试 2. 获取对应流对象操作对应的对象 这时候自己不能懵,一定要清晰,最好命名就能区别,一搞混 ...
- js 语法高亮插件之 Prism.js
之前也介绍过几款语法高亮插件<为博客园选择一个小巧霸气的语法高亮插件>以及关于他们的综合性能<再议 语法高亮插件的选择>.今天在小影志博客看到<使用 Prism.js 实 ...
- BAT及各大互联网公司2014前端笔试面试题--JavaScript篇(昨天某个群友表示写的简单了点,然后我无情的把他的抄了一遍)
(某个群友)http://www.cnblogs.com/coco1s/ 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大 ...
- svn使用笔记
一.checkout:第一次下载trunk里面的代码到本地 二.commit:提交一些修改* out of date : 本地版本号 < 服务器版本号* 如果过期,就update,可能会出现co ...
- UVALive 6467 Strahler Order
> 题目链接 题意:给定一个有向图,顶点代表水池,入度为零的定点代表水源,等级是1,他们延河道(有向边)冲撞,对于普通的水池来说,题目给定判断它等级的两个准则,问出度为零的那个点的等级是多少. ...
- APP的CPU,内存,耗电,流量测试工具
APP的CPU,内存,耗电,流量测试工具下载地址,后续文章会介绍如何使用Emmagee.itest.gt APP应用的CPU,内存,耗电,流量调查 可和同类产品比较,使用GT等工具:CPU靠syste ...
- Java基础92 MySQL插入当前系统时间
1.时间格式 用yyyy表示年份(year). -- y 表示年的最后一位,yy 表示年的最后2位,yyy 表示年的最后3位,yyyy 用4位数表示年用MM表示月份(month).-- mm 用2位 ...
- centos 6.8 启动损坏修复实验
前两天遇到了一个问题,centos必须借助CD的启动才能进入系统,当时想着做个测试,这会儿正好有时间,在VMWare里面试试. 思想是这样的,删除boot里面的文件,然后重启看效果. 具体过程如下: ...