当前位置 博文首页 > Grey Zeng:ZooKeeper学习笔记一:集群搭建

    Grey Zeng:ZooKeeper学习笔记一:集群搭建

    作者:Grey Zeng 时间:2021-06-05 18:20

    作者:Grey

    原文地址:ZooKeeper学习笔记一:集群搭建

    说明

    单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperStarted.html

    单机版的zk只适合用于测试或者开发环境,不适合用于生产环境。

    本文主要介绍zk的集群搭建。

    环境

    • CentOS 7
    • ZooKeeper 3.6.3

    准备工作

    第一步,准备四个Linux实例,zk01~zk04,我的四个实例的ip分别是:

    • zk01:192.168.205.145
    • zk02:192.168.205.146
    • zk03:192.168.205.147
    • zk04:192.168.205.148

    第二步,在四个实例中都安装好jdk1.8。

    安装与配置

    我们只需要在一台实例上安装并配置好zk,然后把安装文件和配置文件scp到其他实例即可

    在zk01中,下载并解压zk安装包:

    cd /usr/local
    
    ## 下载zk3.6.3版本
    wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
    
    ## 解压
    tar -xf apache-zookeeper-3.6.3-bin.tar.gz
    
    ## 重命名
    mv apache-zookeeper-3.6.3-bin zookeeper
    
    

    加入环境变量

    vi /etc/profile
    

    在末尾加入:

    export ZOOKEEPER_HOME=/usr/local/zookeeper
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    

    执行

    source /etc/profile
    

    修改zk配置文件:

    # 把默认的zoo_sample.cfg拷贝一份zoo.cfg出来
    cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
    

    修改zoo.cfg配置文件中的如下配置

    dataDir=/data/zookeeper
    

    增加如下配置到zoo.cfg中

    server.1=192.168.205.145:2888:3888
    server.2=192.168.205.146:2888:3888
    server.3=192.168.205.147:2888:3888
    server.4=192.168.205.148:2888:3888
    

    创建zk01的dataDir目录

    mkdir -p /data/zookeeper
    

    在dataDir目录下创建一个myid文件,并写入1

    echo 1 > /data/zookeeper/myid
    

    至此,zk01实例已经完全配置好了,现在将zk01实例上的一些安装文件和配置文件拷贝到zk02~zk04上,

    拷贝zk01上的profile文件到zk02~zk04三个节点

    ## 拷贝到zk02,过程中会让你输入yes,以及zk02的密码
    scp /etc/profile 192.168.205.146:/etc
    
    ## 拷贝到zk03
    scp /etc/profile 192.168.205.147:/etc
    
    ## 拷贝到zk04
    scp /etc/profile 192.168.205.148:/etc
    

    拷贝zk01的dataDir目录到zk02~zk04三个节点,在zk01上执行:

    scp -r /data/ 192.168.205.146:/
    scp -r /data/ 192.168.205.147:/
    scp -r /data/ 192.168.205.148:/
    

    拷贝zk01的zookeeper程序到zk02~zk04三个节点, 在zk01上执行:

    scp -r /usr/local/zookeeper 192.168.205.146:/usr/local/
    scp -r /usr/local/zookeeper 192.168.205.147:/usr/local/
    scp -r /usr/local/zookeeper 192.168.205.148:/usr/local/
    

    至此,zk02zk04都准备好了相关文件,现在连接zk02zk04,在zk02~zk04上分别执行如下操作

    source /etc/profile
    

    将zk02,zk03,zk04的myid文件,修改成对应的值

    vi /data/zookeeper/myid
    

    zk02的/data/zookeeper/myid修改成2
    zk03的/data/zookeeper/myid修改成3
    zk04的/data/zookeeper/myid修改成4

    配置防火墙

    firewall-cmd --zone=public --add-port=3888/tcp --permanent
    firewall-cmd --zone=public --add-port=2888/tcp --permanent  
    firewall-cmd --reload 
    

    启动

    在zk01~zk04上分别执行:

    zkServer.sh start-foreground
    

    查看leader和follower

    [root@zk01 ~]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
    Client port found: 2181. Client address: localhost. Client SSL: false.
    Mode: follower
    

    说明此节点是follower节点

    [root@zk03 ~]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
    Client port found: 2181. Client address: localhost. Client SSL: false.
    Mode: leader
    
    

    在任意节点通过zk客户端执行:

    create /abc
    
    set /abc "hello world"
    

    其他节点都可以查看到

    [zk: localhost:2181(CONNECTED) 0] get /abc
    hello world
    
    bk
    下一篇:没有了