今天心血来潮, 想搞一下 zookeeper 集群. 具体步骤记录下吧~ 嘻嘻!
第一步, 环境需求 jdk 安装部署好
第二步, zookeeper 下载. tar.gz 结尾的包, 使用 "tar -zxvf 文件名" 方式进行解压缩
第三步, 进入目录的 conf 目录下复制 zoo_sample.cfg 文件, 为 zoo.cfg 文件(执行命令: cp zoo_sample.cfg zoo.cfg).zoo.sample.cfg 文件是官方所给的 zk 配置文件的 demo,zk 启动默认加载的是 zoo.cfg 文件.
重点关注属性 clientPort 属性 zk 端口, dataDir 数据文件夹目录, dataLogDir 日志文件夹目录. 不建议这两个目录在 zk 根目录下, 如果数据量大会造成 zk 的严重的性能问题.
集群环境中需要添加 server.1=127.0.0.1:2888:3888 ,server2=**. 单机只需要 server.1 即可. 1 是指在 dataDir 文件夹下创建的 myid 文件(在 dataDir 文件中执行: echo "1">myid)
以下为 zk 的配置详情 (参数含义) 描述
- # 间隔都是使用 tickTime 的倍数来表示的, 例如 initLimit=10 就是 tickTime 的十倍等于 2W 毫秒
- tickTime=2000
- # The number of ticks that can pass between, sending a request and getting an acknowledgement
- # 心跳最大延迟时间, 如果 leader 在规定的时间内无法获取到 follow 的心跳检测响应, 则认为节点已脱离
- syncLimit=5
- # the directory where the snapshot is stored. do not use /tmp for storage, /tmp here is just. example sakes.
- # 用于存放内存数据库快照的文件夹, 同时用于集群的 myid 文件也存在这个文件夹里
- dataDir=/root/zookeeper-3.4.14/zkData
- # the port at which the clients will connect,ZK 端口
- clientPort=2181
- # the maximum number of client connections. increase this if you need to handle more clients
- # 允许连接的客户端数目, 0 - 不限制, 通过 IP 来区分不同的客户端
- maxClientCnxns=60
- # 将管理机器把事务日志写入到 "dataLogDir" 所指定的目录, 而不是 "dataDir" 所指定的目录. 避免日志和快照之间的竞争
- #dataLogDir=/root/zookeeper-3.4.14/log/data_log
- # The number of snapshots to retain in dataDir
- # 用于配置 zookeeper 在自动清理的时候需要保留的快照数据文件数量和对应的事务日志文件, 最小值时三, 如果比 3 小, 会自动调整为 3
- #autopurge.snapRetainCount=3
- # Purge task interval in hours. Set to "0" to disable auto purge feature
- # 配套 snapRetainCount 使用, 用于配置 zk 进行历史文件自动清理的频率, 如果参数配置为 0 或者小于零, 就表示不开启定时清理功能, 默认不开启
- #autopurge.purgeInterval=1
- ## 集群配置
- # The number of ticks that the initial, synchronization phase can take
- # follow 服务器在启动的过程中会与 leader 服务器建立链接并完成对数据的同步, leader 服务器允许 follow 在 initLimit 时间内完成, 默认时 10. 集群量增大时
- # 同步时间变长, 有必要适当的调大这个参数, 当超过设置倍数的 tickTime 时间, 则连接失败
- initLimit=10
- #server.A=B:C:D: 其中 A 数字, 表示是第几号服务器. dataDir 目录下必有一个 myid 文件, 里面只存储 A 的值, ZK 启动时读取此文件, 与下面列表比较判断是哪个 server
- # B 是服务器 ip ;C 表示与 Leader 服务器交换信息的端口; D 表示的是进行选举时的通信端口.
- server.1=127.0.0.1:2888:3888
- server.2=127.0.0.1:2889:3889
- server.3=127.0.0.1:2890:3890
- # 配置成 observer 模式
- #peerType=observer
- # 注意观察者角色的末尾, 需要拼接上 observer
- #server.4=10.2.143.38:2886:3886:observer
第四步, 创建 dataDir 文件下的主机标识文件 myid, 具体方法在第三步有描述.
第五步, 在 zk 的 bin 目录下执行 ./zkServer.sh start 启动 zk, 默认走的是 zoo.cfg 配置文件, 也可以在启动命令上指定启动配置文件./zkServer.sh start zoo.cfg
如果启动异常看看踩过的坑, 防止重复踩. 链接 ZK 安装, ZK 配置, ZK 集群部署踩过的大坑
验证是否启动成功
0, 在 zk 的 bin 目录下执行./zkServer.sh status 查看启动状态 Mode 有两个值 leader 和 follower
1, 执行 java 的 jps 命令查询当前的 java 进程: QuorumPeerMain 是 zk 的默认启动类, 我的启动了三个 zk
2, 使用 zk 的 bin 目录下的./zkClient.sh 链接登录 zk
zk 集群的好文章
来源: https://www.cnblogs.com/niunafei/p/11294240.html