美文网首页
搭建zookeeper集群

搭建zookeeper集群

作者: 大饼啊饼 | 来源:发表于2020-04-23 14:30 被阅读0次

    Zookeeper是一个高性能,分布式的,开源分布式应用协调服务 。Zookeeper 有三种部署模式:

    1. 单机部署:一台集群上运行;

    2. 集群部署:多台集群运行;

    3. 伪集群部署:一台集群启动多个 Zookeeper 实例运行。

    zookeeper集群搭建:

    1、准备java环境

    https://juejin.im/post/5ba888d4e51d450e8d766cfa

    2、下载 解压

    下载 zookeeper-3.6.0.tar.gz 到指定目录:

    wget -P /usr/local/soft https://archive.apache.org/dist/zookeeper/zookeeper-3.6.0/

    3、创建文件目录

    cd /usr/local/soft/zookeeper

    mkdir data

    mkdir logs

    4、创建myid文件

    cd /usr/local/soft/zookeeper/data

    vi myid

    5、修改配置

    cd  /usr/local/soft/zookeeper/apache-zookeeper-3.6.0/conf

    将 zookeeper-3.4.12/conf 目录下的 zoo_sample.cfg 文件拷贝一份,命名为 zoo.cfg

    cp zoo_sample.cfg zoo.cfg

    修改 zoo.cfg 文件配置

    dataLogDir=/usr/local/soft/zookeeper/logs

    dataDir=/usr/local/soft/zookeeper/data

    tickTime=2000

    initLimit=10

    syncLimit=5

    autopurge.snapRetainCount=10

    autopurge.purgeInterval=1

    clientPort=2181

    server.1=IP1:2881:3881

    server.2=IP2:2882:3882

    server.3=IP3:2883:3883

    参数说明:

    tickTime=2000

    Zookeeper最小时间单元,单位为ms,默认值为3000。也就是Leader与Follower每隔tickTime时间就会发送一个心跳。

    initLimit=10

    Leader服务器等待Follower启动并完成数据同步的时间,默认值10。当已经超过10*tickTime后,Leader还没有收到Follower的返回信息,那么表明这个Follower连接或同步失败。

    syncLimit=5

    Leader服务器和Follower之间进行心跳检测的最大延时时间,默认值5,最长不能超过5*tickTime

    dataDir=/home/{$user}/zookeeper/zookeeper-3.4.12/data

    存放内存数据结构的snapshot,便于快速恢复,默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能。

    dataLogDir=/home/{$user}/zookeeper/zookeeper-3.4.12/data

    dataLogDir事务日志输出目录。为了达到性能最大化,一般建议把dataDir和dataLogDir分到不同的磁盘上,这样就可以充分利用磁盘顺序写的特性。

    autopurge.purgeInterval, autopurge.snapRetainCount

    客户端在与zookeeper交互过程中会产生非常多的日志,而且zookeeper也会将内存中的数据作为snapshot保存下来,这些数据是不会被自动删除的,这样磁盘中这样的数据就会越来越多。不过可以通过这两个参数来设置,让zookeeper自动删除数据。

    autopurge.purgeInterval:指定自动清理快照文件和事务日志文件的时间,单位为h,默认为0表示不自动清理,这个时候可以使用脚本zkCleanup.sh手动清理。如果不清理则磁盘空间占用越来越大。

    autopurge.snapRetainCount:用于指定保留快照文件和事务日志文件的个数,默认为3。

    不过如果你的集群是一个非常繁忙的集群,然后又碰上这个删除操作,可能会影响zookeeper集群的性能,所以一般会让这个过程在访问低谷的时候进行,但是遗憾的是zookeeper并没有设置在哪个时间点运行的设置,所以有的时候我们会禁用这个自动删除的功能,而在服务器上配置一个cron,然后在凌晨来干这件事。

    clientPort=2181

    顾名思义,就是客户端连接zookeeper服务的端口。这是一个TCP port。

    server.id=IP/Host:port1:port2

    id:用来配置ZK集群中的各节点,并建议id的值和myid保持一致。

    IP/Host: 服务器的 IP 或者是与 IP 地址做了映射的主机名

    port1:Leader和Follower或Observer交换数据使用

    port2:用于Leader选举

    注意:如果是伪集群的配置方式,不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

    maxClientCnxns

    对于一个客户端的连接数限制,默认是60,这在大部分时候是足够了。

    但是在我们实际使用中发现,在测试环境经常超过这个数,经过调查发现有的团队将几十个应用全部部署到一台机器上,以方便测试,于是这个数字就超过了

    minSessionTimeout, maxSessionTimeout

    一般,客户端连接zookeeper的时候,都会设置一个session timeout,如果超过这个时间client没有与zookeeper server有联系,则这个session会被设置为过期(如果这个session上有临时节点,则会被全部删除,这就是实现集群感知的基础,后面的文章会介绍这一点)。

    但是这个时间不是客户端可以无限制设置的,服务器可以设置这两个参数来限制客户端设置的范围。

    6、开放防火墙端口

    在防火墙中打开要用到的端口 2181、2881、3881

    参考博客

    https://juejin.im/post/5ba879ce6fb9a05d16588802#heading-4

    相关文章

      网友评论

          本文标题:搭建zookeeper集群

          本文链接:https://www.haomeiwen.com/subject/cyakkqtx.html