zookeeper实战与源码分析----zookeeper安装

废话不多说,直接上步骤:

zk的安装支持2种方式,一种是单机,一种是集群,集群环境要求服务器之间系统时间保持一致
1.上传 zookeeper-3.4.5.tar.gz  到目录 /usr/local
2.解压 tar -zxvf zookeeper-3.4.5.tar.gz
3.修改文件夹名称 mv zookeeper-3.4.5 zookeeper
4.修改conf目录下配置文件名称  mv zoo_sample.cfg zoo.cfg
5.修改配置文件内容 :2步
将dataDir=/tmp/zookeeper 改为  dataDir=/usr/local/zookeeper/data
如果是集群模式,第二步
在配置文件地址添加:
server.1 = server-01:2888:3888
server.2 = server-02:2888:3888
server.3 = server-03:2888:3888
完整如下:

# 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.
dataDir=/usr/local/zookeeper/data
# 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
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=server-01:2888:3888
server.2=server-02:2888:3888
server.3=server-03:2888:3888
tickTime: 基本事件单元,以毫秒为单位。这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,
        也就是每隔 tickTime时间就会发送一个心跳。
dataDir: 存储内存中数据库快照的位置,顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。

clientPort: 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
initLimit: 这个配置项是用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,
        当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,
        那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。

syncLimit: 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒

server.A = B:C:D : 
        A表示这个是第几号服务器,
        B 是这个服务器的 ip 地址;
        C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
        D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader

ZooKeeper集群中具有两个关键的角色:Leader和Follower。集群中所有的节点作为一个整体对分布式应用提供服务,集群中每个结点之间都互相连接,
所以,在配置的ZooKeeper集群的时候,每一个节点的host到IP地址的映射都要配置上集群中其它结点的映射信息。
如:修改server1主机地址
vi /etc/hosts
添加:

172.21.121.53	server-01
172.21.121.54	server-02
172.21.121.55	server-03

6.创建data文件夹  mkdir data
7.data文件夹下创建 myid文件  vi myid 并填写内容为 0
如果是集群模式,myid的值应与配置文件中集群配置server.x=server-01:2888:3888中的x值对等
8.配置环境变量 vi /etc/profile
添加:
 
 
ZOOKEEPER_HOME=/usr/local/zookeeper
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:ZOOKEEPER_HOME/bin
export PATH ZOOKEEPER_HOME
保存退出,刷新环境变量 source /etc/profile

9.配置日志 cd /usr/local/zookeeper/bin
vi zkEnv.sh进入编辑状态
找到
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="/usr/local/zookeeper/logs"
fi

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi
其中,ZOO_LOG_DIR就是日志保存地址,ZOO_LOG4J_PROP日志等级。
保存退出,进入conf目录
修改日志配置文件 vi log4j.properties

zookeeper.root.logger=INFO, ROLLINGFILE //修改此处,保证与zkEnv.sh的修改一致,保证日志轮转
zookeeper.console.threshold=INFO		//打印级别
zookeeper.log.dir=/
zookeeper.log.file=zookeeper.log	//日志文件
zookeeper.log.threshold=DEBUG		//日志级别
zookeeper.tracelog.dir=.
zookeeper.tracelog.file=zookeeper_trace.log

RollingFileAppender按log文件最大长度限度生成新文件,DailyRollingFileAppender按日期生成新文件。
具体配置如下(log4j.properties):
# Max log file size of 10MB
log4j.appender.ROLLINGFILE.MaxFileSize=10MB
# uncomment the next line to limit number of backup files
#log4j.appender.ROLLINGFILE.MaxBackupIndex=10

log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n

#
# Add TRACEFILE to rootLogger to get log file output
#    Log DEBUG level and above messages to a log file
log4j.appender.TRACEFILE=org.apache.log4j.FileAppender
log4j.appender.TRACEFILE.Threshold=TRACE
log4j.appender.TRACEFILE.File=${zookeeper.tracelog.dir}/${zookeeper.tracelog.file}

最后进入bin目录,启动zk服务
./zkServer.sh start   (stop 停止 restart 重启)
./zkCli 进入客户端
具体命令如下:


[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
	connect host:port
	get path [watch]
	ls path [watch]
	set path data [version]
	rmr path
	delquota [-n|-b] path
	quit 
	printwatches on|off
	create [-s] [-e] path data acl// -e为创建临时节点/ -s为创建时序节点/ 什么都没有为创建永久节点
	stat path [watch]
	close 
	ls2 path [watch]
	history 
	listquota path
	setAcl path acl
	getAcl path
	sync path
	redo cmdno
	addauth scheme auth
	delete path [version]
	setquota -n|-b val path

./zkCli -server server-01:2181 进入指定zk服务

猜你喜欢

转载自blog.csdn.net/soongp/article/details/62418584