zookeeper-单机版搭建
前提
zookeeper是什么,干什么用的呢?
官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
注意:搭建zookeeper服务器需要安装JDK
1. zookeeper安装包直接去官网下载:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
选择需要安装的版本,我直接下载的是3.5.6版本
2. 下载好的压缩包上传到linux服务器上,解压
解压命令:tar -xzvf 压缩包
解压后,zookeeper文件结构:
3. 进入到conf目录下,复制zoo_sample.cfg到当前目录下(/conf),命名为zoo.cfg
复制命令:cp zoo_sample.cfg zoo.cfg
为啥要命名为zoo.cfg呢,因为zookeeper启动时,读取的是conf/zoo.cfg配置文件
4. 接下来设置zoo.cfg:
编辑:vim zoo.cfg
常见的zoo.cfg配置:
- clientPort:用于配置当前服务器对客户端暴露的端口,一般配置为2181,无默认值
- dataDir:用于配置zookeeper服务器存储快照文件(zookeeper 节点数据)的目录,无默认值
- dataLogDir:用于配置服务器存储事务日志文件的目录,有默认值dataDir,但是建议将两个目录分别配置,防止磁盘的并发读写,影响服务器性能。可将其配置在一个单独的磁盘上。
- tickTime:心跳时间,用于配置服务器最小时间的单位,默认值3000ms,心跳检测时间通常是该单位的倍数。如客户端与服务端之间的会话超时时间在2tickTime~20tickTime之间。
- initLimit:用于配置leader服务器等待Follewer服务器启动,并完成数据同步的时间,默认为10,表示10*tickTime
- syncLimit:用于配置leader服务器和Follewer服务器之间进行心跳检测的最大延时时间,默认为5,表示5*tickTime
- minSessionTimeout & maxSessionout:用于服务端对客户端会话超时时间的限制,也就是客户端自定义的超时时间必须在minSessionTimeout~maxSessionout内,其默认为分别为2 和 20,时间表示为2tickTime~20tickTime
- maxClientCnxns:从socket层面限制单个客户端和单台服务器之间的最大并发连接数,即以IP地址粒度来进行连接数的限制,如果为0,表示不作限制,默认为60
- clientPortAddress:针对多网卡的机器,该参数允许为每个IP地址指定不同的监听端口
- autopurge.snapRetainCount:用于配置zookeeper在自动清理的时候需要保留的快照数据文件数量和对应的事务日志文件,默认为3,切自定义值小于3也会取值3.
5. 启动zookeeper
启动zookeeper的命令在bin目录下,进入到bin目录,启动zookeeper:
[[email protected] bin]# sh zkServer.sh start ZooKeeper JMX enabled by default Using config: /home/dtyims/owner/zookerper-1/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
6. 查看zookeeper运行状态
sh zkServer.sh status查看zookeeper运行状态
[[email protected] bin]# sh zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/dtyims/owner/zookerper-1/bin/../conf/zoo.cfg Client port found: 2182. Client address: localhost. Mode: standalone [[email protected] bin]#
Mode: standalone 表示zookeeper已启动成功了....
自己可以去查下一些关于zookeeper常用的命令:
如:
sh zkServer.sh stop : 停止
sh zkServer.sh restart : 重启服务
sh zkServer.sh start : 启动
sh zkServer.sh status : 运行状态
大功告成...是不是很简单呢!