zookeeper安装部署步骤

安装步骤

本安装教程,接纳zookeeper 3.6.1

  1. 装java
  2. 下载zk包,分发到各个机械
  3. 确定或建立一个zookeeper的数据存放路径,并在该路径下建立一个myid文件,其中设置当前zookeeper节点的编号,编号局限1~255。整个zookeeper集群唯一
  4. 在数据文件夹建立一个initialize文件,初始化集群时使用,启动后,集群会自动删除该文件。后续重启集群,不需要该文件

initialize文件

3.6.0的zk,在启动后,若是发现自己的data 目录是空的,则不会介入集群选举,知道该节点连上一个master, 然后从其同步过完整的数据后,才具有选举权 ,之以是这么做的原因是。万一谁不小心删了数据文件,这个时刻重启该节点,若是运行该节点介入选举,要是该节点被选成master, 会导致怎个集群数据丢失。

但第一次启动集群,人人确实都没数据,若是都没有选举权的话,第一次选举就不会举行,以是要在data 目录下建立一个initialize文件,暂时屏障调3.6.0的数据丢失珍爱功效。集群启动,正常选举后,该文件会被删除,进入数据丢失的珍爱机制

设置文件

一样平常可直接设置zk发型包conf下的zoo.cfg文件

tickTime=2000
dataDir=/var/lib/zookeeper/data
dataLogDir=/var/lib/zookeeper/log #默认dataLogDir和dataDir在一起,最好将其离开,以提高zk性能。由于同时写数据和日志到一个磁盘,磁盘会有些瓶颈限制
autopurge.purgeInterval=1 #开启定期清算功效,以免数据和日志文件过大
autopurge.snapRetainCount=1000
clientPort=2181 #zk集群对外提供服务的端口
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888 #"server.1"中的1,即是该机械在数据文件夹中设置的myid。 zoo1,zoo2,zoo3是zk集群的节点hostname或ip。 2888是follower用来跟leader通讯的端口,3888是用来选举leader的端口
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

影响性能的点

数据盘自力

磁盘的读写性能会严重影响到zk的性能。以是只管将zk的数据存储目录防止带单独的磁盘。有条件的话,将其日志文件路径也放置到单独磁盘。同其它程序共用一个磁盘,当磁盘读写性能泛起瓶颈时,zk的性能会急速下降

内存不要超机械限制

当zk申请的内存跨越操作系统的空闲内存,那么操作系统会启用swap机制,即行使硬盘做为交流内存。这也将严重影响zk的性能。以是若是系统有4g内存,那么zk申请内存最好小于即是3G。

cp: 无法创建普通文件 : 文件已存在

两种启动方式

使用自带剧本

在bin下 ./zkServer.sh start
该zkServer.sh会首先执行zkEnv.sh
zkEnv.sh中有整个zk执行相关环境变量设置,从zkEnv.sh代码中可以看到

if [ -f "${ZOOCFGDIR}/zookeeper-env.sh" ]; then
  . "${ZOOCFGDIR}/zookeeper-env.sh"
fi

if [ "x$ZOOCFG" = "x" ]
then
    ZOOCFG="zoo.cfg"
fi

ZOOCFG="$ZOOCFGDIR/$ZOOCFG"

if [ -f "$ZOOCFGDIR/java.env" ]
then
    . "$ZOOCFGDIR/java.env"
fi

它回去zk设置目录,也即CONF中找zookeeper-env.sh,和java.env。以是我们可以将相关的环境变量设置到这两个文件中(没有就建立)

.env文件实在跟shell差不多,启动界说的环境变量花样为key=value,最终生效,通过执行该文件,或者source 它都可以。

从zkEnv.sh中还可以得出的信息是,要设置zk server端的内存占用巨细,是通过ZK_SERVER_HEAP来,由于zkEnv.sh有如下代码

# default heap for zookeeper server
ZK_SERVER_HEAP="${ZK_SERVER_HEAP:-1000}"
export SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"

固然其它一些-D的java 参数, 可以设置到这个变量上SERVER_JVMFLAGS

使用java 下令

上述剧本实际上最终入口,是执行了zookeeper的jar。我们固然也可以直接通过java下令启动zookeeper的jar,并加装指定设置

 java -cp zookeeper.jar:lib/*:conf org.apache.zookeeper.server.quorum.QuorumPeerMain zoo.conf

参考资料

https://zookeeper.apache.org/doc/r3.6.1/zookeeperAdmin.html#sc_zkMulitServerSetup

原创文章,作者:2d28新闻网,如若转载,请注明出处:https://www.2d28.com/archives/11814.html