Zookeeper
单机版配置:
1、下载Zookeeper,并解压
2、配置Zookeeper
将zookeeper conf目录下的zoo_sample.cfg文件复制一份命名为zoo.cfg,填入以下内容
tickTime=2000 ##Zookeeper最小时间单元,单位毫秒(ms),默认值为3000
dataDir=/var/lib/zookeeper ##Zookeeper服务器存储快照文件的目录,必须配置
dataLogDir=/var/lib/log ##Zookeeper服务器存储事务日志的目录,默认为dataDir
clientPort=2181 ##服务器对外服务端口,一般设置为2181
initLimit=5 ##Leader服务器等待Follower启动并完成数据同步的时间,默认值10,表示tickTime的10倍
syncLimit=2 ##Leader服务器和Follower之间进行心跳检测的最大延时时间,默认值5,表示tickTime的5倍
3、启动zookeeper
./bin/zkServer.sh start
Windows上执行:
.\bin\zkServer.cmd
zk集群配置:
1、下载Zookeeper,并解压
2、配置Zookeeper
将zookeeper conf目录下的zoo_sample.cfg文件复制一份命名为zoo.cfg,填入一下内容
tickTime=2000 ##Zookeeper最小时间单元,单位毫秒(ms),默认值为3000
dataDir=/var/lib/zookeeper ##Zookeeper服务器存储快照文件的目录,必须配置
dataLogDir=/var/lib/log ##Zookeeper服务器存储事务日志的目录,默认为dataDir
clientPort=2181 ##服务器对外服务端口,一般设置为2181
initLimit=5 ##Leader服务器等待Follower启动并完成数据同步的时间,默认值10,表示tickTime的10倍
syncLimit=2 ##Leader服务器和Follower之间进行心跳检测的最大延时时间,默认值5,表示tickTime的5倍
server.1=IP1:2888:3888
server.2=IP2:2888:3888
server.3=IP3:2888:3888
相比于单机模式,集群模式多了 server.id=host:port1:port2 的配置。其中,id 被称为 Server ID,用来标识该机器在集群中的机器序号(在每台机器的 dataDir 目录下创建 myid 文件,文件内容即为该机器对应的 Server ID 数字)。host 为机器 IP,port1 用于指定 Follower 服务器与 Leader 服务器进行通信和数据同步的端口,port2 用于进行 Leader 选举过程中的投票通信。
3、创建myid
在 dataDir 目录下创建名为 myid 的文件,在文件第一行写上对应的 Server ID。
4、按照相同步骤,为其他机器配置 zoo.cfg 和 myid文件
5、启动zookeeper集群
在每个节点上执行,分别启动所有节点上的zk服务
./bin/zkServer.sh start
Windows上执行:
.\bin\zkServer.cmd
zk伪集群配置
zk伪集群的配置方式与zk集群版类似,只是将所有节点都放到了同一台服务器上,相应的,配置的端口就必须换成每个节点唯一,不能重复
具体配置步骤
配置文件
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=/tmp/zookeeper
dataDir=/opt/zookeeper-cluster/zoo-node1/data
dataLogDir=/opt/zookeeper-cluster/zoo-node1/logs
# 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=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
1、下载Zookeeper,并解压
2、配置Zookeeper
将zookeeper conf目录下的zoo_sample.cfg文件复制一份命名为zoo.cfg,填入一下内容
tickTime=2000 ##Zookeeper最小时间单元,单位毫秒(ms),默认值为3000
dataDir=/opt/zookeeper-cluster/zoo-node3/data #Zookeeper服务器存储快照文件的目录,必须配置
dataLogDir=/opt/zookeeper-cluster/zoo-node3/logs ##Zookeeper服务器存储事务日志的目录,默认为dataDir
clientPort=2181 ##服务器对外服务端口,一般设置为2181
initLimit=5 ##Leader服务器等待Follower启动并完成数据同步的时间,默认值10,表示tickTime的10倍
syncLimit=2 ##Leader服务器和Follower之间进行心跳检测的最大延时时间,默认值5,表示tickTime的5倍
# 注意: 伪集群模式下用于节点间通信和投票选举的端口也不能重复
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
在家目录下创建logs
1.指定日志文件路径为logs的步骤:zoo.cfg里面
dataLogDir=/opt/zookeeper-cluster/zoo-node3/logs ##Zookeeper服务器存储事务日志的目录,默认为dataDir
2.修改zkEvn.sh
# ZOO_LOG_DIR="$ZOOKEEPER_PREFIX/logs"
ZOO_LOG_DIR="../logs"
#还有
# ZOO_LOG4J_PROP="INFO,CONSOLE"
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
上面data里面是
各项配置的含义请参见集群模式说明,需要注意的是伪集群模式所有节点不光clientPort不能一样, 用于节点间通信和投票选举的端口也不能一样。否则会端口占用无法正常启动
3、创建myid
在 data 目录下创建名为 myid 的文件,在文件第一行写上对应的 Server ID。注意一定要对应.
echo '1' > /opt/zookeeper/zoo-node1/data/myid
echo '2' > /opt/zookeeper/zoo-node2/data/myid
echo '3' > /opt/zookeeper/zoo-node3/data/myid
4、将配置好的节点复制几份,修改clientPort和myid
5、启动zookeeper集群
在每个节点目录下执行,分别启动所有节点服务
./bin/zkServer.sh start
Windows上执行:
.\bin\zkServer.cmd
成功界面
3.5.0新增的Admin服务
zookeeper 3.5.0以后内置了一个web的管理界面。如果你启动伪集群时出现端口冲突,但是并没有发现有已存在的zookeeper进程,请检查下是否应为管理服务端口冲突导致
管理界面支持配置一下参数:
- admin.enableServer: 是否开启管理界面,默认开启
- admin.serverAddress: 内嵌的Jetty服务器绑定地址,默认是0.0.0.0
- admin.serverPort: 内嵌的Jetty服务器绑定的端口,默认是8080
- admin.idleTimeout:访问Admin服务空闲连接等待时间(毫秒),默认30000ms
- admin.commandURL: 访问哪个地址可以列出支持的管理命令,默认是:/commands