简介:

Apache ZooKeeper 是一个分布式应用的高性能协调服务,功能包括:配置维护、统一命名、状态同步、集群管理、仲裁选举等。

下载地址:http://apache.fayea.com/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

官方文档:http://zookeeper.apache.org/doc/r3.4.10/zookeeperStarted.html

一、安装 ZooKeeper

shell > java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) -Bit Server VM (build 25.111-b14, mixed mode)

# JAVA 是必不可少的

shell > cd /usr/local/src
shell > wget http://apache.fayea.com/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz shell > tar zxf zookeeper-3.4..tar.gz -C ../ shell > chown -R root.root /usr/local/zookeeper-3.4.

二、配置、启动、客户端、停止 ZooKeeper

1、生成配置文件

shell > cd /usr/local/zookeeper-3.4.

shell > cp conf/zoo_sample.cfg conf/zoo.cfg

2、启动 ZooKeeper

shell > sh bin/zkServer.sh start

# 查看进程ID
shell > jps
QuorumPeerMain # 端口监听状态
shell > netstat -lnpt | grep
tcp ::: :::* LISTEN /java # ZooKeeper 启动模式 standalone
shell > sh bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: standalone

3、客户端连接

shell > sh bin/zkCli.sh -server localhost:
# 打印根目录
[zk: localhost:(CONNECTED) ] ls /
[zookeeper]
# 层级目录
[zk: localhost:(CONNECTED) ] ls /zookeeper
[quota]
# 显示帮助信息
[zk: localhost:(CONNECTED) ] ?
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port

# ZooKeeper 维护着一个类似文件系统的内存结构
# 连接时不指定 -server 默认连接本机 2181 端口
# 当输入 ZooKeeper 无法识别的指令时,打印帮助信息

4、停止 ZooKeeper

shell > sh bin/zkServer.sh stop

三、ZooKeeper 集群部署

192.168.1.27 datanode01.hadoop
192.168.1.28 datanode02.hadoop
192.168.1.29 datanode03.hadoop

# 部署 ZooKeeper 集群,建议 3 台及以上奇数主机 ( 涉及到仲裁问题 )

# JAVA、下载、解压、修改属主、组

1、修改配置文件

shell > vim conf/zoo.cfg
# 心跳间隔 毫秒
tickTime=
# 初始化时,允许的超时心跳间隔次数
initLimit=
# Leader 与 Follower 同步数据允许的超时心跳间隔次数
syncLimit=
# 监听端口
clientPort=
# 数据目录
dataDir=/data/zookeeper/data
# 日志目录
dataLogDir=/data/zookeeper/logs
# ZooKeeper Server 地址,通信端口、选举端口
server.=192.168.1.27::
server.=192.168.1.28::
server.=192.168.1.29::

# 每台都要有哦~

2、创建目录

shell > mkdir -p /data/zookeeper/{data,logs}

# 每台都要有哦~

3、生成节点标识文件

shell > echo  > /data/zookeeper/data/myid

shell > echo  > /data/zookeeper/data/myid

shell > echo  > /data/zookeeper/data/myid

# 分别在三台服务器上执行,需要跟配置文件中的 server.1\2\3 对应

4、启动 ZooKeeper

shell > ansible datanode -m shell -a '/usr/local/zookeeper-3.4.10/bin/zkServer.sh start'
datanode02.hadoop | SUCCESS | rc= >>
Starting zookeeper ... STARTEDZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg datanode03.hadoop | SUCCESS | rc= >>
Starting zookeeper ... STARTEDZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg datanode01.hadoop | SUCCESS | rc= >>
Starting zookeeper ... STARTEDZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg

# 全部成功启动

shell > ansible datanode -m shell -a '/usr/local/zookeeper-3.4.10/bin/zkServer.sh status'
datanode03.hadoop | SUCCESS | rc=0 >>
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader

datanode02.hadoop | SUCCESS | rc=0 >>
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

datanode01.hadoop | SUCCESS | rc=0 >>
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

# 查看状态,datanode03.hadoop 为 leader ,其余两台为 follower

5、验证选举

shell > sh bin/zkServer.sh stop

# 关闭 datanode03.hadoop 服务器上的 ZooKeeper,原 leader

shell > ansible datanode -m shell -a '/usr/local/zookeeper-3.4.10/bin/zkServer.sh status'
datanode03.hadoop | FAILED | rc=1 >>
Error contacting service. It is probably not running.ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg

datanode02.hadoop | SUCCESS | rc=0 >>
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader

datanode01.hadoop | SUCCESS | rc=0 >>
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

# 再次查看状态,datanode02.hadoop 升级为 leader,datanode01.hadoop 仍为 follower

# 注意:三台 ZooKeeper Server 组成的集群,当两台故障时,整个集群失败 ( 剩余的一台无法继续提供服务 )

6、客户端连接

shell > sh bin/zkCli.sh -server 192.168.1.27:,192.168.1.28:,192.168.1.29:

# 注意:
# 客户端连接集群,只写一个地址时,当这台 Server 宕机,则客户端连接失败
# 同时写多个地址( 全写 )时,除集群失败外,不影响客户端连接
# 写多个地址时,以 , 分割,, 两边不能有空格

shell > sh bin/zkCli.sh -server 192.168.1.27:
[zk: 192.168.1.27:(CONNECTED) ] ls /
[zookeeper]

# 客户端只连接 1.27,显示只有一个默认的 znode

shell > sh bin/zkCli.sh -server 192.168.1.28:
[zk: 192.168.1.28:(CONNECTED) ] ls /
[zookeeper]
[zk: 192.168.1.28:(CONNECTED) ] create /zk 'mydata'
Created /zk
[zk: 192.168.1.28:(CONNECTED) ] ls /
[zk, zookeeper]
[zk: 192.168.1.28:(CONNECTED) ] get /zk
mydata
cZxid = 0x400000005
ctime = Thu May :: CST
mZxid = 0x400000005
mtime = Thu May :: CST
pZxid = 0x400000005
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =

# 新客户端连接 1.28,创建一个 znode

shell >
[zk: 192.168.1.27:(CONNECTED) ] ls /
[zk, zookeeper]
[zk: 192.168.1.27:(CONNECTED) ] get /zk
mydata
cZxid = 0x400000005
ctime = Thu May :: CST
mZxid = 0x400000005
mtime = Thu May :: CST
pZxid = 0x400000005
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =

# 刚才连接的 1.27,可以显示、获取这个新建的 znode

shell >
[zk: 192.168.1.27:(CONNECTED) ] set /zk 'share'
cZxid = 0x400000005
ctime = Thu May :: CST
mZxid = 0x400000006
mtime = Thu May :: CST
pZxid = 0x400000005
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =

# 给这个 znode 重新设置一个值

shell >
[zk: 192.168.1.28:(CONNECTED) ] get /zk
share
cZxid = 0x400000005
ctime = Thu May :: CST
mZxid = 0x400000006
mtime = Thu May :: CST
pZxid = 0x400000005
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =

# 连接 1.28 的客户端,也获取到了更新后的值

shell >
[zk: 192.168.1.28:(CONNECTED) ] delete /zk
[zk: 192.168.1.28:(CONNECTED) ] ls /

# 删除创建的 znode

# 实验表明:
# ZooKeeper 是任意读写的!

Apache ZooKeeper 单机、集群部署文档的更多相关文章

  1. HP DL160 Gen9服务器集群部署文档

    HP DL160 Gen9服务器集群部署文档 硬件配置=======================================================Server        Memo ...

  2. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...

  3. redis多机集群部署文档

    redis多机集群部署文档(centos6.2) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下 ...

  4. kafka集群部署文档(转载)

    原文链接:http://www.cnblogs.com/luotianshuai/p/5206662.html Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候 ...

  5. 二进制搭建一个完整的K8S集群部署文档

    服务器规划 角色 IP 组件 k8s-master1 192.168.31.63 kube-apiserver kube-controller-manager kube-scheduler etcd ...

  6. 从零开始,无DNS vcenter 6.7 vmotion热迁移,存储集群部署文档。

    1,环境准备 准备:Vmware workstation环境 IP地址段规划 ESXI主机IP地址段 192.168.197.4-192.168.197.10 Vcenter Server集群IP地址 ...

  7. Apache Hadoop 集群安装文档

    简介: Apache Hadoop 集群安装文档 软件:jdk-8u111-linux-x64.rpm.hadoop-2.8.0.tar.gz http://www.apache.org/dyn/cl ...

  8. zookeeper单机集群搭建

    1. 下载zookeeper 参考官方文档下载一节:https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_Download ...

  9. Zookeeper+Kafka集群部署

    Zookeeper+Kafka集群部署 主机规划: 10.200.3.85  Kafka+ZooKeeper 10.200.3.86  Kafka+ZooKeeper 10.200.3.87  Kaf ...

随机推荐

  1. Hadoop1.2.1完全分布模式安装教程

    假设有三台机器,它们的IP地址和对应的主机名为: 192.168.12.18           localhost.localdomain 192.168.2.215           rhel5 ...

  2. OCX组件

    转自:http://blog.sina.com.cn/s/blog_4ca9ceef0100ixzb.html 一.OCX(OLE Control Extensio,OLE Object Linkin ...

  3. 在TypeScript中使用其他JS框架或库的方法

    最近刚刚接触TypeScript,感觉非常强大,但是也有一些问题. 比如我们正常写js时,只要把其他js库引入页面,甚至于只要加入到项目中,ReSharper就会自动分析他,并提供语法只能感知,写代码 ...

  4. 关于面向对象和String类型的 09,10

    package test.面试题; public class Test9 { public static void main(String[] args){ Outer.Inner in=new Ou ...

  5. 经典排序方法 python

    数据的排序是在解决实际问题时经常用到的步骤,也是数据结构的考点之一,下面介绍10种经典的排序方法. 首先,排序方法可以大体分为插入排序.选择排序.交换排序.归并排序和桶排序四大类,其中,插入排序又分为 ...

  6. Python数据类型-03.序列-列表和元组

    本文主要记录关于Python序列中列表和元组的定义特点和常用方法 1.序列(sequence) 1.1.序列的定义 序列是一组有顺序的元素的集合(其实是是对象的集合,后期会引入“对象”这个概念)序列包 ...

  7. Struts2自定义标签3模仿原有的s:if s:elseif s:else自定义自己的if elsif else

    第一步:webroot/web-inf下简历str.tld文件 <?xml version="1.0" encoding="UTF-8"?> < ...

  8. vue中去掉url地址栏中的#符号

    要去掉vue中访问地址中的#符号可以在路由器中设置路由模式为history: export default new Router({ mode:'history', routes: [ { path: ...

  9. v4l2框架函数调用关系

    所有的设备节点和子设备节点都是通过__video_register_device()注册的 1.对于video设备节点: 用户空间ioctl(VIDIOC_S_FMT)---> v4l2_fop ...

  10. ORA-01033: ORACLE initialization or shutdown in progress --手动删除表空间 DBF 后无法登陆问题

    进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID: 2.执行sqlplus "/as sysdba" SQL>shutdown immediat ...