• Zookeeper集群搭建


    介绍:

      通过Docker搭建Zookeeper集群,本文在一台机器上搭建zk集群(伪集群),说是伪集群是因为没有实现在多台服务器上搭建,但是从另一个角度来说,这确实也是一个真正的集群,因为使用Docker容器化技术。

    实现过程:

      步骤:

        1.首先在docker里拉取Zookeeper镜像

    docker pull zookeeper:3.4.14  #这里没有拉取最新版,在实验时我拉取了最新版,出了一些问题

         2.构建docker-compose.yml,创建在/usr/local下创建docker目录,用于构建docker-compose.yml,在docker目录下创建zookeeper目录(创建的这些目录更具自己的习惯来定)

    version: '3.1'
    services:
        zoo1:
            image: zookeeper:3.4.14    #这里要指明版本,不然运行的时候docker回去拉取最新的zookeeper版本运行
            restart: always
            hostname: zoo1  #主机名,这里是模拟,所以使用主机名(局域网内可以通过主机名进行互通)
            ports:
                - 2181:2181  
            environment:
                ZOO_MY_ID: 1
                ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
    
        zoo2:
            image: zookeeper:3.4.14
            restart: always
            hostname: zoo2
            ports:
                - 2182:2181
            environment:
                ZOO_MY_ID: 2
                ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
    
        zoo3:
            image: zookeeper:3.4.14
            restart: always
            hostname: zoo3
            ports:
                - 2183:2181
            environment:
                ZOO_MY_ID: 3
                ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

         3.运行docker-compose(需要安装docker-compose,下面说)

    docker-compose up -d

         4.运行成功后进入容器查看情况

    docker exec -it  容器ID  bash

         5.进入各容器查看那个是Leader , 那个是Follower

    #进入到容器内部ZK的bin目录
    ./zkServer.sh status

         Zookeeper集群模式配置文件(conf/zoo.cfg)

    clientPort=2181
    dataDir=/data
    dataLogDir=/datalog
    tickTime=2000
    initLimit=5
    syncLimit=2
    autopurge.snapRetainCount=3
    autopurge.purgeInterval=0
    maxClientCnxns=60
    server.1=192.168.0.1:2888:3888
    server.2=192.168.0.2:2888:3888
    server.3=192.168.0.3:2888:3888

      initLimit:配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 initLimit(默认为 10) 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5 * 2000 = 10 秒

      syncLimit:配置 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2 * 2000 = 4 秒

    定时清理(Zookeeper 从 3.4.0 开始提供了自动清理快照和事务日志的功能)以下两个参数配合使用:

      autopurge.purgeInterval:指定了清理频率,单位是小时,需要填写一个 1 或更大的整数,默认是 0,表示不开启自己清理功能。

      autopurge.snapRetainCount:指定了需要保留的文件数目。默认是保留 3 个。

      maxClientCnxns:限制连接到 Zookeeper 的客户端的数量,限制并发连接的数量,它通过 IP 来区分不同的客户端。此配置选项可以用来阻止某些类别的 Dos 攻击。将它设置为 0 或者忽略而不进行设置将会取消对并发连接的限制。

      server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器。B 是这个服务器的 IP 地址。C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口(2888);D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口(3888)。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

        ZK常用命令

    ./zkServer .sh start   #启动服务
    
    ./zkServer .sh stop   #停止服务
    
    ./zkServer .sh restart  #重启服务
    
    ./zkServer .sh status   #服务状态

     

      安装docker-compose

         Docker Compose 是一个用来定义和运行复杂应用的 Docker 工具。
    使用 Docker Compose 不再需要使用 shell 脚本来启动容器。(通过 docker-compose.yml 配置)

          Github源  

    curl -L https://github.com/docker/compose/releases/download/1.23.0-rc3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

          给予权限

    chmod +x /usr/local/bin/docker-compose

        

    生命不止,折腾不息
  • 相关阅读:
    web.xml中<web-app>报错
    groovy初体验:groovy在java中的应用
    Mac安装JMeter时Unable to access jarfile ./ApacheJMeter.jar 解决方法
    intellij idea中解决java.lang.VerifyError: Expecting a stackmap frame at branch target的方法
    关于go get无法安装国内被墙软件解决办法
    Oracle 序列
    无锁并发框架Disruptor学习入门
    vsftp服务器部署
    FinalShell 推荐
    supperset (python 2.7.12 + mysql)记录
  • 原文地址:https://www.cnblogs.com/steakliu/p/11837641.html
Copyright © 2020-2023  润新知