zoukankan      html  css  js  c++  java
  • Zookepper 原理和配置

    http://agapple.iteye.com/blog/1292129

    http://www.blogjava.net/xylz/archive/2011/12/05/365578.html

    =============================================================================

    复制conf/zoo_sample.cfg文件为conf/zoo.cfg,修改其中的数据目录。

    # cat /opt/apps/zookeeper/conf/zoo.cfg  tickTime=2000 initLimit=5 syncLimit=2 dataDir=/opt/zkdata clientPort=2181 

    相关配置如下:

    ·   tickTime:这个时间作为Zookeeper服务器之间或者服务器与客户端之间维护心跳的时间,时间单位毫秒。

    ·   initLimit:选举leader的初始延时。由于服务器启动加载数据需要一定的时间(尤其是配置数据非常多),因此在选举 Leader后立即同步数据前需要一定的时间来完成初始化。可以适当放大一点。延时时间为initLimit*tickTime,也即此数值为 tickTime的次数。

    ·   syncLimit:此时间表示为Leader与Follower之间的最大响应时间单元,如果超时此时间(syncLimit*tickTime),那么Leader认为Follwer也即死掉,将从服务器列表中删除。

    如果是单机模式的话,那么只需要tickTime/dataDir/clientPort三个参数即可,这在单机调试环境很有效。

    集群环境配置

    增加其他机器的配置

    # cat /opt/apps/zookeeper/conf/zoo.cfg  tickTime=2000 initLimit=5 syncLimit=2 dataDir=/opt/zkdata clientPort=2181 server.1=10.11.5.202:2888:3888 server.2=192.168.105.218:2888:3888 server.3=192.168.105.65:2888:3888 

    其中server.X的配置是每一个机器的相关参数。X代表唯一序号,例如1/2/3等,值是IP:PORT:PORT。其中IP是 zookeeper服务器的IP地址或者域名,第一个PORT(例如2888)是服务器之间交换数据的端口,也即Follower连接Leader的端 口,而第二个端口(例如3888)是各服务器选举Leader的端口。单机配置集群的话可以通过不同的端口来实现。

    同步文件目录

    # rsync --inplace -vzrtLp --delete-after --progress /opt/apps/zookeeper root@192.168.105.218:/opt/apps # rsync --inplace -vzrtLp --delete-after --progress /opt/apps/zookeeper root@192.168.106.65:/opt/apps 

    建立每一个服务器的id

    注意,此id需要和zoo.cfg中的配置对应起来

    ssh root@10.11.5.202 'echo 1 > /opt/zkdata/myid' ssh root@192.168.105.218 'echo 2 > /opt/zkdata/myid' ssh root@192.168.106.65 'echo 3 > /opt/zkdata/myid' 

    启动服务器

    ssh root@10.11.5.202 '/opt/apps/zookeeper/bin/zkServer.sh start' ssh root@192.168.105.218 '/opt/apps/zookeeper/bin/zkServer.sh start' ssh root@192.168.106.65 '/opt/apps/zookeeper/bin/zkServer.sh start' 

    参考:http://hadoop.apache.org/zookeeper/docs/r3.3.1/zookeeperAdmin.html#sc_configuration

    ZooKeeper Server的行为受配置文件zoo.cfg的控制,zoo.cfg的设计目标是让所有服务器都可以使用相同的配置文件,如果需要使用不同的配置文件,需要保证关于cluster部分的参数相同。下面是具体的参数:

    最小必要配置的参数

    clientPort

    服务的监听端口

    dataDir

    用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)

    tickTime

    心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间

    高级配置参数

    dataLogDir

    用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争

    globalOutstandingLimit

    client请求队列的最大长度,防止内存溢出,默认值为1000

    preAllocSize

    预分配的Transaction log空间为block个proAllocSize KB,默认block为64M,一般不需要更改,除非snapshot过于频繁

    snapCount

    在snapCount个snapshot后写一次transaction log,默认值是100,000

    traceFile

    用于记录请求的log,打开会影响性能,用于debug的,最好不要定义

    maxClientCnxns

    最大并发客户端数,用于防止DOS的,默认值是10,设置为0是不加限制

    clientPortBindAddress

    3.3.0后新增参数,可是设置指定的client ip以及端口,不设置的话等于ANY:clientPort

    minSessionTimeout

    3.3.0后新增参数,最小的客户端session超时时间,默认值为2个tickTime,单位是毫秒

    maxSessionTimeout

    3.3.0后新增参数,最大的客户端session超时时间,默认值为20个tickTime,单位是毫秒

    集群参数

    electionAlg

    用于选举的实现的参数,0为以原始的基于UDP的方式协作,1为不进行用户验证的基于UDP的快速选举,2为进行用户验证的基于UDP的快速选举,3为基于TCP的快速选举,默认值为3

    initLimit

    多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值

    leaderServes

    leader是否接受客户端连接。默认值为yes。 leader负责协调更新。当更新吞吐量远高于读取吞吐量时,可以设置为不接受客户端连接,以便leader可以专注于同步协调工作。默认值是yes,说明leader可以接受客户端连接。(注意:当集群中有超过3台ZooKeeper Server时,强烈建议打开leader选举)

    server.x=[hostname]:nnnnn[:nnnnn], etc

    配置集群里面的主机信息,其中server.x的x要写在myid文件中,决定当前机器的id,第一个port用于连接leader,第二个用于leader选举。如果electionAlg为0,则不需要第二个port。hostname也可以填ip。

    syncLimit

    多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃。

    group.x=nnnnn[:nnnnn]

    weight.x=nnnnn

  • 相关阅读:
    spring boot 2.0.3+spring cloud (Finchley)2、搭建负载均衡Ribbon (Eureka+Ribbon+RestTemplate)
    spring boot 2.0.3+spring cloud (Finchley)1、搭建服务注册和发现组件Eureka 以及构建高可用Eureka Server集群
    windows下安装redis
    Spring注解@Resource和@Autowired的区别
    spring常用管理bean注解
    maven中package和install命令的区别
    SpringBoot打war包并部署到tomcat下运行
    使用jquery.qrcode生成二维码及常见问题解决方案
    动态生成二维码插件 jquery.qrcode.js
    Notepad++的列编辑功能
  • 原文地址:https://www.cnblogs.com/dkblog/p/2570358.html
Copyright © 2011-2022 走看看