zookpeer和JDK1.8下载地址

下载地址:zookpeer和jdk1.8
提取码:w189

解压以及配置zookpeer

 tar -zxvf zookeeper-3.4.6.tar.gz 
 tar -zxvf jdk-8u144-linux-x64.tar.gz 	

基本参数配置

参数描述
clientPort主要定义客户端连接zookeeper server的端口,默认情况下为2181
dataDir主要用来配置zookeeper server数据的存放路径
dataLogDir主要用来存储事物日志,如果该参数不配置,则事物日志存储在dataDir路下
tickTimezookeeper中使用的基本时间度量单位,单位为毫秒。zookeeper客户端与服务器之间的心跳时间就是一个tickTime单位。默认值为2000毫秒,即2秒

集群参数配置

参数描述
initLimitFollower连接到Leader并同步数据的最大时间,如果zookeeper数据比较大,可以考虑调大这个值来避免报错
syncLimitFollower同步Leader的最大时间
leaderServes用于配制Leader节点是否接收客户端请求,默认情况下这个值是yes ,当集群中节点数量超过3个,建议设置为false,关闭leader节点接收客户端请求
server.x主要用来设置集群中某台server的参数,格式[hostname]:n:n[:observer],zookeeper server启动的时候,会根据dataDirxia的myid文件确定当前节点的id。该参数里,第一个port是follower连接leader同步数据和转发请求用,第二个端口是leader选举用的
cnxTimeout设置连接Leader接收通知的最大超时时间,该参数只在使用electionAlg 3时生效
electionAlgleader选举算法,1表示基于UDP通信的不进行权限验证算法,2表示进行基于UDP通信的进行权限验证算法,3表示基于TCP通信的fast leader选举

日志相关配置

Zookeeper server使用log4j作为其logging的基本框架,具体实现是使用Log4j1.2.7版本,在zookeeper server的conf路径下有个log4j.properties配置其日志相关信息

# Define some default values that can be overridden by system properties
zookeeper.root.logger=INFO, CONSOLE

zookeeper.console.threshold=INFO

zookeeper.log.dir=.
zookeeper.log.file=zookeeper.log
zookeeper.log.threshold=INFO
zookeeper.log.maxfilesize=256MB
zookeeper.log.maxbackupindex=20

zookeeper.tracelog.dir=${zookeeper.log.dir}
zookeeper.tracelog.file=zookeeper_trace.log

log4j.rootLogger=${zookeeper.root.logger}

#
# console
# Add "console" to rootlogger above if you want to use this 
#
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold}
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n

#
# Add ROLLINGFILE to rootLogger to get log file output
#
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold}
log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}
log4j.appender.ROLLINGFILE.MaxFileSize=${zookeeper.log.maxfilesize}
log4j.appender.ROLLINGFILE.MaxBackupIndex=${zookeeper.log.maxbackupindex}
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 TRACE 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}

log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout
### Notice we are including log4j's NDC here (%x)
log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L][%x] - %m%n

集群搭建配置

首先我们把步骤都整理清楚

  1. 首先需要准备四台机器
  2. 把jdk和zookpeer都安装到四台机器中
  3. 配置好/etc/profile 环境变量
  4. 配置好zoo.cfg配置文件
  5. 创建好myid(myid存储位置在dataDir 配置路径中)

自己四台机器ip为

192.168.211.134
192.168.211.133
192.168.211.136
192.168.211.135

zookpeer的zoo.cfg配置文件为

# 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=/var/common/zookeeper
# the port at which the clients will connect
#客户端端口号
clientPort=2182
# 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=192.168.211.134:2888:3888
server.2=192.168.211.133:2888:3888
server.3=192.168.211.136:2888:3888
server.4=192.168.211.135:2888:3888

然后看/etc/pfofile环境变量

export JAVA_HOME=/opt/common/jdk1.8.0_144
export ZOOKEEPER_HOME=/opt/common/zookeeper-3.4.6
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

最后需要把四台机器的myid配置成不一样的
myid的存储位置按照配置的来看,我自己的是在/var/common/zookeeper下面
使用命令把文件创建好

#-p 是多层文件创建
mkdir -p  /var/common/zookeeper
vi myid #填入节点id

如下面的配置
server.1=192.168.211.134:2888:3888 # myid 为1
server.2=192.168.211.133:2888:3888 #myid 为2
server.3=192.168.211.136:2888:3888 #myid为3
server.4=192.168.211.135:2888:3888 #myid为4

配完之后,就可以直接启动zk了
启动之前记得一定要关闭防火墙,防火墙开着是连不上的
防火墙关闭命令

systemctl stop firewalld.service            #但是开机之后还会启动防火墙
systemctl disable firewalld.service         #禁止firewall开机启动

zookpeer 启动选举展示

启动后报错
![在这里插入图片描述](https://img-blog.csdnimg.cn/6637ebacd0a947ddb92dd60db1d15c4a.png在这里插入图片描述

这是因为端口冲突了,可以使用一下命令查看

netstat -alnp | grep 2181

在这里因为2181端口被占用,我们把zk的端口改为2182

然后在重新启动
启动命令是

zkServer.sh start #直接启动
zkServer.sh start-foreground  #启动在控制台可以看到

在启动时尽量同时启动,中间间隔不能超过60秒,超过后zk会自动关闭

Logo

更多推荐