zoukankan      html  css  js  c++  java
  • zookeeper集群搭建

     

    一、zookeeper集群搭建

    下载zookeeper

    wget http://download.o2o.idohoo.com/zookeeper-3.4.8.tar.gz

    1、部署规划

    A、zookeeper服务(java):

    1号机:10.10.14.212

    2号机:10.10.14.213

    3号机:10.10.14.214

    端口:2181

    B、 以上三台机器能互相访问2888、3888、2181端口

     

    2、安装

    2.1下载安装包

    通过”wget http://download.o2o.idohoo.com/zookeeper-3.4.8.tar.gz获取安装包(具体包的版本根据具体情况下载)

    2.2 安装

    解压到/data/services/目录,进入目录

    cd /data/services

    tar –zxvf /data/download/zookeeper-3.4.8.tar.gz –C .

    3、配置

    3.1 新建myid文件(分别在212213214三台机上执行)

    在“/data/services/zookeeper/data”目录下新建myid文件,编辑server对应ID信息,并保存,每台zookeeper服务机器改文件不同(每台机器都要加,ID不一样)

    没此目录的话创建目录mkdir /data/services/zookeeper/data

    1号机(212)echo 1 >/data/services/zookeeper/data/myid

    2号机(213)echo 2 >/data/services/zookeeper/data/myid

    3号机(214)echo 3 >/data/services/zookeeper/data/myid

     3.2 配置文件修改

    zookeeper配置文件路径:/data/services/zookeeper/conf

    cp zoo_sample.cfg zoo.cfg

    vi zoo.cfg

    添加配置:

    tickTime=2000

    initLimit=10

    syncLimit=5

    dataDir=/data/services/zookeeper-3.4.8/

    clientPort=2181

    server.1=10.10.14.212:2008:6008

    server.2=10.10.14.213:2008:6008

    server.3=10.10.14.214:2008:6008

    这个tickTime时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间隔,也就是每到tickTime时间2秒的时候就会发送一个心跳。

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

    syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。

    DataDir是保存数据的路径

    lientPort这个端口开放来给客户端(应用程序)连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求。

    server.1 server.2 server.3这些是标记是第几号服务器,集群中的每台ZK server都会有一个用于惟一标识自己的id,有两个地方会使用到这个idmyid文件和zoo.cfg文件中。myid文件存储在dataDir目录中,指定了当前serverserver id。在zoo.cfg文件中,根据server id,配置了每个serverip和相应端口。Zookeeper启动的时候,读取myid文件中的server id,然后去zoo.cfg 中查找对应的配置。2008第一个端口用来集群成员的信息交换,标识这个服务器与集群中的leader服务器交换信息的端口6008是在leader挂掉时专门用来进行选举leader所用的端口

     3.3 配置zookeeper的java虚拟机内存(因为不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率,所以一般最好只有与java程序有关的都配置jvm启动参数,可以防止内存溢出,不配置的话会以默认的256k去防止内存溢出)          在/data/services/zookeeper/bin目录下添加java.env文件

    cd /data/services/zookeeper/bin

    vi java.env

    内容:

    #!/bin/bash

    export JVMFLAGS="-Xms1024m -Xmx1024m $JVMFLAGS"          

    #-Xms为启动时分配内存,-Xmx为最大内存

    4、启动

    每机器都启动

    sh /data/services/zookeeper/bin/zkServer.sh start

    5、状态查看

    sh  /data/services/zookeeper/bin/zkServer.sh status

     

    二、zookeeper集群测试(3台服务器只允许一台故障)

    目前因为要与测试环境一致,所以只启动一台zookeeper212,就不启动三台zookeeper,如果需要启动三台zookeeper,而且由于ZooKeeper集群,会有一个Leader负责管理和协调其他集群服务器,因此服务器的数量通常都是奇数,例如3,5,7...等,这样2n+1的数量的服务器就可以允许最多n台服务器的失效。操作步骤如下:

    1、先查看各个服务器的状态(三台的话一台leader二台follower)

    命令

    目录:cd /data/services/zookeeper/bin

    sh zkServer.sh status

    集群的情况下就是以下这种情况

    独立模式情况下

    https://www.cnblogs.com/freeweb/p/5216168.html  #zookeeper常用的操作命令

    https://www.cnblogs.com/raphael5200/p/5285583.html  #zookeeper原理

    https://www.cnblogs.com/z-sm/p/5691752.html   #独立模式和负责模式

    2、功能测试,数据同步。 查看三台机器数据是否同步

    2.1 创建node

    每台机器输入

    Sh zkCli.sh -server 127.0.0.1:2181           #zookeeper客户端登陆

     

    每台机都创建一个Node数据

    结论:实际上只有一个机器会执行创建操作,这是正常的,其他的机器显示已经拥有这个数据

     

    2.2 获取node数据

    都可以数据

    1号机:

     

    2号机

     

    3号机

     

    2.3 1号机重新设置node数据,并在三台机查看数据

    1号机设置

     

    1-3号机器获取新设置的node数据

     

    结论:都能获取到,表示数据设置正常

     

    2.4 1号机删除node数据,再查看其他机器数据

     

    结论:经检查3台机器都无node说明删除成功,获得数据

     

    3、集群冗余测试

    3.1 leader宕机之后是否会重新选举出leader,并正常工作

    A、选举之前,leader机在1号机

    使用sh zkServer.sh status查看

     

    B、停掉1号机服务,并查看1号机状态

    sh zkServer.sh stop

    sh zkServer.sh status

     

    通过状态可以看到已经停止了

    C、  查看23号机的状态

    2号机

     

    D、   通过数据同步测试看是否正常,参考部署2功能测试

    3.2 宕机掉一台普通机器2号机看是否正常

    A、先把原来宕机掉的1号机先起来,恢复zookeeper集群

     

    B、然后再把2号机宕机,查看数据是否正常

    2号机空压机

     

    C、然后根据功能测试2进行数据测试(略)

  • 相关阅读:
    02-01官网静默模式安装WebLogic
    01-java技术体系基础
    MySQL安装的三种方式
    centos虚拟机初始化脚本
    Nginx编译配置介绍
    word发布博客至博客园
    Bash shell编程的语法知识点(1)
    c=$[$c%5]到let c=$c%5的转换
    <转>shell经典,shell十三问
    进程管理工具htop/glances/dstat的使用
  • 原文地址:https://www.cnblogs.com/wudongyu/p/8572700.html
Copyright © 2011-2022 走看看