欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Zookeeper】(二)Zookeeper 集群搭建

程序员文章站 2022-07-14 11:46:21
...

一、软件版本与系统环境

下载地址: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.137:2287:3387

添加存储文件夹

[[email protected] zookeeper345]# mkdir data

3、配置环境变量

[[email protected] conf]# cd ..
[[email protected] zookeeper345]# pwd
/opt/soft/zookeeper345
[[email protected] zookeeper345]# vi /etc/profile

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

刷新环境变量

source /etc/profile

4、启动zookeeper

[[email protected] zookeeper345]# cd bin
[[email protected] bin]# ls
README.txt    zkCli.cmd  zkEnv.cmd  zkServer.cmd            zkServer.sh
zkCleanup.sh  zkCli.sh   zkEnv.sh   zkServer-initialize.sh
[[email protected] 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 如果大于这个值,则会被强制协调为这个最大