zookeeper初步

来源:互联网 发布:公司域名备案流程 编辑:程序博客网 时间:2024/06/07 03:17

1.概述 
zookeeper是一个分布式协调系统,主要目的是为了减轻构建健壮的分布式系统的负担。应用场景有领导选举,崩溃检测,分布式队列和锁等。 
zookeeper被应用在hbase/solr/kafka/dubbo等系统上。而且本人发现越来越多的分布式系统都开始采用zookeeper作为底层基础设施。 

2.环境 
Win7 64bit 
JDK 1.7.0_72 
zookeeper 3.4.6 

3.起步试验 

3.1 下载 
http://zookeeper.apache.org/releases.html 
本文写作时zookeeper最新版是3.4.6 

3.2 运行服务端(单机模式) 
Cmd代码  收藏代码
  1. cd conf  
  2. cp zoo_sample.cfg zoo.cfg  


修改zoo.cfg 
Properties代码  收藏代码
  1. dataDir=D:/opensource/zookeeper/zookeeper-3.4.6/data  


然后运行以下命令即启动服务端 
Cmd代码  收藏代码
  1. cd ../bin  
  2. zkServer  


3.3 运行客户端 

Cmd代码  收藏代码
  1. zkCli  
  2.   
  3. [zk: localhost:2181(CONNECTED) 1] create /workers "abc"  
  4. Created /workers  
  5. [zk: localhost:2181(CONNECTED) 2] ls /  
  6. [workers, zookeeper]  
  7. [zk: localhost:2181(CONNECTED) 3] create /workers/1 "abc1"  
  8. Created /workers/1  
  9. [zk: localhost:2181(CONNECTED) 4] quit  

以上命令,创建了2个节点,分别是/workers 和/workers/1 

4.ZooInspector 
contrib目录下有一个简单的图形化界面,用来查看zookeeper节点。 

Cmd代码  收藏代码
  1. cd contrib\ZooInspector  
  2. java -cp zookeeper-3.4.6-ZooInspector.jar;lib/*;../../zookeeper-3.4.6.jar;../../lib/* org.apache.zookeeper.inspector.ZooInspector  


界面效果如下图,可以看到我们之前创建的2个节点以及节点内容。简单用用还是不错的。 
 

5.Quorums模式(集群模式) 
试了一下,windows下要用cygwin才能模拟。不然会出错。蛮坑爹的,对windows支持不好,不过也可以理解。 
本次试验我们准备启动3个zookeeper服务。 

5.1 准备3个服务各自的目录和myid文件 
Cmd代码  收藏代码
  1. mkdir z1  
  2. mkdir z1\data  
  3. mkdir z2  
  4. mkdir z2\data  
  5. mkdir z3  
  6. mkdir z3\data  
  7. echo 1 > z1/data/myid  
  8. echo 2 > z2/data/myid  
  9. echo 3 > z3/data/myid  

执行完以后记得手工打开myid文件看一下,1后面会多一个空格,记得去掉。另外两个2,3也一样,把空格去掉。

5.2 配置cfg 
z1.cfg 
Properties代码  收藏代码
  1. tickTime=2000  
  2. initLimit=10  
  3. syncLimit=5  
  4. dataDir=D:/opensource/zookeeper/zookeeper-3.4.6/z1/data  
  5. clientPort=2181  
  6. server.1=127.0.0.1:2222:2223  
  7. server.2=127.0.0.1:3333:3334  
  8. server.3=127.0.0.1:4444:4445  


z2.cfg(和z1.cfg相同地方已省略,只列出不同点) 
Properties代码  收藏代码
  1. dataDir=D:/opensource/zookeeper/zookeeper-3.4.6/z2/data  
  2. clientPort=2182  


z3.cfg 
Properties代码  收藏代码
  1. dataDir=D:/opensource/zookeeper/zookeeper-3.4.6/z3/data  
  2. clientPort=2183  

注意上面的dataDir要用绝对路径,不然会报错(对windows支持不好,没办法) 

5.3 启动服务端 
这里要开3个cygwin 
Cmd代码  收藏代码
  1. cd /cygdrive/d/opensource/zookeeper/zookeeper-3.4.6/  
  2. ./bin/zkServer.sh start-foreground ./z1/z1.cfg  
  3. ./bin/zkServer.sh start-foreground ./z2/z2.cfg  
  4. ./bin/zkServer.sh start-foreground ./z3/z3.cfg  


5.4 启动客户端 
这里不要用cygwin,用dos命令即可。用了cygwin会出现输入不了命令的卡死问题。 
Cmd代码  收藏代码
  1. zkCli -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183  

0 0