Apache ZooKeeper 单机、集群部署文档
简介:
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 单机、集群部署文档的更多相关文章
- HP DL160 Gen9服务器集群部署文档
HP DL160 Gen9服务器集群部署文档 硬件配置=======================================================Server Memo ...
- Redis集群部署文档(Ubuntu15.10系统)
Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...
- redis多机集群部署文档
redis多机集群部署文档(centos6.2) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下 ...
- kafka集群部署文档(转载)
原文链接:http://www.cnblogs.com/luotianshuai/p/5206662.html Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候 ...
- 二进制搭建一个完整的K8S集群部署文档
服务器规划 角色 IP 组件 k8s-master1 192.168.31.63 kube-apiserver kube-controller-manager kube-scheduler etcd ...
- 从零开始,无DNS vcenter 6.7 vmotion热迁移,存储集群部署文档。
1,环境准备 准备:Vmware workstation环境 IP地址段规划 ESXI主机IP地址段 192.168.197.4-192.168.197.10 Vcenter Server集群IP地址 ...
- Apache Hadoop 集群安装文档
简介: Apache Hadoop 集群安装文档 软件:jdk-8u111-linux-x64.rpm.hadoop-2.8.0.tar.gz http://www.apache.org/dyn/cl ...
- zookeeper单机集群搭建
1. 下载zookeeper 参考官方文档下载一节:https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_Download ...
- Zookeeper+Kafka集群部署
Zookeeper+Kafka集群部署 主机规划: 10.200.3.85 Kafka+ZooKeeper 10.200.3.86 Kafka+ZooKeeper 10.200.3.87 Kaf ...
随机推荐
- BZOJ3707 圈地
只会O(n ^ 3)路过= = OrzOrzOrzOrzOrz "出题人题解: 显然,这时候暴力枚举会T.于是我们转变一下思路,如果我们确定了2个点以后,第三个点有必要去盲目的枚举吗?答案是 ...
- 040——VUE中组件之组件间的数据参props的使用实例操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SPOJ VLATTICE Visible Lattice Points 莫比乌斯反演 难度:3
http://www.spoj.com/problems/VLATTICE/ 明显,当gcd(x,y,z)=k,k!=1时,(x,y,z)被(x/k,y/k,z/k)遮挡,所以这道题要求的是gcd(x ...
- react native遇到的坑
1.模拟器报错no bundle url present https://github.com/facebook/react-native/issues/12754 http://www.cnblog ...
- ADS1.2使用
ADS编译错误Error : A1163E: Unknown opcode ARM汇编指令不支持顶格写,否则不能识别,指令前加上空格即可. 使用for(;;;)//死循环,编译报错如下,说是该语句有错 ...
- checkbox不显示,试试去掉-webkit-appearance这个样式
目前在项目中发现一个大坑,搞的我找了好久不知道因为什么,自用的reset.css中加入了 -webkit-appearance: none;其他所有表单没有出现问题,但checkbox会不显示,值改为 ...
- ES6中箭头函数的作用
我们知道在ES6中,引入了箭头函数,其本质就是等同有ES5中的函数.类似于下面的写法: let test1=() => “abc”; let test2=() => { return “a ...
- 手机dp和px的转换
1dp 0.75px ----> 320*240 1dp 1px ----->480*320 1dp 1.5px ----->800*480 4 ...
- PAT 1021 个位数统计 C语言
1021. 个位数统计 (15) 给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + d0 (0<=di<=9, i=0,...,k-1, dk-1>0) ...
- (经典) K&R的名著<<C程序设计语言>>二分查找
#include<stdio.h> //查找成功则返回所在下标否则返回-1 int binsearch(int A[], int n,int a) { int low, high, mid ...