zoukankan      html  css  js  c++  java
  • ZooKeeper 安装、配置

    http://blog.csdn.net/franklysun/article/details/6424582


    如题本文介绍的是ZooKeeper 的安装和配置过程,此过程非常简单,关键是如何应用(将放在下节及相关节中介绍)。

     

    单机安装、配置:

     

    安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如:/home/frank/ZooKeeperInstall/zookeeper-3.3.3下。

     

    配置文件存放在/conf/目录下,将zoo_sample.cfd文件名称改为zoo.cfg,  缺省的配置内容如下:

     

     

    # The number of milliseconds of each tick

    tickTime=2000

    # The number of ticks that the initial 

    # synchronization phase can take

    initLimit=10

    # The number of ticks that can pass between 

    # sending a request and getting an acknowledgement

    syncLimit=5

    # the directory where the snapshot is stored.

    dataDir=/home/frank/ZooKeeperInstall /data     //这是我修改后的

    # the port at which the clients will connect

    clientPort=2181

     

     

     

     

    • tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
    • dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
    • clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

    当这些配置项配置好后,你现在就可以启动 Zookeeper 了:进入/bin目录  $ zkServer.sh start

    启动后要检查 Zookeeper 是否已经在服务,可以通过 netstat  – ano 命令查看是否有 clientPort 端口号在监听服务。

     

     

     

    集群安装、配置:

     

     

    Zookeeper 的集群模式的安装和配置也不是很复杂,所要做的就是增加几个配置项。集群模式除了缺省的配置项还要在zoo.cfg文件末尾增加集群中的机器ip、端口等:

     server.1=192.168.0.101:2888:3888 
     server.2=192.168.0.102:2888:3888 
    其中,在这里要用到缺省配置中的initLimit、syncLimit
    
    

     

     

    • initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
    • syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
    • server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

    除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。

     

    以上是在namenode的配置,用scp命令将namenode节点的的/home/frank/ZooKeeperInstall拷贝到其余所有主机的/home/frank目录下。

     

    最后,在所有节点上的/bin下执行 $ zkServer.sh start,分别启动。
    分别启动的过程中,会报异常:
    2011-05-16 15:07:21,171 - WARN  [WorkerSender Thread:QuorumCnxManager@384] - Cannot open channel to 1 at election address /192.168.0.103:3888
    java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
    at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:340)
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:360)
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:333)
    at java.lang.Thread.run(Thread.java:662)
    可以忽略,原因是还有节点没有启动zookeeper,全部启动之后,自然就不会出异常了。
    这时可以执行$ zkCli.sh -server xxx.xxx.xxx.xxx:2181,检查指定服务器是否成功启动。

     


  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    《EffectiveJava中文第二版》 高清PDF下载
    《MoreEffectiveC++中文版》 pdf 下载
    《啊哈c语言》 高清 PDF 下载
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4926801.html
Copyright © 2011-2022 走看看