zookeeper伪集群搭建,zookeeper安装,zookeeper部署,zookeeper集群

1.环境CentOS74 zookeeper-3.4.8 openjdk version “1.8.0_212”

安装
mkdir /zk; cd /zk;
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
wget https://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
tar -xf zookeeper-3.4.14.tar.gz -C /zk;
yum list |grep openjdk
yum -y install java-1.8.0-openjdk

配置
mkdir -p /mi/{zk1,zk2,zk3}/{logs,data}; ##创建操作日志目录和数据snapshot目录
cp -r zookeeper-3.4.14 zk1;
cp -r zookeeper-3.4.14 zk2;
cp -r zookeeper-3.4.14 zk3;
cp zk1/conf/zoo_sample.cfg zoo.cfg; vim zoo.cfg;
tickTime=2000
initLimit=10
syncLimit=5
dataLogDir=/zk/zk1/logs
dataDir=/zk/zk1/data
clientPort=8001
server.1=127.0.0.1:8811:8812
server.2=127.0.0.1:8821:8822
server.3=127.0.0.1:8831:8832
编辑配置文件:
sed -i ‘s/zk1/zk2/g’ zk2/conf/zoo.cfg;
sed -i ‘s/zk1/zk3/g’ zk3/conf/zoo.cfg ;
创建myid文件(文件内容编号要求与服务器编号一一对应)
echo “1” > /zk/zk1/data/myid
echo “2” > /zk/zk2/data/myid
echo “3” > /zk/zk3/data/myid

启动
zk1/bin/zkServer.sh start
zk2/bin/zkServer.sh start
zk3/bin/zkServer.sh start

验证:(务必注意,服务器必须全部启动成功才能初次验证,否则报错)
zk1/bin/zkServer.sh status;
/zk/zk1/bin/zkCli.sh -server 127.0.0.1:8001;
zk2/bin/zkServer.sh stop; (停掉一个服务验证Leader切换)

服务器状态
LOOKING: 寻找Leader,当服务器出现这个状态时,它会认为当前集群没有Leader,因此需要进入选举
FOLLOWING: 跟随者状态,表示当前是Follower角色
LEADING: 领导者状态,表示当前为Leader角色
OBSERVING:观察者状态,表示当前服务器是Observer角色

配置项说明

The number of milliseconds of each tick

tickTime=2000 //Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳,单位毫秒,最小的session过期时间为tickTime的两倍,ZK中的其他时间都是以这个为倍数的。

The number of ticks that the initial

synchronization phase can take

initLimit=10 //表示允许从服务器(相对于leader来说的客户端)连接到leader并完成数据同步的时间,它是以tickTime的倍数来表示的,也就是从服务器与主服务器完成初始化连接和数据同步是能够容忍多少个心跳时间,如果超过这个时间不能完成初始化连接的建立则表示连接失败。默认是10.如果你的数据量过大而且从服务器数量也多那么这个值可以设置大一点。。总的时间长度就是 initLimit * tickTime 毫秒。
#LeaderServes 用于配置Leader服务器是否接受客户端的连接,是否允许Leader向客户端直接提供服务,默认是可以的。

The number of ticks that can pass between

sending a request and getting an acknowledgement

syncLimit=5 //配置 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 syncLimit * tickTime 秒 ,如果在这个时间内从服务器不能与主服务器通信,则表示该从服务器失败。默认为5.如果集群环境网络不佳可以调整大一点。

the directory where the snapshot is stored.

do not use /tmp for storage, /tmp here is just

example sakes.

dataDir=/app/zookeeper/data //Zookeeper 保存数据的数据库快照的位置,默认是/tmp/zookeeper,快照文件并不是实时的,运行一段时间才会有。
dataLogDir=/app/zookeeper/logs //事务日志日志路径,若没提供的话则用dataDir。zookeeper的持久化都存储在这两个目录里,对ZK的读和写都是在内存中完成,所以速度非常快,但是如果停止ZK再启动数据还是需要保证的,所以就会有这样一个路径用来保存事务日志,当ZK再次启动时加载到内存重演过程来恢复数据。dataLogDir里放的是顺序日志(WAL),指定的目录下有version-2文件夹(下有log.1文件),这个目录确定了当前事务日志的版本号,当下次某个版本的ZK对其进行修改时,版本号发生变化。日志文件大小为64M,如果数据比较多就会有多个这样大小的文件。而dataDir里放的是内存数据结构的snapshot,便于快速恢复。为了达到性能最大化,一般建议把dataDir和dataLogDir分到不同的磁盘上,建议将事物日志保存到单独的磁盘而且是高速磁盘。因为为了一致性,ZK对于客户端的写入请求在返回之前就要把本次操作写入到事物日志中

the port at which the clients will connect

clientPort=2181 //Zookeeper服务器监听的端口,以接受客户端的访问请求。

the maximum number of client connections.

increase this if you need to handle more clients

#maxClientCnxns=60 限制连接到ZK上的客户端数量,并且限制并发连接数量,它通过IP来区分不同客户端。值为0表示不做任何限制。注意这里的限制是针对单台客户端到服务器的,并不是控制所有客户端连接的。默认60.
#minSessionTimeout=120 最小会话超时时间,默认为tickTime的2倍。不建议把这个值设置的比tickTime小。客户端连接到ZK时如果在这个最小时间内没有和ZK联系则标记为超时,也就是说会断开。
#maxSessionTimeout=2400 最大会话超时时间,默认为20倍的最小会话超时时间。不建议把这个值设置的比tickTime小。客户端连接到ZK时如果在这个最大时间内没有和ZK联系则标记为超时。所以上面的参数和这个参数组成了一个时间范围,也就是客户端连接ZK时如果在这个时间范围内没有成功连接则会标记为超时。如果客户端设置的时间范围不在这个服务器设置的范围内,则会被强制应用服务器设置的范围。

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 自动清理日志,该参数设置保留多少个快照文件和对应的事务日志文件,默认为3,如果你设置的小于3则会被自动的调整为3

Purge task interval in hours

Set to “0” to disable auto purge feature

#autopurge.purgeInterval=1 自动清理日志,该参数设置自动清理频率,上面的参数配套使用。客户端在和ZK服务器交互中服务器会产生很多日志,而且ZK会将内存中的数据作为快照保存起来,而且这些数据不会自动删除,那么磁盘空间就会被占用,可以设置这2个参数来自动清理,不过如果ZK服务器比较繁忙而且赶上删除日志任务就会影响性能,所以一般不设置这个自动清理,而是在ZK访问量少的时候通过Linux的定时任务来处理。0表示不开启自动清理功能。
#globalOutstandingLimit ZK的最大请求堆积数,客户端请求比较多,为了防止客户端资源过度消耗,服务器必须限制同时处理的请求数量。
#preAllocSize 用于配置ZK事务日志预先分配的空间,默认是64M
#snapCount 用于配置相邻两次快照之间的事物日志次数,默认是10万。也就是10万条事务之后做一次快照同时结转事务日志
#clientPortAddres 这个参数针对多网卡的ZK服务器,允许为每个IP地址指定不同的监听端口。
#fsync.warningthresholdms 用于设置ZK服务器事物日志同步操作时消耗时间的报警阈值,如果实际消耗时长超过这个时间日志就会记录。
#electionAlg 用于配置Leader选举算法,目前只有一种选举算法,所以不用配置。
#cnxTimeout 用于Leader选举时各个服务器之间进行的TCP连接创建超时时间,默认为5.
#forceSync 这个参数用于配置ZK服务器是否在事物提交时是否强制写入磁盘(LINUX的延迟写入),默认是YES。
#jute.maxbuffer 用于配置单个数据节点上最大数量,默认是1MB。通常不需要改动该参数,但是因为Zookeeper不适合存放太多数据所以有时候需要把值改小
#skipACL 是否跳过ACL检查,默认是no,也就是会对所有客户端连接进行acl检查。
server.1=10.55.2.81:2888:3888
server.2=10.55.2.82:2888:3888
server.3=10.55.2.83:2888:3888
// server.n n是一个数字,表示这个是第几号服务器;“=”号后面是对应几号服务器的IP地址,第一个端口2888是集群中从服务器(follower)连接到主服务器(leader)的端口,也就是作为leader时使用的,其他从服务器都连接到主服务器的这个端口;第二个端口3888表示的是进行leader选举时使用的端口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值