zoukankan      html  css  js  c++  java
  • centos7安装zookeeper3.4.12集群

    zookeeper的三要素:

    1、一致,能够保证数据的一致性

    2、有头,始终有一个leader,node/2+1个节点有效,就能正常工作

    3、数据树,树状结构且每个树必须有数据

    1. 环境准备

    操作系统:CentOS Linux release 7.2.1511 (Core)

    JDK版本:1.8.0_121

    具体安装jdk的配置请参见本人的博客https://www.cnblogs.com/lenmom/p/9152947.html中关于jdk安装部分的内容,本文假设jdk已经安装好了

    服务器 

    192.168.1.101;

    192.168.1.102;

    192.168.1.103;

    2. 下载zookeeper

    下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/

    利用wget下载并解压zookeeper3.4.12,当前在192.168.1.101机器上操作

    cd /opt/software 
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz  #下载zookeeper3.4.12到当前目录
    tar -xzvf zookeeper-3.4.12.tar.gz -C  /opt/software #解压zookeeper到当前目录
    cd zookeeper-3.4.12   #进入zookeeper3.4.12目录

    3. 配置zookeeper3.4.12

    mv /opt/software/zookeeper-3.4.12/conf/zoo_sample.cfg   /opt/software/zookeeper-3.4.12/conf/zoo.cfg  
    vim /opt/software/zookeeper-3.4.12/conf/zoo.cfg

    先把dataDir=/tmp/zookeeper注释,然后将下面四行代码添加到文件末尾,添加以下内容:

    dataDir=/opt/software/zookeeper-3.4.12/data
    dataLogDir=/opt/software/zookeeper-3.4.12/log
    server.1=192.168.1.101:2888:3888
    server.2=192.168.1.102:2888:3888
    server.3=192.168.1.103:2888:3888
    #server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里
    #192.168.1.101为集群里的IP地址,第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888

    zoo.cfg完整的文件内容如下:

    # The number of milliseconds of each tick
    tickTime=2000
    
    # The number of ticks that the initial 
    # synchronization phase can take
    initLimit=10
    
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    syncLimit=5
    
    # the port at which the clients will connect
    clientPort=2181
    
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    
    #
    # Be sure to read the maintenance section of the 
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1
    
    # the directory where the snapshot is stored.
    dataDir=/opt/software/zookeeper-3.4.12/data
    dataLogDir=/opt/software/zookeeper-3.4.12/log
    server.1=192.168.1.101:2888:3888
    server.2=192.168.1.102:2888:3888
    server.3=192.168.1.103:2888:3888

     配置文件说明:

    #tickTime:
    这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
    #initLimit:
    这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
    当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是
    5*2000=10 秒 #syncLimit: 这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒 #dataDir: 快照日志的存储路径 #dataLogDir: 事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多 #clientPort: 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点

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

      #autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。

     

    4.创建myid文件

    mkdir -p /opt/software/zookeeper-3.4.12/data  #创建数据目录,该目录在zoo.cfg中配置
    cd /opt/software/zookeeper-3.4.12/data #上面配置的zookeeper数据保存目录
    touch myid   #创建myid文件
    echo "1">>myid   #往myid中写入1,对应server.X={IP}:2888:3888 中的x数字

    5. 将上面在192.168.1.101机器上配置好的zookeeper复制到102,103两台机器上去

    scp -r /opt/software/zookeeper-3.4.12/  192.168.1.102:/opt/software/  #将配置好的zookeeper复制到192.168.1.102
    scp -r /opt/software/zookeeper-3.4.12/  192.168.1.103:/opt/software/  #将配置好的zookeeper复制到192.168.1.103

    修改102,103机器上/opt/software/zookeeper-3.4.12/data/myid为对应的值

    192.168.1.102:

    cd /opt/software/zookeeper-3.4.12/data
    rm -f ./myid
    echo "2">>myid   #往myid中写入2,对应server.X={IP}:2888:3888 中的x数字,此处为2

    192.168.1.103:

    cd /opt/software/zookeeper-3.4.12/data
    rm -f ./myid
    echo "3">>myid   #往myid中写入3,对应server.X={IP}:2888:3888 中的x数字,此处为3

    6. 开放zookeeper端口

    firewall-cmd --zone=public --add-port=2888/tcp --permanent  #添加2888防火墙例外
    firewall-cmd --zone=public --add-port=3888/tcp --permanent  #添加3888防火墙例外
    firewall-cmd --zone=public --add-port=2181/tcp --permanent  #添加2181防火墙例外
    firewall-cmd --reload   #重启防火墙

    注意:如果所在机器上防火墙没有关闭,上面的操作每天机器都需要做;有些hadoop或CDH集群安装的时候要求把防火墙关闭的,如果已经关闭了防火墙的,可以跳过该步骤,不用执行。

    7. 添加环境变量

    vim /etc/profile

    在文件最后添加:

    # zookeeper
    export ZK_HOME=/opt/software/zookeeper-3.4.12
    export PATH=$ZK_HOME/bin:$PATH

    使环境变量生效:

    source /etc/profile

    注意:三台机器都要做这个操作。

    8. 启动zookeeper

    8.1启动

    zkServer.sh start   #三台机器都要做此操作,否则通过zkServer.sh status查看启动状态时,   
    #可能会有Error contacting service. It is probably not running.错误信息。
    #具体查看可以在$ZK_HOME/zookeeper.out查看详细的日志信息

    8.2 查看状态

    zkServer.sh status #查看当前机器的zookeeper状态

    192.168.1.101

    [root@zoo101 zookeeper-3.4.12]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /opt/software/zookeeper-3.4.12/bin/../conf/zoo.cfg
    Mode: follower

    192.168.1.102

    [root@zoo102 zookeeper-3.4.12]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /opt/software/zookeeper-3.4.12/bin/../conf/zoo.cfg
    Mode: leader

    192.168.1.103

    [root@zoo103 zookeeper-3.4.12]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /opt/software/zookeeper-3.4.12/bin/../conf/zoo.cfg
    Mode: follower

    9. 客户端连接zookeeper

    zkCli.sh -server 192.168.1.101:2181

    如果出现如下内容,则表明zookeeper已经安装成功

    参考:

    http://www.cnblogs.com/luotianshuai/p/5206662.html

  • 相关阅读:
    TCP传输粘包问题
    提取KIndle中每本书的笔记并单独保存
    # 可视化工具资源汇总
    抓取代理IP
    Linux 小工具学习之(1)——Wget十例[翻译]
    [转]关于矩阵的本质
    用2263份证件照图片样本测试how-old.net的人脸识别
    Python生成二维码脚本
    基于git的源代码管理模型——git flow
    使用Graphviz绘图(一)
  • 原文地址:https://www.cnblogs.com/lenmom/p/10290045.html
Copyright © 2011-2022 走看看