博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zookeeper伪分布式集群安装
阅读量:3587 次
发布时间:2019-05-20

本文共 14637 字,大约阅读时间需要 48 分钟。

所谓 “伪分布式集群” 就是在,在一台PC中,启动多个ZooKeeper的实例。“完全分布式集群” 是每台PC,启动一个ZooKeeper实例。

由于我的测试环境PC数量有限,所以在一台PC中,启动3个ZooKeeper的实例。

创建环境目录

~ mkdir /home/conan/zoo/zk1~ mkdir /home/conan/zoo/zk2~ mkdir /home/conan/zoo/zk3#新建myid文件~ echo "1" > /home/conan/zoo/zk1/myid~ echo "2" > /home/conan/zoo/zk2/myid~ echo "3" > /home/conan/zoo/zk3/myid

分别修改配置文件
修改:dataDir,clientPort
增加:集群的实例,server.X,”X”表示每个目录中的myid的值

~ vi /home/conan/toolkit/zookeeper345/conf/zk1.cfgckTime=2000initLimit=10syncLimit=5dataDir=/home/conan/zoo/zk1clientPort=2181server.1=192.168.1.201:2888:3888server.2=192.168.1.201:2889:3889server.3=192.168.1.201:2890:3890~ vi /home/conan/toolkit/zookeeper345/conf/zk2.cfgckTime=2000initLimit=10syncLimit=5dataDir=/home/conan/zoo/zk2clientPort=2182server.1=192.168.1.201:2888:3888server.2=192.168.1.201:2889:3889server.3=192.168.1.201:2890:3890~ vi /home/conan/toolkit/zookeeper345/conf/zk3.cfgtickTime=2000initLimit=10syncLimit=5dataDir=/home/conan/zoo/zk3clientPort=2183server.1=192.168.1.201:2888:3888server.2=192.168.1.201:2889:3889server.3=192.168.1.201:2890:3890

3个节点的ZooKeeper集群配置完成,接下来我们的启动服务。

启动集群

~ /home/conan/toolkit/zookeeper345/bin/zkServer.sh start zk1.cfg~ /home/conan/toolkit/zookeeper345/bin/zkServer.sh start zk2.cfg~ /home/conan/toolkit/zookeeper345/bin/zkServer.sh start zk3.cfg~ jps5422 QuorumPeerMain5395 QuorumPeerMain5463 QuorumPeerMain5494 Jps#查看节点状态~ /home/conan/toolkit/zookeeper345/bin/zkServer.sh status zk1.cfgJMX enabled by defaultUsing config: /home/conan/toolkit/zookeeper345/bin/../conf/zk1.cfgMode: follower~ /home/conan/toolkit/zookeeper345/bin/zkServer.sh status zk2.cfgJMX enabled by defaultUsing config: /home/conan/toolkit/zookeeper345/bin/../conf/zk2.cfgMode: leader~ /home/conan/toolkit/zookeeper345/bin/zkServer.sh status zk3.cfgJMX enabled by defaultUsing config: /home/conan/toolkit/zookeeper345/bin/../conf/zk3.cfgMode: follower

我们可以看到zk2是leader,zk1和zk3是follower

查看ZooKeeper物理文件目录结构

~ tree  -L 3 /home/conan/zoo/home/conan/zoo├── zk0├── zk1│   ├── myid│   ├── version-2│   │   ├── acceptedEpoch│   │   ├── currentEpoch│   │   ├── log.100000001│   │   └── snapshot.0│   └── zookeeper_server.pid├── zk2│   ├── myid│   ├── version-2│   │   ├── acceptedEpoch│   │   ├── currentEpoch│   │   ├── log.100000001│   │   └── snapshot.0│   └── zookeeper_server.pid└── zk3    ├── myid    ├── version-2    │   ├── acceptedEpoch    │   ├── currentEpoch    │   ├── log.100000001    │   └── snapshot.100000000    └── zookeeper_server.pid7 directories, 18 files

4. zookeeper命令行操作

我们通过客户端连接ZooKeeper的集群,我们可以任意的zookeeper是进行连接。

~ /home/conan/toolkit/zookeeper345/bin/zkCli.sh -server 192.168.1.201:2181Connecting to 192.168.1.2012013-08-12 05:25:39,260 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.5-1392090, built on 09/30/2012 17:52 GMT2013-08-12 05:25:39,267 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=conan2013-08-12 05:25:39,269 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.6.0_292013-08-12 05:25:39,269 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Sun Microsystems Inc.2013-08-12 05:25:39,270 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/home/conan/toolkit/jdk16/jre2013-08-12 05:25:39,270 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/home/conan/toolkit/zookeeper345/bin/../build/classes:/home/conan/toolkit/zookeeper345/bin/../build/lib/*.jar:/home/conan/toolkit/zookeeper345/bin/../lib/slf4j-log4j12-1.6.1.jar:/home/conan/toolkit/zookeeper345/bin/../lib/slf4j-api-1.6.1.jar:/home/conan/toolkit/zookeeper345/bin/../lib/netty-3.2.2.Final.jar:/home/conan/toolkit/zookeeper345/bin/../lib/log4j-1.2.15.jar:/home/conan/toolkit/zookeeper345/bin/../lib/jline-0.9.94.jar:/home/conan/toolkit/zookeeper345/bin/../zookeeper-3.4.5.jar:/home/conan/toolkit/zookeeper345/bin/../src/java/lib/*.jar:/home/conan/toolkit/zookeeper345/bin/../conf:2013-08-12 05:25:39,271 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/home/conan/toolkit/jdk16/jre/lib/amd64/server:/home/conan/toolkit/jdk16/jre/lib/amd64:/home/conan/toolkit/jdk16/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib2013-08-12 05:25:39,275 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp2013-08-12 05:25:39,276 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=2013-08-12 05:25:39,276 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux2013-08-12 05:25:39,277 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd642013-08-12 05:25:39,281 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=3.5.0-23-generic2013-08-12 05:25:39,282 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=conan2013-08-12 05:25:39,282 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/home/conan2013-08-12 05:25:39,283 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/home/conan/zoo2013-08-12 05:25:39,284 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=192.168.1.201 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@22ba6c83Welcome to ZooKeeper!JLine support is enabled[zk: 192.168.1.201(CONNECTING) 0] 2013-08-12 05:25:39,336 [myid:] - INFO  [main-SendThread(192.168.1.201:2181):ClientCnxn$SendThread@966] - Opening socket connection to server 192.168.1.201/192.168.1.201:2181. Will not attempt to authenticate using SASL (Unable to locate a login configuration)2013-08-12 05:25:39,345 [myid:] - INFO  [main-SendThread(192.168.1.201:2181):ClientCnxn$SendThread@849] - Socket connection established to 192.168.1.201/192.168.1.201:2181, initiating session2013-08-12 05:25:39,384 [myid:] - INFO  [main-SendThread(192.168.1.201:2181):ClientCnxn$SendThread@1207] - Session establishment complete on server 192.168.1.201/192.168.1.201:2181, sessionid = 0x1406f3c1ef90001, negotiated timeout = 30000WATCHER::WatchedEvent state:SyncConnected type:None path:null[zk: 192.168.1.201(CONNECTED) 0]

集群已连接,下面我们要使用一下,ZooKeeper的命令行操作。

命令行操作
通过help打印命令行帮助

[zk: 192.168.1.201(CONNECTED) 1] helpZooKeeper -server host:port cmd args        connect host:port        get path [watch]        ls path [watch]        set path data [version]        rmr path        delquota [-n|-b] path        quit        printwatches on|off        create [-s] [-e] path data acl        stat path [watch]        close        ls2 path [watch]        history        listquota path        setAcl path acl        getAcl path        sync path        redo cmdno        addauth scheme auth        delete path [version]        setquota -n|-b val path

ZooKeeper的结构,很像是目录结构,我们看到了像ls这样熟悉的命令。

#ls,查看/目录内容[zk: 192.168.1.201(CONNECTED) 1] ls /[zookeeper]#create,创建一个znode节点[zk: 192.168.1.201(CONNECTED) 2] create /node conanCreated /node#ls,再查看/目录[zk: 192.168.1.201(CONNECTED) 3] ls /[node, zookeeper]#get,查看/node的数据信息[zk: 192.168.1.201(CONNECTED) 4] get /nodeconancZxid = 0x100000006ctime = Mon Aug 12 05:32:49 CST 2013mZxid = 0x100000006mtime = Mon Aug 12 05:32:49 CST 2013pZxid = 0x100000006cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 5numChildren = 0#set,修改数据[zk: 192.168.1.201(CONNECTED) 5] set /node fens.mecZxid = 0x100000006ctime = Mon Aug 12 05:32:49 CST 2013mZxid = 0x100000007mtime = Mon Aug 12 05:34:32 CST 2013pZxid = 0x100000006cversion = 0dataVersion = 1aclVersion = 0ephemeralOwner = 0x0dataLength = 7numChildren = 0#get,再查看/node的数据信息,已改为fens.me[zk: 192.168.1.201(CONNECTED) 6] get /nodefens.mecZxid = 0x100000006ctime = Mon Aug 12 05:32:49 CST 2013mZxid = 0x100000007mtime = Mon Aug 12 05:34:32 CST 2013pZxid = 0x100000006cversion = 0dataVersion = 1aclVersion = 0ephemeralOwner = 0x0dataLength = 7numChildren = 0#delete,删除/node[zk: 192.168.1.201(CONNECTED) 7] delete /node[zk: 192.168.1.201(CONNECTED) 8] ls /[zookeeper]#quit,退出客户端连接[zk: 192.168.1.201(CONNECTED) 19] quitQuitting...2013-08-12 05:40:29,304 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x1406f3c1ef90002 closed2013-08-12 05:40:29,305 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@509] - EventThread shut down

5. Java编程现实命令行操作

package org.conan.zookeeper.demo;import java.io.IOException;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.ZooKeeper;public class BasicDemo1 {    public static void main(String[] args) throws IOException, KeeperException, InterruptedException {        // 创建一个与服务器的连接        ZooKeeper zk = new ZooKeeper("192.168.1.201:2181", 60000, new Watcher() {            // 监控所有被触发的事件            public void process(WatchedEvent event) {                System.out.println("EVENT:" + event.getType());            }        });        // 查看根节点        System.out.println("ls / => " + zk.getChildren("/", true));        // 创建一个目录节点        if (zk.exists("/node", true) == null) {            zk.create("/node", "conan".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);            System.out.println("create /node conan");            // 查看/node节点数据            System.out.println("get /node => " + new String(zk.getData("/node", false, null)));            // 查看根节点            System.out.println("ls / => " + zk.getChildren("/", true));        }        // 创建一个子目录节点        if (zk.exists("/node/sub1", true) == null) {            zk.create("/node/sub1", "sub1".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);            System.out.println("create /node/sub1 sub1");            // 查看node节点            System.out.println("ls /node => " + zk.getChildren("/node", true));        }        // 修改节点数据        if (zk.exists("/node", true) != null) {            zk.setData("/node", "changed".getBytes(), -1);            // 查看/node节点数据            System.out.println("get /node => " + new String(zk.getData("/node", false, null)));        }        // 删除节点        if (zk.exists("/node/sub1", true) != null) {            zk.delete("/node/sub1", -1);            zk.delete("/node", -1);            // 查看根节点            System.out.println("ls / => " + zk.getChildren("/", true));        }        // 关闭连接        zk.close();    }}

运行结果:

2013-08-12 15:33:29,699 [myid:] - INFO  [main:Environment@97] - Client environment:zookeeper.version=3.3.1-942149, built on 05/07/2010 17:14 GMT2013-08-12 15:33:29,702 [myid:] - INFO  [main:Environment@97] - Client environment:host.name=PC2013042021402013-08-12 15:33:29,702 [myid:] - INFO  [main:Environment@97] - Client environment:java.version=1.6.0_452013-08-12 15:33:29,702 [myid:] - INFO  [main:Environment@97] - Client environment:java.vendor=Sun Microsystems Inc.2013-08-12 15:33:29,702 [myid:] - INFO  [main:Environment@97] - Client environment:java.home=D:\toolkit\java\jdk6\jre2013-08-12 15:33:29,703 [myid:] - INFO  [main:Environment@97] - Client environment:java.class.path=D:\workspace\java\zkdemo\target\classes;C:\Users\Administrator\.m2\repository\org\apache\hadoop\zookeeper\3.3.1\zookeeper-3.3.1.jar;C:\Users\Administrator\.m2\repository\log4j\log4j\1.2.15\log4j-1.2.15.jar;C:\Users\Administrator\.m2\repository\javax\mail\mail\1.4\mail-1.4.jar;C:\Users\Administrator\.m2\repository\javax\activation\activation\1.1\activation-1.1.jar;C:\Users\Administrator\.m2\repository\jline\jline\0.9.94\jline-0.9.94.jar;C:\Users\Administrator\.m2\repository\junit\junit\3.8.1\junit-3.8.1.jar2013-08-12 15:33:29,703 [myid:] - INFO  [main:Environment@97] - Client environment:java.library.path=D:\toolkit\java\jdk6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:\toolkit\Rtools\bin;D:\toolkit\Rtools\gcc-4.6.3\bin;C:\Program Files (x86)\Common Files\NetSarang;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\toolkit\Git\cmd;D:\toolkit\Git\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Common Files\Ulead Systems\MPEG;C:\Program Files (x86)\QuickTime\QTSystem\;D:\toolkit\MiKTex\miktex\bin\x64\;D:\toolkit\sshclient;D:\toolkit\ant19\bin;D:\toolkit\eclipse;D:\toolkit\gradle15\bin;D:\toolkit\java\jdk6\bin;D:\toolkit\maven3\bin;D:\toolkit\mysql56\bin;D:\toolkit\python27;D:\toolkit\putty;C:\Program Files\R\R-3.0.1\bin\x64;D:\toolkit\mongodb243\bin;D:\toolkit\php54;D:\toolkit\nginx140;D:\toolkit\nodejs;D:\toolkit\npm12\bin;D:\toolkit\java\jdk6\jre\bin\server;.2013-08-12 15:33:29,703 [myid:] - INFO  [main:Environment@97] - Client environment:java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\2013-08-12 15:33:29,704 [myid:] - INFO  [main:Environment@97] - Client environment:java.compiler=2013-08-12 15:33:29,704 [myid:] - INFO  [main:Environment@97] - Client environment:os.name=Windows 72013-08-12 15:33:29,704 [myid:] - INFO  [main:Environment@97] - Client environment:os.arch=amd642013-08-12 15:33:29,705 [myid:] - INFO  [main:Environment@97] - Client environment:os.version=6.12013-08-12 15:33:29,705 [myid:] - INFO  [main:Environment@97] - Client environment:user.name=Administrator2013-08-12 15:33:29,705 [myid:] - INFO  [main:Environment@97] - Client environment:user.home=C:\Users\Administrator2013-08-12 15:33:29,706 [myid:] - INFO  [main:Environment@97] - Client environment:user.dir=D:\workspace\java\zkdemo2013-08-12 15:33:29,707 [myid:] - INFO  [main:ZooKeeper@373] - Initiating client connection, connectString=192.168.1.201:2181 sessionTimeout=60000 watcher=org.conan.zookeeper.demo.BasicDemo1$1@3dfeca642013-08-12 15:33:29,731 [myid:] - INFO  [main-SendThread():ClientCnxn$SendThread@1000] - Opening socket connection to server /192.168.1.201:21812013-08-12 15:33:38,736 [myid:] - INFO  [main-SendThread(192.168.1.201:2181):ClientCnxn$SendThread@908] - Socket connection established to 192.168.1.201/192.168.1.201:2181, initiating session2013-08-12 15:33:38,804 [myid:] - INFO  [main-SendThread(192.168.1.201:2181):ClientCnxn$SendThread@701] - Session establishment complete on server 192.168.1.201/192.168.1.201:2181, sessionid = 0x1406f3c1ef9000d, negotiated timeout = 60000EVENT:Nonels / => [zookeeper]EVENT:NodeCreatedEVENT:NodeChildrenChangedcreate /node conanget /node => conanls / => [node, zookeeper]EVENT:NodeCreatedcreate /node/sub1 sub1ls /node => [sub1]EVENT:NodeDataChangedget /node => changedEVENT:NodeDeletedEVENT:NodeChildrenChangedEVENT:NodeChildrenChangedls / => [zookeeper]2013-08-12 15:33:38,877 [myid:] - INFO  [main:ZooKeeper@538] - Session: 0x1406f3c1ef9000d closed

转载地址:http://invwn.baihongyu.com/

你可能感兴趣的文章
数据库的五种索引类型
查看>>
设计模式之原型模式
查看>>
设计模式之建造者模式
查看>>
设计模式之代理模式
查看>>
设计模式之门面模式
查看>>
设计模式之装饰器模式
查看>>
设计模式之享元模式
查看>>
设计模式之组合模式
查看>>
设计模式之委派模式
查看>>
设计模式之模板方法模式
查看>>
设计模式之策略模式
查看>>
设计模式之责任链模式
查看>>
怎么成为一个合格的ERP系统管理员
查看>>
企业为什么要用ERP
查看>>
ERP计划层次探讨
查看>>
ERP的五大核心思想
查看>>
ERP、PLM是什么意思?ERP、PLM有什么内在联系
查看>>
公司升级ERP管理系统的三大诱因
查看>>
Android四大应用组件(一)——Activity
查看>>
Spring5框架——IOC(基于xml配置文件)(一)
查看>>