概述

  ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

本地模式安装 :本人linux下的JDK版本是1.8

  下载地址:https://mirror.bit.edu.cn/apache/ 找到zookeeper 选择对应版本下载即可。 3.5.5版本开始要下载 bin.tar.gz 的包。

1.下载并解压 zookeeper-3.4.13.tar.gz

tar -zxvf zookeeper-3.4.13.tar.gz  -C /mysoft/

2.修改配置文件

cp zoo_sample.cfg zoo.cfg

修改以下参数。将zookeeper的数据存储指定到文件夹,创建文件夹 mkdir zkData

3.启动zookeeper ,停止使用 bin/zkServer.sh stop

bin/zkServer.sh start 

查看运行状态

bin/zkServer.sh status

4.启动zookeeper客户端

bin/zkCli.sh

退出使用 quit ,连接其他客户端 zkCli.sh -serve 127.0.0.1(IP):2182(port) 这样子来连接

5.zookeeper 配置文件

# The number of milliseconds of each tick
# 心跳时间2秒
# 客户端与服务器或者服务器与服务器之间维持心跳,
# 也就是每个tickTime时间就会发送一次心跳。
# 通过心跳不仅能够用来监听机器的工作状态,
# 还可以通过心跳来控制Flower跟Leader的通信时间,
# 默认情况下FL的会话时常是心跳间隔的两倍。
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
# 集群中的follower服务器(F)与leader服务器(L)之间
# 初始连接时能容忍的最多心跳数(tickTime的数量)。
# tickTime * 10 =20秒没通讯就认为挂了
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
# 集群中flower服务器(F)跟leader(L)
# 服务器之间的请求和答应最多能容忍的心跳数。
# tickTime * 5 =10秒没通讯就认为挂了
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# 数据存放位置
dataDir=/mysoft/zookeeper-3.4.13/zkData
# the port at which the clients will connect
# 客户端连接的接口,客户端连接zookeeper服务器的端口,
# zookeeper会监听这个端口,接收客户端的请求访问!这个端口默认是2181。
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

  zookeeper 日志的配置地址在conf/目录下的log4j.properties文件中,该文件中有一个配置为“zookeeper.log.dir=.”,表示log4j日志文件在与执行程序(zkServer.sh)在同一目录下。当执行zkServer.sh 时,在该文件夹下会产生zookeeper.out日志文件,可以通过日志文件查看运行信息。

伪分布式安装:

  1.解压完安装包后,进入zookeeper/conf/目录下,将改目录下的zoo_sample.cfg配置文件拷贝3份,依次 zoo1.cfg  zoo2.cfg  zoo3.cf。使用vim编辑zoo1.cfg  zoo2.cfg zoo3.cfg这三个配置文件。

clientPort = ?, 分别将三个配置文件修改为2181.2182.2183
修改dataDir的路径,分别为zkData1. zkData2. zkData3,并且再对应服务上的zookeeper-3.4.13目录下创建文件夹
dataDir=/mysoft/zookeeper-3.4.13/zkData
文件结尾添加以下信息,我这里是准备部署3台,所以只有3条信息
server.1=IP:2888(数据同步端口):3888(Leader选举端口)
server.2=IP:2889:3889
server.3=IP:2890:3890

  server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

  2.在各data文件下创建名为myid的文件,文件内容对应服务器编号

touch myid

  3.写入服务器编号,也就是1中server.1(2.3)的对应值

echo 1 > zkDdata1/myid
echo 2 > zkDdata2/myid
echo 3 > zkDdata3/myid

  4.依次启动服务,服务按照次序启动,启动时的选举算法是依次投票,这里的leader顺理就是2号配置文件启动的服务。其他的都是fllower,当启动第一台服务器的时候查看状态是不可用的,应为集群中节点未在半数以上。 集群中奇数和偶数对故障的容忍度是一致的....所以建议配置奇数个,并不是必须奇数...

sh zkServer.sh start /mysoft/zookeeper-3.4.13/conf/zoo1.cfg
sh zkServer.sh start /mysoft/zookeeper-3.4.13/conf/zoo2.cfg
sh kServer.sh start /mysoft/zookeeper-3.4.13/conf/zoo3.cfg

  5.查看状态 记得关闭防火墙哦

sh zkServer.sh status /mysoft/zookeeper-3.4.13/conf/zoo1.cfg
sh zkServer.sh status /mysoft/zookeeper-3.4.13/conf/zoo2.cfg
sh zkServer.sh status /mysoft/zookeeper-3.4.13/conf/zoo3.cfg

  启动客户端 sh zkCli.sh -server 127.0.0.1:port

  伪分布式安装就是在一台机器上配置多个配置文件,根据不同的配置文件来启动,而真正的分布式下就是将配置文件安装在各自服务器下。要注意server的配置

基于 Java API 初探 zookeeper 的使用:

  先来简单看一下API的使用:

public class ConnectionDemo {

    public static void main(String[] args) {
try {
final CountDownLatch countDownLatch=new CountDownLatch();
ZooKeeper zooKeeper=
new ZooKeeper("192.168.254.135:2181," +
"192.168.254.136:2181,192.168.254.137:2181",
, new Watcher() {
@Override
public void process(WatchedEvent event) {
if(Event.KeeperState.SyncConnected==event.getState()){
//如果收到了服务端的响应事件,连接成功
countDownLatch.countDown();
}
}
});
System.out.println(zooKeeper.getState());//CONNECTING
countDownLatch.await();
System.out.println(zooKeeper.getState());//CONNECTED //添加节点
zooKeeper.create("/zk-wuzz","".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
Thread.sleep();
Stat stat=new Stat(); //得到当前节点的值
byte[] bytes=zooKeeper.getData("/zk-wuzz",null,stat);
System.out.println(new String(bytes)); // 0 //修改节点值
zooKeeper.setData("/zk-wuzz","".getBytes(),stat.getVersion()); //得到当前节点的值
byte[] bytes1=zooKeeper.getData("/zk-wuzz",null,stat);
System.out.println(new String(bytes1)); // zooKeeper.delete("/zk-wuzz",stat.getVersion()); zooKeeper.close(); System.in.read();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (KeeperException e) {
e.printStackTrace();
}
}
}

Zookeeper安装(本地,伪分布式,集群)的更多相关文章

  1. (转)ZooKeeper伪分布式集群安装及使用

    转自:http://blog.fens.me/hadoop-zookeeper-intro/ 前言 ZooKeeper是Hadoop家族的一款高性能的分布式协作的产品.在单机中,系统协作大都是进程级的 ...

  2. ZooKeeper伪分布式集群安装及使用

    ZooKeeper伪分布式集群安装及使用 让Hadoop跑在云端系列文章,介绍了如何整合虚拟化和Hadoop,让Hadoop集群跑在VPS虚拟主机上,通过云向用户提供存储和计算的服务. 现在硬件越来越 ...

  3. hadoop伪分布式集群搭建与安装(ubuntu系统)

    1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...

  4. 搭建zookeeper伪分布式集群

    伪分布式集群的意思就是在同一台机子上部署多个zookeeoer,但是他们的端口不一样. 1.安装zookeeper 到/usr/local 2.cd /usr/local/zookeeper 3.cd ...

  5. ZooKeeper的伪分布式集群搭建

    ZooKeeper集群的一些基本概念 zookeeper集群搭建: zk集群,主从节点,心跳机制(选举模式) 配置数据文件 myid 1/2/3 对应 server.1/2/3 通过 zkCli.sh ...

  6. Linux单机环境下HDFS伪分布式集群安装操作步骤v1.0

    公司平台的分布式文件系统基于Hadoop HDFS技术构建,为开发人员学习及后续项目中Hadoop HDFS相关操作提供技术参考特编写此文档.本文档描述了Linux单机环境下Hadoop HDFS伪分 ...

  7. Zookeeper 集群搭建--单机伪分布式集群

    一. zk集群,主从节点,心跳机制(选举模式) 二.Zookeeper集群搭建注意点 1.配置数据文件 myid 1/2/3 对应 server.1/2/3 2.通过./zkCli.sh -serve ...

  8. Hadoop学习---CentOS中hadoop伪分布式集群安装

    注意:此次搭建是在ssh无密码配置.jdk环境已经配置好的情况下进行的 可以参考: Hadoop完全分布式安装教程 CentOS环境下搭建hadoop伪分布式集群 1.更改主机名 执行命令:vi  / ...

  9. zookeeper伪分布式集群搭建

    zookeeper集群搭建注意点:         配置数据文件myid1/2/3对应server.1/2/3         通过zkCli.sh -server [ip]:[port]检测集群是否 ...

  10. Dubbo+zookeeper构建高可用分布式集群(二)-集群部署

    在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...

随机推荐

  1. 数据库并发控制及SQL Server的并发控制机制

    在多用户和网络环境下,数据库是一个共享资源,多个用户或应用程序同时对数据库的同一数据对象进行读写操作,这种现象称为对数据库的并发操作.显然并发操作可以充分利用系统资源,提高系统效率.虽然如此,但是如果 ...

  2. 单片机AT和STC区别

    http://www.21ic.com/jichuzhishi/datasheet/AT89C51/data/192017.html

  3. Python基础1(2017-07-16)

    先墨守常规写一个简单的hello world!这是所有语言学习的第一点. Python Hello world name="hello world!" print(name) 如上 ...

  4. maven(一) 一 修改仓库存放路径

    一.修改仓库存放路径 maven默认的仓库是在C盘下的,这样当重新装系统的时候,仓库就要重新建了.因此可以修改默认存放的位置. 修改仓库的地址在maven安装包(即apache-maven-bin)下 ...

  5. mongodb系列~mongodb集群介绍与管理

    mongodb 集群维护1 简介    谈谈mongodb的集群架构2 常用的维护命令   1 查看状态 sh.status()         1 version        2 shards: ...

  6. Light oj 1018 - Brush (IV) 状态压缩

    题目大意: 给出n个点的坐标,求至少画多少掉直线才能连接所有点. 题目思路:状态压缩 首先经行预处理,求出所有状态下,那些点不在该状态内 以任意两点为端点求出这条直线的状态 枚举所有状态,找出不在当前 ...

  7. shell编程 之 test命令

    shell编程里的测试test命令基本可以分为3种数据类型,每种都不一样.个人更倾向于理解为条件语句的写法规则,就是test加条件加判断语句. 1 数值类型 基本可以分为6个判断:-eq等于,-ne不 ...

  8. requirements.txt文件教程

    方法有2种,命令都是一样,只是执行地方不一样 此方法主要用于迁移新环境使用,为防止代码出现问题,最好使用原装库,所以就有了迁移代码和库的操作 第一种:在pycharm中,左下角有个双重正方形,点击里面 ...

  9. java在进程启动和关闭.exe程序

    /** * @desc 启动进程 * @author zp * @date 2018-3-29 */ public static void startProc(String processName) ...

  10. Debian 为firefox安装flash插件 以及 音频驱动

    1. flash下载地址:http://get.adobe.com/cn/flashplayer/ lv@lv:~/Downloads$ tar -zxvf flash_player_npapi_li ...