zoukankan      html  css  js  c++  java
  • Docker应用系列(二)| 构建Zookeeper集群

    本示例基于Centos 7,在阿里云的三台机器上部署zookeeper集群,假设目前使用的账号为release,拥有sudo权限。

    由于Docker官方镜像下载较慢,可以开启阿里云的Docker镜像下载加速器,可参考此文进行配置。

    假设三台主机的ip分别为:

    • 主机一:192.168.0.1
    • 主机二:192.168.0.2
    • 主机三:192.168.0.3

    三台主机的安装步骤相似,以主机一为例:

    1. 安装docker服务:

     sudo yum install -y docker

    2. 启动docker服务: 

    sudo service docker start

    3. 查找zookeeper镜像:

    sudo docker search zookeeper

    4. 下载官方redis镜像:

    sudo  docker pull docker.io/zookeeper

    5. 下载完后可检查镜像:

    sudo docker images 

    6. 主机上建立挂载目录和zookeeper配置文件:

    mkdir -p /data/zookeeper_data/conf
    mkdir -p /data/zookeeper_data/data cd /data/zookeeper_data/conf touch zoo.cfg vi zoo.cfg

    三台主机上的zoo.cfg配置信息如下:

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

    在主机一上为自己分配server id,命令如下:

    cd /data/zookeeper_data/data
    touch myid
    echo 0 > myid

    在主机二上为自己分配server id,命令如下:

    cd /data/zookeeper_data/data
    touch myid
    echo 1 > myid

    在主机二上为自己分配server id,命令如下:

    cd /data/zookeeper_data/data
    touch myid
    echo 2 > myid

    7. 三台主机依次启动容器:

    sudo docker run  --network host -v /data/zookeeper_data/data:/data -v /data/zookeeper_data/conf:/conf --name zk-2181 -d docker.io/zookeeper

    命令说明:

    • --network host: 使用主机上的网络配置,如果不用这种模式,而用默认的bridge模式,会导致容器跨主机间通信失败
    • -v /data/zookeeper_data/data:/data:主机的数据目录挂载到容器/data下
    • -v /data/zookeeper_data/conf:/conf: 主机的配置目录挂载到容器的/conf下,容器内的zkServer.sh默认会读取/conf/zoo.cfg下的配置

    都启动完成后,每台主机的2181/2888/3888端口都会开放出来了

    8. 检查容器的启动情况:

    sudo docker exec -it 容器id /bin/bash

    进入容器内部后,其工作目录为:/zookeeper-3.4.13(版本依据镜像而定),执行zookeeper检查:

    [release@sh-lbs02 data]$ sudo docker exec -it 456 /bin/bash
    [sudo] password for release: 
    bash-4.4# pwd
    /zookeeper-3.4.13
    bash-4.4# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /conf/zoo.cfg
    Mode: follower
    bash-4.4# 

    可以看到这个容器目前为从机状态,至此集群已启动完成。

    9. 若启动失败了,通过如下命令观察zookeeper的启动日志:

    sudo docker logs 容器id/容器名称

    内容示例如下:

    [release@sh-lbs02 ~]$ sudo docker logs zk-2181
    ZooKeeper JMX enabled by default
    Using config: /conf/zoo.cfg
    log4j:WARN No appenders could be found for logger (org.apache.zookeeper.server.quorum.QuorumPeerConfig).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
  • 相关阅读:
    spark 修改默认log4j.properties 配置
    shell $x的含义
    hadoop hdfs 有内网、公网ip后,本地调试访问不了集群解决
    JAVA concurrent包下Semaphore、CountDownLatch等用法
    ETL DAG调度策略
    python2.7 Cheetah You don't have the C version of NameMapper installed
    python threading 用法
    log4j2 Filter用法详解
    ThreadLocal 原理及一些实现
    ETL hive update 之 deltamerge 优化
  • 原文地址:https://www.cnblogs.com/hutao722/p/9668023.html
Copyright © 2011-2022 走看看