• Linux搭建单机多进程zookeeper集群


    01 ZooKeeper是什么

    ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

    分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

    02 ZooKeeper集群搭建

    需要先安装配置好java环境

    安装包下载地址:

    https://archive.apache.org/dist/zookeeper/

    选择stable稳定版本,目前是3.5.8的稳定版本

    1、下载安装包

    wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.8-bin.tar.gz
    
    • 1

    2、搭建三个集群节点,即三个ZooKeeper服务,新建三个文件夹

    mkdir zookeeper1
    
    mkdir zookeeper2
    
    mkdir zookeeper3
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、将安装包复制到上述三个文件夹,分别解压

    tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz
    
    • 1

    解压后的目录:

    • bin 执行脚本
    • conf 配置文件
    • docs 文档
    • lib jar包

    4、进入conf目录,ZooKeeper提供了一个配置文件示例zoo_sample.cfg,复制该文件

    cpzoo_sample.cfg zoo1.cfg
    
    • 1

    其余两个zookeeper文件夹中进行同样的操作,文件名改为zoo2.cfg,zoo3.cfg

    该配置文件中共5个参数:

    tickTime:通信心跳时间

    服务器之间或客户端与服务器之间维持心跳的时间间隔,毫秒级,ZK基本上所有的时间都是这个时间的整数倍。

    initLimit:初始通信时限

    集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数

    syncLimit:同步通信时限

    集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数

    dataDir:数据文件目录

    内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个 路径下,建议两个地址分开存放到不同的设备上

    clientPort:客户端连接端口

    zookeeper会监听这个端口,接收客户端的访问请求

    需要修改的参数:

    dataDir 数据文件目录,分别使用/tmp/zookeeper1,/tmp/zookeeper2,/tmp/zookeeper3

    clientPort 客户端连接端口,每个zookeeper服务要启动在不同的端口,避免冲突,分别使用2181,2182,2183

    需要增加的配置参数:server.x

    server.1=127.0.0.1:3001:4001
    
    server.2=127.0.0.1:3002:4002
    
    server.3=127.0.0.1:3003:4003
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这个三行配置在三个zookeeper配置中都是一样的,粘贴过去即可

    该项配置的规则如下:

    格式server.n=A:B:C

    统一前缀,“server.”;

    "server."后面的数字n表示机器的id(序号),不重复,需要在dataDir目录下新建myid文件,写入这个值

    A表示集群中zk机器的ip;

    B表示Zk集群中,follower与leader通信的端口;

    C表示当leader宕机时,各follower选举新leader的通信端口;

    配置信息如下:

    在这里插入图片描述

    按上述表格所示在tmp文件夹下新建zookeeper1,zookeeper2,zookeeper3文件夹,创建myid文件并写入配置文件中server.n中的n的值到该文件

    mkdir zookeeper1
    
    touch myid
    
    echo 1 > myid
    
    • 1
    • 2
    • 3
    • 4
    • 5

    其余两个做相同操作,myid值分别为2和3

    配置完成,三个配置文件的内容如下:

    zoo1.cfg

    tickTime = 2000
    
    initLimit = 10
    
    syncLimit = 5
    
    dataDir = /tmp/zookeeper1
    
    clientPort = 2181
         
    server.1 = 127.0.0.1:3001:4001
    
    server.2 = 127.0.0.1:3002:4002
    
    server.3 = 127.0.0.1:3003:4003
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    zoo2.cfg

    tickTime = 2000
    
    initLimit = 10
    
    syncLimit = 5
    
    dataDir = /tmp/zookeeper2
    
    clientPort = 2182
         
    server.1 = 127.0.0.1:3001:4001
    
    server.2 = 127.0.0.1:3002:4002
    
    server.3 = 127.0.0.1:3003:4003
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    zoo3.cfg

    tickTime = 2000
    
    initLimit = 10
    
    syncLimit = 5
    
    dataDir = /tmp/zookeeper3
    
    clientPort = 2183
         
    server.1 = 127.0.0.1:3001:4001
    
    server.2 = 127.0.0.1:3002:4002
    
    server.3 = 127.0.0.1:3003:4003
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    启动zookeeper服务

     ./zkServer.sh start /usr/zookeeper1/apache-zookeeper-3.5.8-bin/conf/zoo1.cfg
    
    ./zkServer.sh start /usr/zookeeper2/apache-zookeeper-3.5.8-bin/conf/zoo2.cfg
    
     ./zkServer.sh start /usr/zookeeper3/apache-zookeeper-3.5.8-bin/conf/zoo3.cfg
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意:start后面要指定当前使用的配置文件

    运行zookeeper命令行客户端

    ./zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
    
    • 1

    查看节点状态

    ./zkServer.sh status /usr/zookeeper2/apache-zookeeper-3.5.8-bin/conf/zoo2.cfg
    
    • 1

    在这里插入图片描述

    2号节点为Leader节点,1,3号节点为follower节点

    集群搭建完成

    03 集群节点个数最好是奇数个

    zookeeper有这样一个特性:

    集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。

    假设:一个集群有n个节点,宕机x个节点,那么要保证整个集群仍然可用就要满足不等式:n -x > n/2,即n > 2x
    所以n可以取2x + m (m可以取1,2,3,4,5 …)
    n的最小值是2x + 1

    所以最节约服务器资源的配置是奇数个节点

    如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


    资源分享

    下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    今日分享一个软件测试刷题小程序,面试题一千+了,刷完还怕面试不过吗?
    安装Docker(Linux:CentOS)
    在企业级开发过程中我发现有位同事用select * from where 条件 for update
    Linux 漏洞处理
    棱镜七彩正式成为openchain项目官方工具合作伙伴
    vuInhub靶场实战系列--Kioptrix Level #4
    第七章:Sysml之序列图
    消息称苹果或在明年推出搭载M3芯片的MacBook产品
    UDS服务基础篇之14
    英语语法基础--思维导图
  • 原文地址:https://blog.csdn.net/m0_67695717/article/details/128185856