标签:ext ima tab 本地 start 机器 地方 sha 不同
1. Zookeeper简介架构模型:
zookeeper集群中,会自动复制到集群中的每个节点,是数据保持一致。同时数据保留在内存中,所以有很低的延迟和高吞吐量,zookeeper的数据库的大小受宿主机的内存大小的限制,从而会限制znode的数量。
客户端连接zookeeper服务,必须知道zookeeper服务的列表(ip list),客户端只会连接一个zookeeper服务,当该服务挂了,就会找zookeeper服务列表里的其他地址并连接。
读请求---发送到客户端连接的zookeeper服务,而写请求会发送到所有的zookeeper服务,然后在这个写请求在完成集群中协商一致性后才会有回应客户端的行为。这里就体现了读和写的区别了,这种情况导致读取请求的吞吐量与服务器的数量成比例,写入请求的吞吐量随着服务器的数量增加而减少。
在zookeeper中顺序是非常重要的,响应的执行的顺序是强制的。它用的是一个唯一的zxid(ZooKeeper Transaction Id)来标记每一个请求,
系统要求
软件要求:
zookeeper运行于Java环境下,需要JDK1.6及以上。3个节点是最小的(奇数个),但是生产环境中最好使用5个,同时最好不要将这5台放到同一个交换机下,防止交换机宕机导致集群全部失效,以集群的形式运行,硬件要求2cpu/2G/80硬盘即可满足需求。
这里以集群形式讲解(以三个节点为例)
下载地址:
jdk: http://java.sun.com/javase/downloads/index.jsp
zookeeper: https://www.apache.org/dyn/closer.cgi/zookeeper/
当然可以选择就近的镜像站下载zookeeper:http://mirror.bit.edu.cn/apache/zookeeper/
wget http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz
tar xf zookeeper-3.4.12.tar.gz -C /data/
cd /data/
ln -s zookeeper-3.4.12 zookeeper
至此安装完毕。
2.1.1简单配置文件讲解:
zookeeper有一个最小配置zoo_sample.cfg,这个一般就是最小配置。如下:
[root@node1 conf]# grep -v ^# zoo_sample.cfg
tickTime=2000 #以ms为单位,心跳和超时时间。
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper #zookeeper存储数据库快照地方及事务日志,生产中日志最好别再此处。
clientPort=2181 #客户端连接的端口
globalOutstandingLimit (Java system property: zookeeper.globalOutstandingLimit.)
默认是1000的限制,它的作用主要是防止高并发场景zookeeper处理不了过多的客户端连接,从而导致超出系统内存,进一步导致zookeeper异常。
preAllocSize (Java system property: zookeeper.preAllocSize)
默认block 大小为64M,如果快照频繁,那么需要调整该值,降低一些。
snapCount (Java system property: zookeeper.snapCount)
我们知道zookeeper使用的是snapshot和事务日志来进行记录事务的。在一次快照前,snapCount决定了多少次事务记录到事务日志中。
maxClientCnxns
最大连接数量,说白了就是防止Ddos×××用,默认是60,如果设置为0表示不限制。
minSessionTimeout
默认是 tickTime的2倍
maxSessionTimeout
默认是 tickTime的20倍
fsync.warningthresholdms (Java system property: zookeeper.fsync.warningthresholdms)
如果事务日志在写入日志时调用fsync函数,如果超过此值会在日志中显示警告的信息。默认是1000ms,这个值最好设置为系统的时间。
autopurge.purgeInterval
自动清理日志和快照的功能,默认是不开启的,适用于3.4版本,指定清理频率,单位是小时,默认是0,表示不清理。
autopurge.snapRetainCount
适用于3.4版本,当前面的开启后,那么zookeeper会保留多少文件来进行清除多余的快照和日志。默认是3,最小也是3
syncEnabled (Java system property: zookeeper.observer.syncEnabled)
默认开启,为了降低观察者从故障中恢复的时间。
[root@node2 conf]# cat zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/zookeeper/data
clientPort=2181
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
注意:server.myid=host:port1:port2中,myid必须是唯一的,取值范围为1-255
配置全局变量jdk及zookeeper:
[root@node3 data]# tail -n 4 /etc/profile
export JAVA_HOME=/data/jdk
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export ZOOKEEPER_HOME=/data/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
source /etc/profile
启动:zkServer.sh start
查看状态:zkServer.sh status
写入数据并读取:
任意个节点:
执行zkCli.sh 我们看到连接的是本地的2181端口
在其他节点也能查到该值。也就是说集群没有问题。
递归删除子节点
参考文章:
https://zookeeper.apache.org/
https://cwiki.apache.org/confluence/display/ZOOKEEPER/ProjectDescription
https://zookeeper.apache.org/doc/current/zookeeperAdmin.html
标签:ext ima tab 本地 start 机器 地方 sha 不同
原文地址:http://blog.51cto.com/laodou/2159128