1.简介

ZooKeeper是Apache软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。
ZooKeeper的架构通过冗余服务实现高可用性。
Zookeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。

2.zookeeper数据结构

zookkeeper提供的名称空间非常类似于标准文件系统,key-value的形式存储。名称key由斜线/分割的一系列路径元素,zookeeper名称空间中的每个节点都是由一个路径标识。

2. 部署ZooKeeper集群

上面简单介绍了ZooKeeper相关概念,下面我们来部署下ZooKeeper集群。

2.1三台linux虚拟机

IP

master/slave

192.168.142.129

slave

192.168.142.130

master

192.168.142.131

slave

Java版本:java version "1.8.0_311"。

2.2下载源码包并解压

官网下载地址(这里有坑,官网给了两个安装包,其中“apache-zookeeper-3.7.0.tar.gz ”是源码,我们要下载“apache-zookeeper-3.7.0-bin.tar.gz”这个编译后安装包才对):

可以通过wget命令下载或者手动下载,安装包存储到linux服务器上/home/deng/packages目录,再通过以下命令解压安装包:

  1. cd /home/deng/packages
  2. mkdir /home/deng/zookeeper
  3. tar zxvf apache-zookeeper-3.7.0.tar.gz -C /home/deng/zookeeper

2.3修改环境变量

vi /etc/profile文件,在文件末尾添加以下环境变量配置:

  1. # ZooKeeper环境变量
  2. export ZOOKEEPER_HOME=/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/
  3. export PATH=$PATH:$ZOOKEEPER_HOME/bin

再运行以下命令使环境变量生效:

  1. source /etc/profile

2.4重命名配置文件

初次使用ZooKeeper时,需要将$ZOOKEEPER_HOME/conf目录下的zoo_sample.cfg重命名为zoo.cfg,zoo.cfg:

  1. mv $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg

2.5修改配置文件(指定数据和日志存放目录)

先创建数据跟日志文件夹:

  1. mkdir $ZOOKEEPER_HOME/data
  2. mkdir $ZOOKEEPER_HOME/logs

编辑zoo.cfg配置文件:

  1. vi $ZOOKEEPER_HOME/conf/zoo.cfg

修改如下:

  1. tickTime=2000
  2. initLimit=10
  3. syncLimit=5
  4. dataDir=/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/data
  5. dataLogDir=/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/logs
  6. clientPort=2181

因为我们部署是集群,所以多节点需要在配置文件中尾部增加如下内容:

  1. # 集群配置
  2. server.1=192.168.142.129:2888:3888
  3. server.2=192.168.142.130:2888:3888
  4. server.3=192.168.142.131:2888:3888

如图所示:

2.6生成myid文件,用作标明当前机器

在zookeeper数据所在的目录下(/home/deng/zookeeper/apache-zookeeper-3.7.0-bin/data)生成一个文件叫myid,其中写上一个数字表明当前机器是哪一个编号的机器:

  1. #192.168.142.129(slave)
  2. vi $ZOOKEEPER_HOME/data/myid
  3. 1
  4. #192.168.142.130(master)
  5. vi $ZOOKEEPER_HOME/data/myid
  6. 2
  7. #192.168.142.131(slave)
  8. vi $ZOOKEEPER_HOME/data/myid
  9. 3

2.7开启防火墙端口访问

zookeeper服务默认的端口号为2888和3888,所以需要在防火墙开启允许访问:

  1. firewall-cmd --permanent --zone=public --add-port=2888/tcp
  2. firewall-cmd --permanent --zone=public --add-port=3888/tcp
  3. firewall-cmd --reload

2.8启动Zookeeper

  1. #切换目录
  2. cd /home/deng/zookeeper/apache-zookeeper-3.7.0-bin
  3. #启动ZK服务
  4. bin/zkServer.sh start
  5. #停止ZK服务
  6. bin/zkServer.sh stop
  7. #重启ZK服务
  8. bin/zkServer.sh restart
  9. #查看ZK服务状态
  10. bin/zkServer.sh status

可以通过命令查看ZK服务状态:


参考文献:
Zookeeper-QuickStart

(1)Zookeeper在linux环境中搭建集群的更多相关文章

  1. (4)ElasticSearch在linux环境中搭建集群

    1.概述 一个运行中的Elasticsearch实例称为一个节点(node),而集群是由一个或者多个拥有相同cluster.name配置的节点组成,它们共同承担数据和负载的压力.当有节点加入集群中或者 ...

  2. Linux环境下Hadoop集群搭建

    Linux环境下Hadoop集群搭建 前言: 最近来到了武汉大学,在这里开始了我的研究生生涯.昨天通过学长们的耐心培训,了解了Hadoop,Hdfs,Hive,Hbase,MangoDB等等相关的知识 ...

  3. Linux环境下SolrCloud集群环境搭建关键步骤

    Linux环境下SolrCloud集群环境搭建关键步骤. 前提条件:已经完成ZooKeeper集群环境搭建. 一.下载介质 官网下载地址:http://www.apache.org/dyn/close ...

  4. Linux环境下HDFS集群环境搭建关键步骤

    Linux环境下HDFS集群环境搭建关键步骤记录. 介质版本:hadoop-2.7.3.tar.gz 节点数量:3节点. 一.下载安装介质 官网下载地址:http://hadoop.apache.or ...

  5. Linux+.NetCore+Nginx搭建集群

    本篇和大家分享的是Linux+NetCore+Nginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话 ...

  6. Linux环境下Redis集群实践

    环境:centos 7 一.编译及安装redis源码 源码地址:redis版本发布列表 cd redis-3.2.8 sudo make && make install 二.创建节点 ...

  7. Linux环境下nginx集群搭建

    #确保安装nginx,stream模块默认不安装的,需要手动添加参数:–with-stream, nginx1.9或以上版本 #nginx.conf文件中,添加以下内容(只供参考),这个不能放在htt ...

  8. ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据

    引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Zab协议.通信协议等相关知识,理解起来比较抽象所以还需要借助一些应用场景,来帮我们 ...

  9. 【Zookeeper系列】ZooKeeper管理分布式环境中的数据(转)

    原文地址:https://www.cnblogs.com/sunddenly/p/4092654.html 引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它 ...

随机推荐

  1. mysql将语句写入表中

    使用create table语句即可 CREATE TABLE membertmp (select a.* from member as a where a.phone <> '' and ...

  2. 事项同步事项编码(mt_code)长度超过数据库限制的varchar(32)线上问题

    改下长度限制重新同步下,可以恢复正常!

  3. 学习laravel总结中...

    1,安装homestead :mac环境 https://learnku.com/docs/laravel-development-environment/5.5/development-enviro ...

  4. phpspider PHP 爬虫

    * 通过composer下载 composer require owner888/phpspider // composer.json { "require": { "o ...

  5. appium和selenium不同与相同之处

    原文来自: https://www.cnblogs.com/zhengshuheng/p/6370398.html selenium是web端的自动化,appium是app端的自动化,它继承了webd ...

  6. python二级 第9套

    1. prInt.默认输出空格 2. 我的这种想法也行不通啊 format() 一次只能有一个未知量 2. 分割的结果就是列表 3. 对比"大学"    上一套的split('&q ...

  7. P7514-[省选联考2021A/B卷]卡牌游戏【贪心】

    正题 题目链接:https://www.luogu.com.cn/problem/P7514 题目大意 给出\(n\)个卡牌有\(a_i/b_i\),开始都是\(a_i\)朝上,将不超过\(m\)张卡 ...

  8. Python3入门系列之-----file方法操作

    file方法 file处理文件的一些方法,创建一个file对像后即可对文件进行读写相关操作,首先你得打开文件,此处用到open函数 open函数 语法:file_objcet = open(file_ ...

  9. CSP初赛考点汇总

    qwq 为SCP初赛选手(我)收集的各种定理qwq 更新: 1.为了初赛都能用,不限于定理了 2.主旨为在短时间内复习各算法,备初赛 3.请确定你学习(学懂了)了 \(\texttt{oi}\) 的基 ...

  10. vue常见的三种组件通讯—props,$refs,this.$emit

    一.父组件--->子组件 props 1.特点:props是用于父组件向子组件传递数据信息(props是单向绑定的,即只能父组件向子组件传递,不能反向 2.用法:父组件中使用子组件时,绑定要传递 ...