第一步:下载 zookeeper-3.3.6.tar.gz
下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
第二步:在本地新建一个文件夹,在其中新建zookeeper1,zookeeper2,zookeeper3,tmp四个目录,将下载好的zookeeper-3.3.6.tar.gz分别解压至zookeeper1,zookeeper2,zookeeper3.至于为何建3个而不是2个,4个,请详见zookeeper集群的原理.tmp目录中再新建zk1,zk2,zk3三个目录,每个目录中建data,log两个目录;然后分别在data文件夹下新建一个名为myid的无扩展名的文件,文件内容分别为父父目录名末尾数字.
第三步:分别打开zookeeper1,zookeeper2,zookeeper3,找到conf目录下的zoo.cfg文件.其中,
第一个配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/zookeeper-3.3.6/tmp/zk1/data
dataLogDir=D:/zookeeper-3.3.6/tmp/zk1/log
clientPort=2181
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
第二个配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/zookeeper-3.3.6/tmp/zk2/data
dataLogDir=D:/zookeeper-3.3.6/tmp/zk2/log
clientPort=2182
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
第三个配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/zookeeper-3.3.6/tmp/zk3/data
dataLogDir=D:/zookeeper-3.3.6/tmp/zk3/log
clientPort=2183
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
注意:clientPort这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。由于是本地模拟集群,因此此端口值配置时不可重复,否则会端口冲突报错.真实的zookeeper集群是将zookeeper分别装在不同计算机中的,因此一般会将此端口值配值一样,这样方便管理.
第四步:启动zookeeper集群
Windows环境下,分别打开zookeeper1,zookeeper2,zookeeper3目录,找到bin目录下的
分别双击启动,打开之后不可关闭.
第五步:检测zookeeper集群是否搭建完成.
此处需要安装ZooInspector-客户端.
改变端口号为2182,2183可分别登录集群中另外两台zookeeper的客户端.
第六步:测试使用java连接zookeeper.
public class ZookeeperTest { public static void main(String args[]){ try { //连接单个zk server //ZooKeeper zk = new ZooKeeper("localhost:2181", 300000, new DemoWatcher()); //连接zk集群 ZooKeeper zk = new ZooKeeper("localhost:2181,localhost:2182,localhost:2183", 300000, new DemoWatcher());//连接zk server String node = "/zookeeper/liuyangNode"; Stat stat = zk.exists(node, false);//检测/app1是否存在 if (stat == null) { //创建节点 String createResult = zk.create(node, "liuyang".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println("创建节点:"+createResult); }else{ System.out.println("节点:"+node+"已存在"); } //获取节点的值 byte[] b = zk.getData(node, false, stat); System.out.println("节点的值为:"+new String(b)); zk.close(); } catch (IOException e) { e.printStackTrace(); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } static class DemoWatcher implements Watcher { @Override public void process(WatchedEvent event) { System.out.println("======================"); System.out.println("path:" + event.getPath()); System.out.println("type:" + event.getType()); System.out.println("stat:" + event.getState()); System.out.println("======================"); } } }至此,zookeeper集群已搭建并验证完毕,小伙伴们现在可以自己试试咯.....