zookeeper伪分布式配置安装

自己在学习实验zookeeper的时候通常都会是用一台机器进行伪分布式的实验,本篇文章主要是介绍安装步骤,其实安装部署特别简单但是还是存在一点坑的。

  1. 创建文件夹我的目录结果是:
    [root@VM_71_178_centos zookeeper]# pwd
    /usr/zookeeper
  2. 首先创建需要用到的文件夹(s1,s2,s3),
    [root@VM_71_178_centos zookeeper]# ls
    s1  s2  s3  zk  zookeeper-3.4.10.tar.gz

    (这里注意一点,zookeeper一般情况下部署都是采用奇数,为什么要奇数下面会介绍到)
  3. 下载zookeeper(wget  http://apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz)

  4. 解压
    tar -cvzf zookeeper-3.4.9.tar.gz -C zk 

  5. 进入zk/zookeeper-3.4.9/conf/文件夹中重命名zook.simple.cfg 为zook.cfg
  6. 将文件夹zookeeper-3.4.9复制三份分别到目录s1,s2,s3中
  7. 在s1,s2,s3中分别创建文件夹
    [root@VM_71_178_centos s1]# ls
    zkdata  zklog  zookeeper-3.4.10

  8. 分别修改s1,s2,s3中的zook.cfg配置文件。修改后内容如下:
  9. s1/zookeeper-3.4.10/conf/zook.cfg
  10. # 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.
    # do not use /tmp for storage, /tmp here is just
    # example sakes.
    dataDir=/usr/zookeeper/s1/zkdata
    dataLogDir=/usr/zookeeper/s1/zklog
    # the port at which the clients will connect
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389


  11. s2/zookeeper-3.4.10/conf/zook.cfg
  12. # 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.
    # do not use /tmp for storage, /tmp here is just
    # example sakes.
    dataDir=/usr/zookeeper/s2/zkdata
    dataLogDir=/usr/zookeeper/s2/zklog
    # the port at which the clients will connect
    clientPort=2182
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389
  13. s3/zookeeper-3.4.10/conf/zook.cfg
  14. # 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.
    # do not use /tmp for storage, /tmp here is just
    # example sakes.
    dataDir=/usr/zookeeper/s3/zkdata
    dataLogDir=/usr/zookeeper/s3/zklog
    # the port at which the clients will connect
    clientPort=2183
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1
    server.1=localhost:2287:3387
    server.2=localhost:2288:3388
    server.3=localhost:2289:3389

    
    
    
    
    
    
        
        
      配置文件解释
      • tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
      • dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
      • clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
      • initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 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。

      1. 分别在文件夹zkdata中创建文件myid文件内容为server.?=localhost:2287:3387中的?如下:s1文件夹下vi /usr/zookeeper/s1/zkdata/myid
      2. 1
        
      3. 分别进入相应zookeeper中bin目录分别启动
      4. [root@VM_71_178_centos bin]# ./zkServer.sh  start
      5. 查询状态是否成功
      6. [root@VM_71_178_centos bin]# ./zkServer.sh status
        ZooKeeper JMX enabled by default
        Using config: /usr/zookeeper/s1/zookeeper-3.4.10/bin/../conf/zoo.cfg
        Mode: follower
        


          几点问题:1。zook.cfg中dataDir路径一定要正确否则启动不成功,2.myid中一定要跟server.几对应否则也不成功
          为啥需要奇数机器:
          官网强烈建议部署zookeeper机器的数量是奇数的,原因在于ZooKeeper的选举机制,选票超过半数的机器才有可能成为Leader,因此当整个集群中只有两台服务器或者整个集群超过半数的机器都挂掉时,是无法选举出Leader的.其实这是一个集群资源利用最大化的问题,例如集群中有三个节点,允许挂掉一个节点,这时还剩余两个节点,超过半数;而集群中有四个节点时,最多也只能挂掉一个节点,因为如果再挂掉一个,整个集群就剩下两个节点,无法满足超过集群数的半数这个条件.综合来看两者的容灾能力是一样的


          
          
              
              
          评论
          添加红包

          请填写红包祝福语或标题

          红包个数最小为10个

          红包金额最低5元

          当前余额3.43前往充值 >
          需支付:10.00
          成就一亿技术人!
          领取后你会自动成为博主和红包主的粉丝 规则
          hope_wisdom
          发出的红包
          实付
          使用余额支付
          点击重新获取
          扫码支付
          钱包余额 0

          抵扣说明:

          1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
          2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

          余额充值