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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值