• 运行复制的ZooKeeper 部署


    运行复制的ZooKeeper
    
    
    运行ZooKeeper 在一个独立模式下是方便评估的, 一些开发,和测试。
    
    但是在生产,你应该运行ZooKeeper 在复制模式。一个复制的servers group 在相同应用是被称为
    
    quorum(冲裁),在一个复制模式,所有的servers在冲裁有相同的配置文件的拷贝
    
    
    对于复制模式, 至少需要3台机器, 并强烈推荐你有一个奇数的服务器。
    
    
    如果你只有2个servers, 如果你是在这种情况下 如果其中一个故障,没有足够的机器来形成一个多数的冲裁。
    
    2个server 是天生不稳定的 相比一个单一的server,
    
     因为有两个单点故障。
    
    
    所需要的conf/zoo.cfg 文件对于复制模式是类似于在独立模式下,但是也有一些区别:
    
    tickTime=2000
    dataDir=/var/lib/zookeeper
    clientPort=2181
    initLimit=5
    syncLimit=2
    server.1=zoo1:2888:3888
    server.2=zoo2:2888:3888
    server.3=zoo3:2888:3888
    
    
    新的条目,initLimit=5 是超时时间 ZooKeeper 使用来限制
    
    ZooKeeper servers  在冲裁去连接leader的限制的时间长度。
    
    	
    Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在initLimit时间内完成这个
    
    工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会
    
    相应变长,因此在这种情况下,有必要适当调大这个参数了。(No Java system property)
    
    
    
    
    条目syncLimit=2 限制
    
    在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活
    状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。注意
    :不要把这个参数设置得过大,否则可能会掩盖一些问题。(No Java system property)
    
    
    所有这些超时, 你指定的时间单位是使用tickTime. 
    
    在这个例子中,timeout 对于initLimit  是5个 ticks 5 *2000 ,10秒
    
    
    最后, 注意2个端口号 在每个server name  " 2888" and "3888". 
    
    
    tickTime=2000
    initLimit=5
    syncLimit=2
    dataDir=xxxx/zookeeper/server1/data
    dataLogDir=xxx/zookeeper/server1/dataLog
    clientPort=2181
    server.1=127.0.0.1:2888:3888
    server.2=127.0.0.1:2889:3889
    server.3=127.0.0.1:2890:3890
    
    标红的几个配置应该官网讲得很清楚了,只是需要注意的是clientPort这个端口如果你是在1台机器上部署多个server,那么每台机器都要不
    
    同的clientPort,比如我server1是2181,server2是2182,server3是2183,dataDir和dataLogDir也需要区分下。 
    
    
    
    对等使用前面的端口连接到其他对等(peers).
    
    
    比如一个连接是需要,以便peers可以连接。
    
    比如,同意更新的顺序。 更具体说,
    
    
    一个 ZooKeeper server 使用这个端口来连接followers  到leader.
    
    
    当一个新的leader 出现,一个follwer 打开一个TCP 连接到leader 使用这个端口。
    
    
    
    因为默认的leader 选取也使用TCP,我们当前需要另外的端口用于leader 选取,这个第2个端口在服务器的入口
    
    
    
    如果你需要测试不同的server 在一个单独的机器上, 指定servername 作为本地 使用一个唯一的冲裁 
    
    leader 选举端口(2888:3888, 2889:3889, 2890:3890 in the example above) 对于每个服务器
    
    当然单位的dataDirs  和不同的clientPorts 也需要

  • 相关阅读:
    布局及视图(三)
    笔试中的编程题2
    布局及视图(四)
    SoftReference,WeakReference&WeakHashMap
    Android自用 监测网络是否可用
    Android自用 加载png图片时出错!
    Android访问权限大全
    笔试中的编程题3
    如何全面的把握一个系统的异常处理
    从程序的控制逻辑看线程的三种应用模式
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199603.html
Copyright © 2020-2023  润新知