参考http://kaibinyuan.blog.51cto.com/7304008/1616454
参考http://luchunli.blog.51cto.com/2368057/1681841
1.安装zookeeper单机模式
配置java环境
[root@zookeeper ~]# wget https://www.reucon.com/cdn/java/jdk-8u45-linux-x64.tar.gz [root@zookeeper ~]# tar xf jdk-8u45-linux-x64.tar.gz [root@zookeeper ~]# cp -r jdk1.8.0_45 /usr/local/ [root@zookeeper ~]# cat /etc/profile.d/java.sh JAVA_HOME=/usr/local/jdk1.8.0_45 JAVA_BIN=/usr/local/jdk1.8.0_45/bin JRE_HOME=/usr/local/jdk1.8.0_45/jre PATH=$PATH://usr/local/jdk1.8.0_45/bin:/usr/local/jdk1.8.0_45/jre/bin CLASSPATH=/usr/local/jdk1.8.0_45/jre/lib:/usr/local/jdk1.8.0_45/lib:/usr/local/jdk1.8.0_45/jre/lib/charsets.jar [root@zookeeper ~]# source /etc/profile.d/java.sh [root@zookeeper ~]# java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
下载软件包
[root@zookeeper ~]# wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
安装
[root@zookeeper ~]# tar xf zookeeper-3.4.6.tar.gz -C /usr/local/ [root@zookeeper ~]# ln -s /usr/local/zookeeper-3.4.6/ /usr/local/zookeeper [root@zookeeper conf]# pwd /usr/local/zookeeper/conf [root@zookeeper conf]# cp zoo_sample.cfg zoo.cfg #修改配置文件 [root@zookeeper conf]# egrep -v "^#|^$" /usr/local/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/build clientPort=2181 dataLogDir=/data/zookeeper/logs #tickTime: 这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔, 也就是每个tickTime时间就会发送一个心跳 #dataDir: 顾名思义就是Zookeeper保存数据的目录, 默认情况下, Zookeeper将写数据的日志也保存在这个目录里 #clientPort: 这个端口就是客户端连接Zookeeper服务器的端口, Zookeeper会监听这个端口, 接受客户端的访问请求
启动zookeeper
[root@zookeeper ~]# /usr/local/zookeeper/bin/zkServer.sh start JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED #查看结果 [root@zookeeper ~]# netstat -tunlp |grep 2181 tcp 0 0 :::2181 :::* LISTEN 1444/java
2.安装zookeeper集群
zookeeper-1 192.168.3.19
zookeeper-2 192.168.3.20
zookeeper-1操作:
#停止zookeeper服务 [root@zookeeper ~]# /usr/local/zookeeper/bin/zkServer.sh stop JMX enabled by default Using config: /usr/local/zookee #修改配置文件/usr/local/zookeeper/conf/zoo.cfg [root@zookeeper ~]# egrep -v "^$|^#" /usr/local/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/build clientPort=2181 dataLogDir=/data/zookeeper/logs server.1 = 192.168.3.19:2888:3888 server.2 = 192.168.3.20:2888:3888 #配置myid [root@zookeeper ~]# cat /data/zookeeper/build/myid 1
zookeeper-2需要安装java和zookeeper,过程请看上文
#配置文件内容如下 [root@zookeeper-2 conf]# egrep -v "^$|^#" /usr/local/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/build clientPort=2181 dataLogDir=/data/zookeeper/logs server.1 = 192.168.3.19:2888:3888 server.2 = 192.168.3.20:2888:3888 #启动服务 [root@zookeeper-2 ~]# /usr/local/zookeeper/bin/zkServer.sh start JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
最后验证集群状态
#zookeeper-1 [root@zookeeper ~]# /usr/local/zookeeper/bin/zkServer.sh status JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Mode: leader #zookeeper-2 [root@zookeeper-2 ~]# /usr/local/zookeeper/bin/zkServer.sh status JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Mode: follower
通过客户端脚本验证
[root@zookeeper ~]# /usr/local/zookeeper/bin/zkCli.sh [zk: localhost:2181(CONNECTED) 2] ls / [zookeeper] # 第一次部署Zookeeper集群,默认创建名为/zookeeper的节点 [zk: localhost:2181(CONNECTED) 3] ls /zookeeper [quota] # 读取znode数据 [zk: localhost:2181(CONNECTED) 5] get /zookeeper/quota cZxid = 0x0 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x0 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x0 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 0 # 创建znode [zk: localhost:2181(CONNECTED) 6] create /zk-book 123 Created /zk-book [zk: localhost:2181(CONNECTED) 7] ls / [zk-book, zookeeper] [zk: localhost:2181(CONNECTED) 8] get /zk-book 123 cZxid = 0x300000004 ctime = Tue Aug 11 14:46:48 CST 2015 mZxid = 0x300000004 mtime = Tue Aug 11 14:46:48 CST 2015 pZxid = 0x300000004 cversion = 0 dataVersion = 0 # version的版本为0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 3 numChildren = 0 # 更新znode的值 [zk: localhost:2181(CONNECTED) 9] set /zk-book 456 cZxid = 0x300000004 ctime = Tue Aug 11 14:46:48 CST 2015 mZxid = 0x300000005 mtime = Tue Aug 11 14:47:45 CST 2015 pZxid = 0x300000004 cversion = 0 dataVersion = 1 # 更新后version的版本为1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 3 numChildren = 0 #在zookeeper-2上查看结果 [root@zookeeper-2 ~]# /usr/local/zookeeper/bin/zkCli.sh [zk: localhost:2181(CONNECTED) 1] get /zk-book 456 cZxid = 0x300000004 ctime = Tue Aug 11 14:46:48 CST 2015 mZxid = 0x300000005 mtime = Tue Aug 11 14:47:45 CST 2015 pZxid = 0x300000004 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 3 numChildren = 0 #在zookeeper-2上删除/zk-book [zk: localhost:2181(CONNECTED) 2] delete /zk-book [zk: localhost:2181(CONNECTED) 3] ls / [zookeeper] #在zookeeper-1上查看结果 [zk: localhost:2181(CONNECTED) 10] ls / [zookeeper]
安装metaq
这里要安装2台meatq,在2个zookeeper上各安装一个
参考http://linuxblind.blog.51cto.com/7616603/1266752
[root@zookeeper ~]# wget http://fnil.net/downloads/metaq-server-1.4.6.2.tar.gz [root@zookeeper ~]# tar xf metaq-server-1.4.6.2.tar.gz [root@zookeeper ~]# mv taobao /usr/local/ [root@zookeeper ~]# groupadd metaq [root@zookeeper ~]# useradd metaq -g metaq #修改后的配置文件为 [root@zookeeper ~]# egrep -v "^$|^;" /usr/local/taobao/metamorphosis-server-wrapper/conf/server.ini [system] brokerId=0 #注意:brokerid 确保是集群中唯一的,可选取:1/2/3 numPartitions=1 serverPort=8123 dashboardHttpPort=8120 unflushThreshold=0 unflushInterval=10000 maxSegmentSize=1073741824 maxTransferSize=1048576 deletePolicy=delete,168 deleteWhen=0 0 6,18 * * ? flushTxLogAtCommit=1 stat=true dataPath=/data/metaq/data dataLogPath=/data/metqa/log updateConsumerOffsets=true [zookeeper] #注意一定要配置的是集群而非集群中一台ip和端口 zk.zkConnect=192.168.3.19:2181,192.168.3.20:2181 zk.zkSessionTimeoutMs=30000 zk.zkConnectionTimeoutMs=30000 zk.zkSyncTimeMs=5000 [topic=test] [topic=meta-test]