原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例
centos7.1下 ZooKeeper 集群安装配置+Python实战范例
下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
解压: tar zxvf zookeeper-3.4.9.tar.gz -C /opt/
改名:cd /opt/ && mv zookeeper-3.4.9 zookeeper && cd zookeeper
建立 data目录
mkdir data
分布式模式配置
ZooKeeper集群一般被称为ZooKeeper ensemble,或者 quorum.
2.1 准备5台机器
假设有五台机器,hostname和ip对应关系是:
192.168.48.13 hzmaster1
192.168.48.17 hzmaster2
192.168.48.16 hzslave1
192.168.48.5 hzslave2
192.168.48.12 hzslave3
ZooKeeper不存在明显的master/slave关系,各个节点都是服务器,leader挂了,会立马从follower中选举一个出来作为leader.
由于没有主从关系,也不用配置SSH无密码登录了,各个zk服务器是自己启动的,互相之间通过TCP端口来交换数据。
2.2 修改配置文件/opt/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
clientPort=2181
server.0=192.168.48.13:2888:3888
server.1=192.168.48.17:2888:3888
server.2=192.168.48.16:2888:3888
server.3=192.168.48.5:2888:3888
server.4=192.168.48.12:2888:3888
我一般把服务器程序,即需要启动daemon进程的程序,放在单独的用户里安装;且用户的数据,放在local/var下面,所以我的dataDir是/home/zookeeper/local/var/zookeeper。
2.3 myid文件
要在每台机器的dataDir下,新建一个myid文件,里面存放一个数字,用来标识当前主机。
hzmaster1:$ echo "0" >>/opt/zookeeper/data/myid
hzmaster2:$ echo "1" >>/opt/zookeeper/data/myid
hzslave1:$ echo "2" >>/opt/zookeeper/data/myid
hzslave2:$ echo "3" >>/opt/zookeeper/data/myid
hzslave3:$ echo "4" >>/opt/zookeeper/data/myid
2.4 启动每台机器
hzmaster1:$ /opt/zookeeper/bin/zkServer.sh start
hzmaster2:$ /opt/zookeeper/bin/zkServer.sh start
hzslave1:$ /opt/zookeeper/bin/zkServer.sh start
hzslave2:$ /opt/zookeeper/bin/zkServer.sh start
hzslave3:$ /opt/zookeeper/bin/zkServer.sh start
启动顺序无关
2.5 查看状态
$ /opt/zookeeper/bin/zkServer.sh status
3 使用java客户端连接ZooKeeper集群
找一台机器,解压zookeeper压缩包,不用配置,就可以使用Java客户端连接ZooKeeper集群中的任意一台服务器了。
$ /opt/zookeeper/bin/zkCli.sh -server hzmaster2
常用命令:
1. 启动ZK服务: sh bin/zkServer.sh start
2. 查看ZK服务状态: sh bin/zkServer.sh status
3. 停止ZK服务: sh bin/zkServer.sh stop
4. 重启ZK服务: sh bin/zkServer.sh restart
客户端工具
./zkCli.sh
ZooKeeper命令行工具类似于Linux的shell环境,不过功能肯定不及shell啦,但是使用它我们可以简单的对ZooKeeper进行访问,数据创建,数据修改等操作. 使用 zkCli.sh -server 127.0.0.1:2181 连接到 ZooKeeper 服务,连接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息。
命令行工具的一些简单操作如下:
1. 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容
2. 显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据
3. 创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与它关联的字符串
4. 获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串
5. 修改文件内容: set /zk "zkbak" 对 zk 所关联的字符串进行设置
6. 删除文件: delete /zk 将刚才创建的 znode 删除
7. 退出客户端: quit
8. 帮助命令: help
删除要逐层删除才可以,子节点下如果还有内容就不能删除!
一段python代码:
#coding=utf-8
__author__ = 'huangzhi'
import kazoo
import logging
from time import sleep
from kazoo.client import KazooClient
import time
import logging
logging.basicConfig()
zk = KazooClient(hosts='192.168.51.19:2181,192.168.51.85:2181,192.168.51.196:2181,192.168.51.225:2181,192.168.51.227:2181')
# zk = KazooClient(hosts='192.168.51.19:2181')
zk.start(timeout=2)
print (zk.state)
def myWatch(handler):
# 保证可以被重复监听,值发生变化后会立即触发
value = zk.get('/test', myWatch)
print(value[0].decode())
print(zk.hosts)
"""An ephemeral node will be automatically removed by ZooKeeper
when the session associated with the creation of the node
expires.
"""
# zk.create("/test", value=b"a test value", ephemeral=True) #退出后自动删除
# zk.create("/test", value=b"a test value", ephemeral=False) #退出后不自动删除
# zk.set('test', b"hello I'm")
value = zk.get('/test', myWatch)
print(value[0].decode())
for v in value:
print(v)
# print (zk.state) #CONNECTED
# print (zk.randomize_hosts)
# Ensure a path, create if necessary
# zk.ensure_path("/test/failure_detection")
#
# # Create a node with data
# zk.create("/test/failure_detection/worker", value=b"a test value", ephemeral=True)
while True:
# print ("I am alive!")
time.sleep(1)
zk.stop()
python3.6下运行完美,收工!任何疑问请联系我本人 QQ:99923309
原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例的更多相关文章
- hbase和ZooKeeper集群安装配置
一:ZooKeeper集群安装配置 1:解压zookeeper-3.3.2.tar.gz并重命名为zookeeper. 2:进入~/zookeeper/conf目录: 拷贝zoo_sample.cfg ...
- centos7下zookeeper集群安装部署
应用场景:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件. 它是一个为分布式应用提供一致性服务的软 ...
- windows下zookeeper集群安装
windows下zookeeper单机版安装,见:https://www.cnblogs.com/lbky/p/9867899.html 一:zookeeper节点为什么是奇数个? 单机模式的zk进程 ...
- Zookeeper 集群安装配置,超详细,速度收藏!
今天,栈长分享下 Zookeeper 的集群安装及配置. 下载 下载地址:http://zookeeper.apache.org/ 下载过程就不说了,我们下载了最新的zookeeper-3.4.11. ...
- Zookeeper 集群安装配置
今天,栈长分享下 Zookeeper 的集群安装及配置. 下载 下载地址:http://zookeeper.apache.org/ 下载过程就不说了,我们下载了最新的zookeeper-3.4.11. ...
- 8.3.ZooKeeper集群安装配置
1.Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式. 单机模式:Zookeeper只运行在一台服务器上,适合测试环境: 伪集群模式:就是在一台物理机上 ...
- zookeeper集群安装配置
http://www.firefoxbug.net/?p=2565
- 1、zookeeper集群安装
前提准备3台centos7.0虚拟机 c7003:192.168.70.103 c7004:192.168.70.104 c7005:192.168.70.105 并在三台虚拟机上配置hosts为 1 ...
- Linux下zookeeper集群搭建
Linux下zookeeper集群搭建 部署前准备 下载zookeeper的安装包 http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper ...
随机推荐
- python多版本共存问题
1.环境变量配置,pip路径别忘记加入,否则pip不好使. 2.如果改名python.exe为其他名字,复制一份保留,否则pip容易无法启动进程 参见爆栈: http://stackoverflow. ...
- HTTP 499 状态码 nginx下 499错误
日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产 ...
- bean 的各个属性
http://www.springframework.org/schema/beans/spring-beans.xsd org.springframework.beans.factory.confi ...
- windows下Apache的虚拟主机配置
1.Apache虚拟主机: 在Apache上有关于虚拟主机的具体说明,具体可以参考Apache手册,这里简单的说一下虚拟主机主要分为两种: 1.基于主机名的虚拟主机(一个IP地址,多个网站) 2.基于 ...
- Centos7下修复 视频播放器(先 安装VLC视频播放器)
用最新的CentOS7发现没有视频播放器,于是在http://pkgs.org/上查找,发现了nux dextop仓库上有, 于是到他的官网上http://li.nux.ro/repos.html查了 ...
- Java并发之ReentrantLock详解
一.入题 ReentrantLock是Java并发包中互斥锁,它有公平锁和非公平锁两种实现方式,以lock()为例,其使用方式为: ReentrantLock takeLock = new Reent ...
- (转)最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配. 通常用于格式验证.正则替换.查找子串等 各种编程语言的正则表达式基本相同 ...
- Java笔记(一)GC及类加载
垃圾回收器(GC) 垃圾回收器:java中有一个线程,专门负责JVM中垃圾内存的释放 垃圾:没有引用的内存节点 垃圾回收的算法 注意:垃圾回收有自己的算法,我们是不能控制垃圾回 ...
- JavaWeb -jsp文件和内置对象的解析
jsp文件和内置对象的解析 对page解析 JSP九大内置对象(自带,无需new) 1 out:输出对象 2 request:请求对象,存储“客户端像服务端发送的请求信息” 3 response:响应 ...
- “全栈2019”Java第九十六章:抽象局部内部类详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...