搭建zookeeper集群

  1. 创建docker-compose.yml文件

     ```
    version: '3.1'
    services:
    zoo1:
    image: zookeeper
    restart: always
    container_name: zoo1
    ports:
    - 2181:2181
    volumes:
    - /usr/local/docker/zookeeper/zoo1/data:/data
    - /usr/local/docker/zookeeper/zoo1/datalog:/datalog
    environment:
    ZOO_MY_ID: 1
    ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    zoo2:
    image: zookeeper
    restart: always
    container_name: zoo2
    ports:
    - 2182:2181
    volumes:
    - /usr/local/docker/zookeeper/zoo2/data:/data
    - /usr/local/docker/zookeeper/zoo2/datalog:/datalog
    environment:
    ZOO_MY_ID: 2
    ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    zoo3:
    image: zookeeper
    restart: always
    container_name: zoo3
    ports:
    - 2183:2181
    volumes:
    - /usr/local/docker/zookeeper/zoo3/data:/dada
    - /usr/local/docker/zookeeper/zoo3/datalog:/datalog environment:
    ZOO_MY_ID: 3
    ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    ```
  2. docker-compose up -d 后台运行

  3. docker-compose config 查看配置

  4. docker exec -it <容器id> bash 交互式进入容器

  5. bin/zkServer.sh status 查看zookeeper集群状态(follower/leader)

java使用zookeeper导入包和配置

  1. 导入包

     ```
    'org.apache.zookeeper:zookeeper:3.5.6',
    "org.apache.logging.log4j:log4j:2.12.1",
    'org.apache.logging.log4j:log4j-1.2-api:2.12.1',
    'org.apache.logging.log4j:log4j-core:2.12.1'
    ```
  2. 在resources目录下创建 log4j2.properties文件并配置

     ```
    log4j.rootLogger=INFO,stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
    log4j.appender.logfile=org.apache.log4j.FileAppender
    log4j.appender.logfile.File=target/spring.log
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n ```
  3. 代码示例

     ```
    public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
    String connect = "192.168.145.128:2181,192.168.145.128:2182,192.168.145.128:2183";
    int timeout = 30000;
    ZooKeeper zooKeeper = null;
    ZooKeeper finalZooKeeper = zooKeeper;
    zooKeeper = new ZooKeeper(connect, timeout, new Watcher() {
    @Override
    public void process(WatchedEvent event) { // System.out.println("start");
    // List<String> children = null;
    // try {
    // children = finalZooKeeper.getChildren("/hhh", true);
    // children.forEach(item -> System.out.println(item));
    // } catch (KeeperException e) {
    // e.printStackTrace();
    // } catch (InterruptedException e) {
    // e.printStackTrace();
    // }
    // System.out.println("end");
    // } }
    }); //必须连接好才能创建目录
    System.out.println(zooKeeper.getState());
    while (true) {
    if (ZooKeeper.States.CONNECTING == zooKeeper.getState()) {
    Thread.sleep(1000);
    } else {
    break;
    }
    }
    System.out.println(zooKeeper.getState()); // String path = zooKeeper.create("/hhh", "test11".getBytes()
    // , ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    // System.out.println(path); List<String> children = zooKeeper.getChildren("/", true);
    children.forEach(item -> System.out.println(item));
    byte[] data = zooKeeper.getData("/hhh", false, null);
    System.out.println(new String(data));
    ```

docker-compose搭建zookeeper集群的更多相关文章

  1. Docker中搭建zookeeper集群

    1.获取官方镜像 从dockerhub获取官方的zookeeper镜像: docker pull zookeeper 2.了解镜像内容 拉取完镜像后,通过 docker inspect zookeep ...

  2. docker 搭建zookeeper集群和kafka集群

    docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之 ...

  3. docker-compose搭建zookeeper集群环境 CodingCode

    docker-compose搭建zookeeper集群环境 使用docker-compose搭建zookeeper集群环境 zookeeper是一个集群环境,用来管理微服务架构下面的配置管理功能. 这 ...

  4. 如何搭建Zookeeper集群

     ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的 ...

  5. centos 6.5 搭建zookeeper集群

    为什么使用Zookeeper? 大部分分布式应用需要一个主控.协调器或控制器来管理物理分布的子进程(如资源.任务分配等)目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制协调程序的反复编写浪费 ...

  6. 使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇

    使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用Cloudera Manager搭建zo ...

  7. 搭建zookeeper集群_其中一个报Mode: standalone,另外两个分别是leader和follower

    用3个zookeeper搭建一个zookeeper集群,首先配置好一个zookeeper1,其余两个都是按照zookeeper1复制过来,然后稍微修改 运行集群成功,查看zookeeper状态 可以看 ...

  8. docker搭建zookeeper集群

    1.在官网拉取镜像 docker pull zookeeper 2.根据镜像启动zookeeper容器 docker run -itd --name zookeeper1 -h zookeeper1 ...

  9. 从零开始学习docker之在docker中搭建redis(集群)

    docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...

随机推荐

  1. VMware workstation Windows 10虚拟机安装步骤

    1. 在首页点击创建新的虚拟机 2. 选择典型,下一步 3.选择稍后安装操做系统,下一步. 4. 选择第一个Microsoft Windows,版本选择如图. 5. 选择安装位置,我放在D盘. 7. ...

  2. 打造属于自己的 HTML/CSS/JavaScript 实时编辑器

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://blog.bitsrc.io/build-an-html-css-js-playgr ...

  3. 苹果开始推送 macOS Catalina10.15 正式版系统更新

    北京时间今天凌晨 1 点,苹果正式推送了 macOS Catalina 10.15 正式版升级.macOS Catalina 10.15 正式版带来了许多重大改变,包括Sidecar.iTunes应用 ...

  4. 实验吧之【简单的sql注入 1、2、3】

    实验吧的三道sql注入(感觉实验吧大部分web都是注入) 简单的SQL注入 地址:http://ctf5.shiyanbar.com/423/web/ 这道题也是sql注入,输入1,页面显示正常,输出 ...

  5. [JZOJ5863] 【NOIP2018模拟9.11】移动光标

    Description

  6. Redis 集群搭建(基于Linux)

    一.基础环境 1.虚拟机 VMware 15.x 2.Linux系统,用的是Centos7的Linux系统 3.Redis数据库版本 5.0.3 二.Redis集群简介 1.背景 Redis在3.0版 ...

  7. vue系列文章 --- 源码目录结构整理(三)

    vue的版本是:^2.6.10 结构如下: |----- vue | |--- dist # 打包之后的目录vue文件 | | |--- vue.common.dev.js | | |--- vue. ...

  8. 百万年薪python之路 -- 前端CSS基础介绍

    一. CSS介绍 CSS定义 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素,给HTML设置样式,让它更加美观. 语法结构 div{ color: green ...

  9. Unity常用协程功能封装

    # 1.前言unity开发过程中,经常用到一些特定的协程功能,比如延时触发.等待触发.重复操作等.unity自带Invoke以及InvokeRepeating方法,但这些方法均采用反射机制,性能消耗, ...

  10. unity message

    再用unity进行开发过程中,不可避免的用到消息的传递问题,以下介绍几种消息传递的方法: (一)拖动赋值 此方法即为最普通的方法,即把需要引用的游戏物体或者需要引用的组件拖动到相关公有变量的槽上,然后 ...