zoukankan      html  css  js  c++  java
  • 安装zookeeper(单机,伪集群)

     

     1.登陆zookeeper官网下载 https://zookeeper.apache.org/

    zookeeper-3.4.8.tar.gz

    解压:tar -zxvf zookeeper-3.4.8.tar.gz

    1.单机

    进入conf文件夹 创建一个配置文件zoo.cfg。

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/usr/local/zookeeper/zk/data
    clientPort=2181

    前提创建了/usr/local/zookeeper/zk/data文件夹

     

     tickTime:Zookeeper 服务器之间或客户端与服务器之间心跳的时间间隔。
    dataDir:Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
    clientPort:Zookeeper 服务器监听端口,用来接受客户端的访问请求。

    配置完以后,就可以启动zookeeper服务了,进入Zookeeper/bin目录,运行下面的命令来启动Zookeeper服务

    [root@localhost bin]# ./zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /usr/local/software/zookeeper-3.4.8/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED

    默认加载conf名为 zoo.cfg文件,或者可以这样指定文件

    [root@localhost bin]# ./zkServer.sh start ../conf/zoo.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo.cfg
    Starting zookeeper ... STARTED

    查看服务状态

    ./zkServer.sh status ../conf/zoo.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo.cfg
    Mode: standalone

     使用Zookeeper的客户端来连接并测试了

    $ ./zkCli.sh  
    或  
    $ ./zkCli.sh -server 127.0.0.1:2181 

    连接之后可以时候help来查看有哪些命令可以使用

     

    [zk: 127.0.0.1:2181(CONNECTED) 0] ls / #查看根节点  
    [zookeeper]  
       
    [zk: 127.0.0.1:2181(CONNECTED) 1] create /mykey1 myvalue1 #创建一个新节点mykey1  
    Created /mykey1  
    [zk: 127.0.0.1:2181(CONNECTED) 2] create /mykey2 myvalue2 #创建一个新节点mykey2  
    Created /mykey2  
       
    [zk: 127.0.0.1:2181(CONNECTED) 13] ls / #查看根节点  
    [mykey1, mykey2, zookeeper]  
       
    [zk: 127.0.0.1:2181(CONNECTED) 23] get /mykey1 #获取mykey1节点  
    myvalue1  
    cZxid = 0x6  
    ctime = Sat Sep 20 21:00:17 CST 2014  
    mZxid = 0x8  
    mtime = Sat Sep 20 21:01:06 CST 2014  
    pZxid = 0x6  
    cversion = 0  
    dataVersion = 1  
    aclVersion = 0  
    ephemeralOwner = 0x0  
    dataLength = 9  
    numChildren = 0  
       
    [zk: 127.0.0.1:2181(CONNECTED) 23] get /mykey2 #获取mykey2节点  
    myvalue2  
    cZxid = 0x6  
    ctime = Sat Sep 20 21:00:17 CST 2014  
    mZxid = 0x8  
    mtime = Sat Sep 20 21:01:06 CST 2014  
    pZxid = 0x6  
    cversion = 0  
    dataVersion = 1  
    aclVersion = 0  
    ephemeralOwner = 0x0  
    dataLength = 9  
    numChildren = 0  
       
    [zk: 127.0.0.1:2181(CONNECTED) 24] set /mykey1 myvalue11 #获取mykey1节点  
    [zk: 127.0.0.1:2181(CONNECTED) 25] set /mykey2 myvalue22 #获取mykey2节点  
       
    [zk: 127.0.0.1:2181(CONNECTED) 26] set /mykey1 #删除mykey1节点  
    [zk: 127.0.0.1:2181(CONNECTED) 27] set /mykey2 #删除mykey2节点  


     2.集群

    注意事项

    在一台机器上部署了3个server,需要注意的是在集群为分布式模式下我们使用的每个配置文档模拟一台机器,也就是说单台机器及上运行多个Zookeeper实例。但是,必须保证每个配置文档的各个端口号不能冲突,除了clientPort不同之外,dataDir也不同。另外,还要在dataDir所对应的目录中创建myid文件来指定对应的Zookeeper服务器实例。

    ■ clientPort端口:如果在1台机器上部署多个server,那么每台机器都要不同的 clientPort,比如 server1是2181,server2是2182,server3是2183

    ■ dataDir和dataLogDir:dataDir和dataLogDir也需要区分下,将数据文件和日志文件分开存放,同时每个server的这两变量所对应的路径都是不同的

    ■ server.X和myid: server.X 这个数字就是对应,data/myid中的数字。在3个server的myid文件中分别写入了0,1,2,那么每个server中的zoo.cfg都配 server.0 server.2,server.3就行了。因为在同一台机器上,后面连着的2个端口,3个server都不要一样,否则端口冲突

     ---------------------------------------------

    新建3个配置文件

    内容如下

     zoo1.cfg

     第二个端口是投票选举用的端口  第一个 leader和follow交换信息端口

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/usr/local/zookeeper/zk1/data
    clientPort=2182
    dataLogDir=/usr/local/zookeeper/zk1/logs
    
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389

    zoo2.cfg

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/usr/local/zookeeper/zk2/data
    clientPort=2183
    dataLogDir=/usr/local/zookeeper/zk2/logs
    
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389

    zoo3.cfg

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/usr/local/zookeeper/zk3/data
    clientPort=2184
    dataLogDir=/usr/local/zookeeper/zk3/logs
    
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389

     每个实例都初始化相应data和log文件,例如zoo1.cfg的

    启动  zoo1.cfg ,好像成功了

    [root@localhost bin]# ./zkServer.sh start ../conf/zoo1.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo1.cfg
    Starting zookeeper ... STARTED

    查看状态发现,没成功

    [root@localhost bin]# ./zkServer.sh status ../conf/zoo1.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo1.cfg
    Error contacting service. It is probably not running.

    应该就是zoo1.cfg出错了,原来是配置文件有错误,要么路径错,要么mypid错了

    zoo.cfg配置文件里dataDir指定的那个目录下创建myid文件,并且指定id,改id为你zoo.cfg文件中server.1=localhost:2888:3888中的    1.只要在myid头部写入1即可.

     

    vim myid

     同理,为其他两个实例是指myid

    在运行完第一条指令之后,会出现一些错误异常,产生异常信息的原因是由于Zookeeper 服务的每个实例都拥有全局配置信息,他们在启动的时候会随时随地的进行Leader选举操作。此时,第一个启动的Zookeeper需要和另外两个 Zookeeper实例进行通信。但是,另外两个Zookeeper实例还没有启动起来,因此就产生了这的异样信息。我们直接将其忽略即可,待把图中“2 号”和“3号”Zookeeper实例启动起来之后,相应的异常信息自然会消失。此时,可以通过下面三条命令,来查询。

    [root@localhost bin]# ./zkServer.sh start ../conf/zoo1.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo1.cfg
    Starting zookeeper ... STARTED
    [root@localhost bin]# ./zkServer.sh status ../conf/zoo1.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo1.cfg
    Error contacting service. It is probably not running.
    [root@localhost bin]# ./zkServer.sh start ../conf/zoo2.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo2.cfg
    Starting zookeeper ... STARTED
    [root@localhost bin]# ./zkServer.sh status ../conf/zoo2.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo2.cfg
    Mode: leader
    [root@localhost bin]# ./zkServer.sh status ../conf/zoo1.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo1.cfg
    Mode: follower
    [root@localhost bin]# ./zkServer.sh start ../conf/zoo3.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo3.cfg
    Starting zookeeper ... STARTED
    [root@localhost bin]# ./zkServer.sh status ../conf/zoo3.cfg 
    ZooKeeper JMX enabled by default
    Using config: ../conf/zoo3.cfg
    Mode: follower

    成功


    一些命令

    启动
    ./zkServer.sh start ../conf/zoo1.cfg
    停止
    ./zkServer.sh stop ../conf/zoo1.cfg
    查看状态
    ./zkServer.sh status ../conf/zoo1.cfg
    启动客户端
    ./zkCli.sh -server 127.0.0.1:2181 

     转自 https://www.cnblogs.com/crazylqy/p/7119030.html

  • 相关阅读:
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 695 岛屿的最大面积(DFS)
    Java实现 LeetCode 695 岛屿的最大面积(DFS)
    PHP serialize() 函数
    PHP print_r() 函数
  • 原文地址:https://www.cnblogs.com/brady-wang/p/13488571.html
Copyright © 2011-2022 走看看