【Zookeeper】(一)Zookeeper搭建

一、软件版本与系统环境

下载地址(http://mirrors.hust.edu.cn/apache/ZooKeeper/)

二、zookeeper 安装

1、xftp上传zookeeper压缩包并解压

cd /opt/soft
ls
tar -zxvf zookeeper-3.4.5-cdh5.14.2.tar.gz 
mv zookeeper-3.4.5-cdh5.14.2 zooker345

2、进入解压好的安装包 在conf文件夹下配置环境

cd zookeeper345/
cd conf
ls
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg 

修改存储数据路径、添加zookeeper交换数据端口以及选举端口

dataDir=/opt/soft/zookeeper345/data
server.1=192.168.56.171:2287:3387

添加存储文件夹

[root@hw1 zookeeper345]# mkdir data

3、配置环境变量

[root@hw1 conf]# cd ..
[root@hw1 zookeeper345]# pwd
/opt/soft/zookeeper345
[root@hw1 zookeeper345]# vi /etc/profile

export ZOOKEEPER_HOME=/opt/soft/zookeeper345
export PATH=$PATH:$ZOOKEEPER_HOME/bin

刷新环境变量

source /etc/profile

4、启动zookeeper

[root@yyy zookeeper345]# cd bin
[root@yyy bin]# ls
README.txt    zkCli.cmd  zkEnv.cmd  zkServer.cmd            zkServer.sh
zkCleanup.sh  zkCli.sh   zkEnv.sh   zkServer-initialize.sh
[root@yyy bin]# zkServer.sh start

三、配置文件中的注意点

1、基本配置

tickTime

心跳基本时间单位,毫秒级,ZK基本上所有的时间都是这个时间的整数倍。

initLimit

tickTime的个数,表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或者说leader的数据灰常多时,同步时间相应可能会增加,那么这个值也需要相应增加。当然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)

syncLimit

tickTime的个数,这时间容易和上面的时间混淆,它也表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。

dataDir

内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。

clientPort

配置ZK监听客户端连接的端口

在配置文件末尾添加

server.serverid=host:tickpot:electionport

server:固定写法
serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复)
host:主机名
tickpot:心跳通信端口
electionport:选举端口

2、高级配置

dataLogDir

将事务日志存储在该路径下,比较重要,这个日志存储的设备效率会影响ZK的写吞吐量。

globalOutstandingLimit

(Java system property: zookeeper.globalOutstandingLimit)默认值是1000,限定了所有连接到服务器上但是还没有返回响应的请求个数(所有客户端请求的总数,不是连接总数),这个参数是针对单台服务器而言,设定太大可能会导致内存溢出。

preAllocSize

(Java system property: zookeeper.preAllocSize)默认值64M,以KB为单位,预先分配额定空间用于后续transactionlog 写入,每当剩余空间小于4K时,就会又分配64M,如此循环。如果SNAP做得比较频繁(snapCount比较小的时候),那么请减少这个值。

snapCount

(Java system property: zookeeper.snapCount)默认值100,000,当transaction每达到snapCount/2+rand.nextInt(snapCount/2)时,就做一次SNAPSHOT,默认情况下是50,000~100,000条transactionlog就会做一次,之所以用随机数是为了避免所有服务器可能在同一时间做snapshot.

traceFile (Java system property: requestTraceFile)

maxClientCnxns
默认值是10,一个客户端能够连接到同一个服务器上的最大连接数,根据IP来区分。如果设置为0,表示没有任何限制。设置该值一方面是为了防止DoS攻击。

clientPortAddress

与clientPort匹配,表示某个IP地址,如果服务器有多个网络接口(多个IP地址),如果没有设置这个属性,则clientPort会绑定到所有IP地址上,否则只绑定到该设置的IP地址上。

minSessionTimeout

最小的session time时间,默认值是2个tick time,客户端设置的session time 如果小于这个值,则会被强制协调为这个最小值。

maxSessionTimeout

最大的session time 时间,默认值是20个tick time. ,客户端设置的session time 如果大于这个值,则会被强制协调为这个最大

发布了27 篇原创文章 · 获赞 19 · 访问量 1277

猜你喜欢

转载自blog.csdn.net/weixin_42804692/article/details/105701587