<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 安装并启动 ...
随机推荐
- android--------Socket的简单了解
Socket目录 Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连 ...
- linux文件系统(一)
linux的文件系统以及文件类型一.linux 文件系统: 根文件系统(rootfs) rootfilesystem /etc,/usr,/var,/home,/dev 系统自我运行必须用到的路径:( ...
- array 数组去重 过滤空值等方法
去重操作 第一种方式, ES 6 引入的新书据结构 Set 本身就是没有重复数据的, 可以使用这个数据结构来转化数组.时间复杂度 O(n) 123456 const target = [];const ...
- PHP手册-函数参考-加密扩展
一.Crack.CSPRNG.Hash.Mcrypt.Mhash.OpenSSL.密码散列算法的对比 Crack CSPRNG Hash Mcrypt Mhash OpenSSL 密码散列算法 简 ...
- SpringBoot热部署:spring-boot-devtools在Idea中热部署方法
1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 <!--添加依赖--> <dependency> <groupId>org.sprin ...
- Nodejs--util模块
util.inspect util.inspect是一个将任意对象转换 为字符串的方法,通常用于调试和错误输出. 它至少接受一个参数 object,即要转换的对象. util.inspect(obje ...
- oracle in 函数
IN操作符 select * from scott.emp where empno=7369 or empno=7566 or empno=7788 or empno=9999: ...
- oracle配置访问白名单教程
出于提高数据安全性等目地,我们可能想要对oracle的访问进行限制,允许一些IP连接数据库或拒绝一些IP访问数据库. 当然使用iptables也能达到限制的目地,但是从监听端口变更限制仍可生效.只针对 ...
- 从零开始学习Vue(四)
这里引入一个概念SPA(single Page Application), 接着上次的例子,我们在页面底部做了一个Tab的菜单,点击不同的按钮应该是显示不同的内容. 按传统的MVC的思维,我要在Con ...
- java基础语法运算符
1.1 算数运算符++.--的使用 在一般情况下,算数运算符不会改变参与计算的变量值.而是在原有变量值不变的情况下,计算出新的值.但是有些操作符会改变参与计算的变量的值, ...