Linux 搭建zookpeer集群和配置
|clientPort| 主要定义客户端连接zookeeper server的端口,默认情况下为2181 ||dataDir| 主要用来配置zookeeper server数据的存放路径 ||dataLogDir| 主要用来存储事物日志,如果该参数不配置,则事物日志存储在dataDir路下 ||tickTime|zookeeper中使用的基本时间度量单位,单位为毫秒。zookeeper客户端与服务
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路下 |
tickTime | zookeeper中使用的基本时间度量单位,单位为毫秒。zookeeper客户端与服务器之间的心跳时间就是一个tickTime单位。默认值为2000毫秒,即2秒 |
集群参数配置
参数 | 描述 |
---|---|
initLimit | Follower连接到Leader并同步数据的最大时间,如果zookeeper数据比较大,可以考虑调大这个值来避免报错 |
syncLimit | Follower同步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时生效 |
electionAlg | leader选举算法,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
集群搭建配置
首先我们把步骤都整理清楚
- 首先需要准备四台机器
- 把jdk和zookpeer都安装到四台机器中
- 配置好/etc/profile 环境变量
- 配置好zoo.cfg配置文件
- 创建好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会自动关闭
更多推荐
所有评论(0)