zookeeper有单机、伪集群、集群三种部署方式,可根据自己实际情况选择合适的部署方式。下边对这三种部署方式逐一进行讲解。

一 单机模式

1.下载

进入要下载的版本的目录,选择.tar.gz文件下载
下载链接:http://archive.apache.org/dist/zookeeper/
注意:点击进入之后,会显示zookeeper文件的下载目录,如图所示,显示了多个版本可以下载。alpha版本是内测,功能不是很完全的,能够满足一定的需要,这里我们不建议选择;beta是公测版本,基本上可以满足要求,可以适当的根据需要选择;如果是对稳定性要求非常高的话,最好是选择正式发布的版本。

2.上传安装包到usr/local目录下,并解压缩,重命名,配置环境变量

[root@hadoop ~]# cd /usr/local/
[root@hadoop local]# tar xzvf zookeeper-3.4..tar.gz #解压缩
[root@hadoop local]# mv zookeeper-3.4. zookeeper #重命名
[root@hadoop local]# vi /etc/profile #添加环境变量
添加变量:export ZOO_HOME=/usr/local/zookeeper
然后在PATH变量后面添加::$ZOO_HOME/bin
[root@hadoop local]# source /etc/profile #生成环境变量

3.配置zookeeper。将配置模板生成为配置文件,生成dataDir目录,修改参数

[root@hadoop local]# cd /usr/local/zookeeper/conf
[root@hadoop conf]# ls
configuration.xsl log4j.properties zoo_sample.cfg
[root@hadoop conf]# cp zoo_sample.cfg zoo.cfg #生成配置文件
[root@hadoop conf]# mkdir -p /usr/local/zookeeper/data #生成dataDir目录
[root@hadoop conf]# vi zoo.cfg #添加如下参数
dataDir=/usr/local/zookeeper/data #已有,修改即可
dataLogDir=/usr/local/zookeeper/data/log
server.=hadoop::

附zoo.cfg文件

# The number of milliseconds of each tick
#表示每2s心跳一次,zookeeper的服务器之间或者客户端与服务器之间维持着一种心跳机制
tickTime=
# The number of ticks that the initial
# synchronization phase can take
#集群中的follower和leader之间初始连接时能够容忍的最大心跳数
initLimit=
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
#leader和follower之间同步的实现,follower和leader之间请求和应答能容忍的最大心跳数
#也就是说在5个心跳之后判断对方死亡
syncLimit=
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
#zookeeper数据存放的目录
dataDir=/usr/local/zookeeper/data
#zookeeper数据的日志文件存放的目录
dataLogDir=/usr/local/zookeeper/data/log
# the port at which the clients will connect
#客户端连接zookeeper的端口号
clientPort=
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=
#
# 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=
# Purge task interval in hours
# Set to "" to disable auto purge feature
#autopurge.purgeInterval=
#此处指的是你有多少台zookeeper,每台zookeeper的服务器主机名叫什么以及相应的端口
#服务器名称与地址,包括服务器编号,地址,leader与follower通讯端口,选举端口等
server.=hadoop::

4.在dataDir目录下生成myid文件
myid文件告诉zookeeper我是该集群中的第几号机器,然后在myid文件中从1开始填入对应的数字

[root@hadoop conf]# echo  > /usr/local/zookeeper/data/myid #单机模式只有一台机器,故它是集群中的1号机器

5.开启zookeeper集群节点

[root@hadoop conf]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

6.检查集群状态或者节点角色

[root@hadoop conf]# jps #出现QuorumPeerMain代表zookeeper正常运转
Jps
QuorumPeerMain [root@hadoop conf]# zkServer.sh status #单机模式,只有一种角色standalone
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: standalone

7.关闭zookeeper集群节点

[root@hadoop conf]# zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED [root@hadoop conf]# jps
Jps [root@hadoop conf]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

二 伪集群模式

伪集群模式就是在同一主机启动多个zookeeper并组成集群,下边以在hadoop主机上创建3个zookeeper组集群为例。

1.将通过单机模式安装的zookeeper,复制成zoo1/zoo2/zoo3三份

[root@hadoop ~]# mkdir /zoo
[root@hadoop ~]# cp -r /usr/local/zookeeper /zoo/zoo1
[root@hadoop ~]# cp -r /usr/local/zookeeper /zoo/zoo2
[root@hadoop ~]# cp -r /usr/local/zookeeper /zoo/zoo3
[root@hadoop ~]# cd /zoo/
[root@hadoop zoo]# ls
zoo1 zoo2 zoo3

2.分别修改3个节点的配置文件

[root@hadoop zoo]# vi /zoo/zoo1/conf/zoo.cfg #节点1
dataDir=/zoo/zoo1/data
dataLogDir=/zoo/zoo1/data/log
clientPort=
#由于我们用的同一个主机hadoop,为了防止端口冲突,设置端口号均不同
#如果是3个节点分别在3台机器上,端号可以一样
#此处主机名hadoop也可以写成主机IP地址
server.=hadoop::
server.=hadoop::
server.=hadoop:: [root@hadoop zoo]# vi /zoo/zoo2/conf/zoo.cfg #节点2
dataDir=/zoo/zoo2/data
dataLogDir=/zoo/zoo2/data/log
clientPort=
server.=hadoop::
server.=hadoop::
server.=hadoop:: [root@hadoop zoo]# vi /zoo/zoo3/conf/zoo.cfg #节点3
dataDir=/zoo/zoo3/data
dataLogDir=/zoo/zoo3/data/log
clientPort=
server.=hadoop::
server.=hadoop::
server.=hadoop::

3.分别修改3个节点的myid文件

[root@hadoop zoo]# echo  > /zoo/zoo1/data/myid
[root@hadoop zoo]# echo > /zoo/zoo2/data/myid
[root@hadoop zoo]# echo > /zoo/zoo3/data/myid

4.依次启动3个zookeeper集群节点
由于没加环境变量,启动方式为$ZOO_HOME/bin/zkServer.sh start

[root@hadoop /]# /zoo/zoo1/bin/zkServer.sh start #启动节点1
ZooKeeper JMX enabled by default
Using config: /zoo/zoo1/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED [root@hadoop /]# jps #1个QuorumPeerMain代表1个节点启动成功
QuorumPeerMain
Jps [root@hadoop /]# /zoo/zoo1/bin/zkServer.sh status #此时节点1是LOOKING状态
ZooKeeper JMX enabled by default
Using config: /zoo/zoo1/bin/../conf/zoo.cfg
Error contacting service. It is probably not running. [root@hadoop /]# /zoo/zoo2/bin/zkServer.sh start #启动节点2
ZooKeeper JMX enabled by default
Using config: /zoo/zoo2/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED [root@hadoop /]# jps #2个QuorumPeerMain代表2个节点启动成功
QuorumPeerMain
Jps
QuorumPeerMain [root@hadoop /]# /zoo/zoo2/bin/zkServer.sh status #通过选举节点2为leader
ZooKeeper JMX enabled by default
Using config: /zoo/zoo2/bin/../conf/zoo.cfg
Mode: leader
[root@hadoop /]# /zoo/zoo1/bin/zkServer.sh status #节点1为follower
ZooKeeper JMX enabled by default
Using config: /zoo/zoo1/bin/../conf/zoo.cfg
Mode: follower [root@hadoop /]# /zoo/zoo3/bin/zkServer.sh start #启动节点3
ZooKeeper JMX enabled by default
Using config: /zoo/zoo3/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED [root@hadoop /]# jps #3个QuorumPeerMain代表3个节点启动成功
QuorumPeerMain
Jps
QuorumPeerMain
QuorumPeerMain [root@hadoop /]#
[root@hadoop /]# /zoo/zoo3/bin/zkServer.sh status #leader已被选举出来,节点3只能当follower了
ZooKeeper JMX enabled by default
Using config: /zoo/zoo3/bin/../conf/zoo.cfg
Mode: follower
[root@hadoop /]# /zoo/zoo1/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /zoo/zoo1/bin/../conf/zoo.cfg
Mode: follower
[root@hadoop /]# /zoo/zoo2/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /zoo/zoo2/bin/../conf/zoo.cfg
Mode: leader

5.如何同时关闭zookeeper所有节点?

[root@hadoop data]# kill - `ps -ef|grep zookeeper|awk '{print $2}'` #杀死进程 
#注意:单引号外面的一层是反引号(Tab上面的那个键),用于命令嵌套
-bash: kill: () - No such process
[root@hadoop data]# ps -ef|grep zookeeper #查看进程
root : pts/ :: grep --color=auto zookeeper

三 集群模式

集群模式就是在不同主机上安装zookeeper然后组成集群的模式。安装方式与伪集群模式类似。下边以在hadoop/hadoop2/hadoop3三台主机上安装为例。

1.首先在hadoop主机上以单机模式安装zookeeper,然后将其打包复制到另外两台主机hadoop2和hadoop3上,并都解压到同样的目录下。

2.分别修改3个节点的配置文件

[root@hadoop ~]# vi /usr/local/zookeeper/conf/zoo.cfg #节点1,,3均修改如下
#对于节点1,,,由于安装目录都一样,所以dataDir和dataLogDir不需要改变
#节点1,,3分别在不同机器上,所以clientPort也不需要改变
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/data/log
clientPort=
#3个节点分别在3台机器上,端号可以一样
server.=hadoop::
server.=hadoop2::
server.=hadoop3::

3.分别修改3个节点的myid文件。3个节点的myid文件分别写入1,2,3,方法参考伪集群模式

附myid数字生成法(我没用这个脚本执行,大家感兴趣可以尝试)

#!/bin/bash
#在执行该脚本前,请确保zookeeper已经复制到各个节点服务器上
i=
for j in `sed '1,2d' /etc/hosts|awk '{print $1}'`
do
ssh $j "echo $i > /usr/local/zookeeper/data/myid"
i=$(($i+))
echo $i
done

4.分别启动3个zookeeper集群节点,方法参考伪集群模式

附zookeeper状态脚本

[root@hadoop ~]# cd /usr/local/zookeeper/bin/
[root@hadoop bin]# vi zoo_status.sh
#!/bin/bash
for i in `cat /etc/hosts|awk '{print $2}' | grep -v localhost`
do
ssh $i << EOF
zkServer.sh status
EOF
done
[root@hadoop bin]# chmod zoo_status.sh
[root@hadoop bin]# zoo_status.sh

zookeeper三种模式安装详解(centos 7+zookeeper-3.4.9)的更多相关文章

  1. Window下PHP三种运行方式图文详解,window下的php是不是单进程的?

    Window下PHP三种运行方式图文详解,window下的php是不是单进程的? PHP运行目前为止主要有三种方式: a.以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache ...

  2. python selenium 三种等待方式详解[转]

    python selenium 三种等待方式详解   引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待 ...

  3. C++的三种继承方式详解以及区别

    目录 目录 C++的三种继承方式详解以及区别 前言 一.public继承 二.protected继承 三.private继承 四.三者区别 五.总结 后话 C++的三种继承方式详解以及区别 前言 我发 ...

  4. Centos7 zookeeper单机/集群安装详解和开机自启

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

  5. kafka1 三种模式安装

    一 搭建单节点单broker的kafka集群 注意:请打开不同的终端分别执行以下步骤 1.复制安装包到/usr/local目录下,解压缩,重命名(或者软链接),配置环境变量 [root@hadoop ...

  6. Python selenium 三种等待方式详解

    1. 强制等待第一种也是最简单粗暴的一种办法就是强制等待sleep(xx),强制让闪电侠等xx时间,不管凹凸曼能不能跟上速度,还是已经提前到了,都必须等xx时间.看代码: # -*- coding: ...

  7. O(n*logn)级别的算法之二(快速排序)的三种实现方法详解及其与归并排序的对比

    一,单路快排1.测试用例: #ifndef INC_06_QUICK_SORT_DEAL_WITH_NEARLY_ORDERED_ARRAY_SORTTESTHELPER_H #define INC_ ...

  8. C++中函数调用时的三种参数传递方式详解

    在C++中,参数传递的方式是“实虚结合”. 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) 按值传递的过程为:首先计 ...

  9. iOS中 三种随机数方法详解

    ios 有如下三种随机数方法: //第一种 srand((unsigned)time(0)); //不加这句每次产生的随机数不变 int i = rand() % 5; //第二种 srandom(t ...

随机推荐

  1. [IR] Open Source Search Engines

    From:http://blog.csdn.net/xum2008/article/details/8740063 本文档是对现有的开源的搜索引擎的一个简单介绍 1.    Lucene Lucene ...

  2. Kubernetes部署SpringCloud(二) 部署ZUUL与服务 非host, 伸缩与负载均衡

    因为服务需要可缩容,所以不能使用host部署. 涉及两个应用,zuul,basic-info-api 验证,在k8s任意一个node 从zuul 访问 basic-info-api 创建一个Sprin ...

  3. Spark Pipeline

    一个简单的Pipeline,用作estimator.Pipeline由有序列的stages组成,每个stage是一个Estimator或者一个Transformer. 当Pipeline调用fit,s ...

  4. 通过USB转TTL串口下载stm32程序

    目录: 1.硬件及其接线 2.驱动及软件 3.下载程序测试 1.硬件及其接线 1.1 USB转TTL刷机板(CH340模块升级小板) 1.2 主芯片STM32F103C8T6开发板 1.3接线 1.3 ...

  5. 洛谷P1162 填涂颜色【bfs】

    题目链接:https://www.luogu.org/problemnew/show/P1162 题意: 有一个0和1组成的矩阵,一些1组成一个闭合圈,圈住一些0,现在要把被圈住的这些0变成2输出. ...

  6. html学习_网页与html直接的关系

  7. 将GitLab数据库从阿里云PostgreSQL RDS迁移至自建的PostgreSQL服务器

    阿里云RDS目前支持的是PostgreSQL 9.4,而gitlab支持的最低版本是PostgreSQL 9.6.1,不升级PostgreSQL,gitlab就无法升级,阿里云RDS短期内不进行升级, ...

  8. 运行里用\\加IP地址访问远程主机和用mstsc登录远程主机有什么区别??

    \\ip是访问共享:mstsc是直接远端控制主机 "\\加IP",只要是windows,除win9x外,默认系统自带共享服务,除非有防火墙,或者手工关闭lanmanserver & ...

  9. [No0000187]可能是把Java内存区域讲的最清楚的一篇文章

    写在前面(常见面试题) 基本问题: 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针 ...

  10. win10环境下搭建zookeeper伪集群

    一.下载zookeeper https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 这里笔者下载的是zookeeper-3.3.6 二.配置zoo ...