<Using ZooKeeper><Deploy & Use>
安装与部署
- 配置过程相当简单。集群模式部署:
wget http://www-us.apache.org/dist/zookeeper/stable/zookeeper-3.4.10.tar.gz
tar -xzf zookeeper-3.4.10.tar.gz
cp zoo_sample.cfg zoo.cfg
- 修改zoo.cfg如下
- mkdir `dataDir`
- 在dataDir下建立文件myid。里面对应的是该host的myid。
- 配置文件 zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes. 该目录下需要myid文件
dataDir=/root/wttttt/zookeeper/zkDataDir
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
server.1=host98:2888:3888
server.2=host99:2888:2888
server.3=host101:2888:3888 - 启动成功后,验证三台机器的情况:




- zk的bin目录下有一些可执行脚本
- zkCleanup: 清理zk历史数据,包括事务日志文件和快照数据文件
- zkCli: zk的一个简易客户端
- zkEnv: 设置zk的环境变量
- zkServer: zk服务器的启动、停止和重启脚本
客户端脚本
- 启动客户端sh zkCli.sh。看到输出: (sh zkCli.sh -server ip:port)
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
则说明client已经成功连接上本地zk server(启动时没有指定zk地址则默认连接本地zk server)了。 - 创建:create [-s] [-e] path data acl [-s 持久节点] [-e 临时节点]
如下是在根目录下创建了一个叫做/zk-test的临时节点,节点的数据内容是“123”,默认不做任何权限控制。[zk: localhost:2181(CONNECTED) 0] create -e /zk-test 123
Created /zk-test - 读取:
- ls命令,可以列出zk指定节点下的所有子节点 ls path [watch]
[zk: localhost:2181(CONNECTED) 2] ls /
[zk-test, zookeeper]
[zk: localhost:2181(CONNECTED) 3] ls /zk-test
[] - get命令,可以获取zk指定节点的数据内容和属性信息。 get path [watch]
[zk: localhost:2181(CONNECTED) 4] get / cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2
[zk: localhost:2181(CONNECTED) 5] get /zk-test
123
cZxid = 0x100000002
ctime = Sun Sep 24 15:29:48 CST 2017
mZxid = 0x100000002
mtime = Sun Sep 24 15:29:48 CST 2017
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x25eb2c360850000
dataLength = 3
numChildren = 0
- ls命令,可以列出zk指定节点下的所有子节点 ls path [watch]
- 更新:set命令,可以更新指定节点的数据内容 set path data [version]
[zk: localhost:2181(CONNECTED) 6] set /zk-test 1234
cZxid = 0x100000002
ctime = Sun Sep 24 15:29:48 CST 2017
mZxid = 0x100000003
mtime = Sun Sep 24 15:35:45 CST 2017
pZxid = 0x100000002
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x25eb2c360850000
dataLength = 4
numChildren = 0可以看到更新之后,节点的mZxid加一了。dataVersion也从0变成1了。
- 删除:delete命令,可以删除zk上指定的节点。 delete path [version]
Java客户端API的使用
- TBD...
<Using ZooKeeper><Deploy & Use>的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- 原生js实现放大镜
效果: 1. 鼠标放上去会有半透明遮罩.右边会有大图片局部图 2. 鼠标移动时右边的大图片也会局部移动 放大镜的关键原理: 鼠标在小图片上移动时,通过捕捉鼠标在小图片上的位置,定位大图片的相应位置 ...
- mac下 配置homebrew 和java home
1.terminal下输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/insta ...
- python-flask-请求源码流程
启动先执行manage.py 中的 app.run() class Flask(_PackageBoundObject): def run(self, host=None, port=None, ...
- 牛客练习赛30-A/C
链接:https://ac.nowcoder.com/acm/contest/216/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...
- vs 2017 Integrated Security 为sspi 含义
关于sql连接语句中的Integrated Security=SSPI解决方法:即:Security Support Provider Interface设置Integrated Security为 ...
- 1.11 UML 类图(多看多用就熟悉了)(节选自:《大话设计模式》)
类:用矩形框表示(类图分三层) 第一层显示类的名称:(如果是抽象类,就用斜体显示) 第二层是类的特性,通常就是字段和属性: 第三层是类的操作,通常是方法或行为. (注意前面的符号,“+” 表示 pub ...
- summer_19th,Nov 2018
一.内存管理: Cpython解释器的垃圾回收机制 一个没有绑定任何变量名的值被称为垃圾,即该值的引用计数为零. 二.变量值的三个特点: id: 内存地址 type: 数据类型 值 总结:id相同,值 ...
- ElasticSearch的matchQuery与termQuery区别
matchQuery:会将搜索词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到. termQuery:不会对搜索词进行分词处理,而是作为一个整体与目标字段进行匹配,若 ...
- swagger注释@API详细说明
swagger是当前最好用的Restful API文档生成的开源项目,通过swagger-spring项目实现了springMVC框架的无缝集成功能,方便生成restful风格的接口文档, 同时,s ...
- PAT-GPLT训练集 L1-039 古风排版
PAT-GPLT训练集 L1-039 古风排版 注意:在输入字符串时,最后一个字符为'\0', 虽然输出时显示为空格,但是系统检查为‘\0’!!! 代码: #include<stdio.h> ...