Centos:Zookeeper安装与配置详解

版权声明:转载或者应用请注明出处 https://blog.csdn.net/qq_35180983/article/details/82768629

zookeeper:

Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务

  1. zookeeper是为别的分布式程序服务的
  2. Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)
  3. Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……
  4. 虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:
  • a、管理(存储,读取)用户程序提交的数据;
  • b、并为用户程序提供数据节点监听服务

一、安装zookeeper准备

二、将安装包上传解压

使用Xftp或者其他软件把下载的文件上传到centos中

解压:

tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local

并配置环境变量:

 vi /etc/profile

export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin

source /etc/profile

三、修改配置文件zoo.cfg

ZooKeeper启动时,会默认加载“conf/zoo.cfg”作为配置文件,所以需要将“zoo_sample.cfg”复制一份,命名为“zoo.cfg”,然后根据需要设定里面的配置项。

注:最好复制一份

cp zoo_sample.cfg zoo.cfg

修改配置文件:

vi zoo.cfg

 ZooKeeper启动时,会默认加载“conf/zoo.cfg”作为配置文件,所以需要将“zoo_sample.cfg”复制一份,命名为“zoo.cfg”,然后根据需要设定里面的配置项。

配置项很简单,说明如下:
tickTime=2000
这个时间是作为 ZooKeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。单位为毫秒。
initLimit=10
这个配置项是用来配置 Leader接受Follower 初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Leader还没有收到Follower的返回信息,那么表明这个Follower连接失败。总的时间长度就是 10*2000=20 秒。
syncLimit=5
这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime 的时间长度,总的时间长度就是5*2000=10 秒。
dataDir=/tmp/zookeeper
顾名思义就是 ZooKeeper保存数据的目录,用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里。默认情况下,ZooKeeper 将写数据的日志文件也保存在这个目录里。注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。
clientPort=2181
这个端口就是客户端连接 ZooKeeper服务器的端口,ZooKeeper 会监听这个端口,接受客户端的访问请求。
maxClientCnxns=60
最大的客户端连接数,默认为60.
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
客户端在与ZooKeeper交互过程中会产生非常多的日志,而且ZooKeeper也会将内存中的数据作为snapshot保存下来,这些数据是不会被自动删除的,这样磁盘中这样的数据就会越来越多。不过可以通过这两个参数来设置,让zookeeper自动删除数据。autopurge.purgeInterval就是设置多少小时清理一次。而autopurge.snapRetainCount是设置保留多少个snapshot,之前的则删除。

扫描二维码关注公众号,回复: 3731272 查看本文章
# 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=/usr/local/zookeeper-3.4.10/zkdata    #这里最好自己设置
# the port at which the clients will connect
clientPort=2181
# 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=hadoop01:2888:3888         #这里修改为自己的主机名或者IP
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

 注意:上面的数据目录zkdata需要自己创建:

mkdir ./zkdata  

四、在zkdata下生成myid文件

echo 1 > zkdata/myid

 注意不同机器是不同ID。

五、将配置好的zookeeper分发到集群的所有机器

 经过上面步骤zookeeper已经配置完毕,然后将其依次拷贝的集群的其他机器中。可以使用 scp 命令来做这件事:

scp 本地zookeeper安装目录 登陆远程机器的用户名@远程机器地址 : 远程机器存放zookeeper的地址

scp -r zookper-3.4.10 root@hadoop02:$PWD
scp -r zookper-3.4.10 root@hadoop03:$PWD

注意:一定要分别修改机器上的ID号,修改myid 文件中的数字,在这里即为将server2的myid内容修改为2,将server3的myid内容修改为3。对于不同的集群,根据需要进行修改,与配置文件中的order保持一致。

六、启动zookeeper服务

修改完成后,在每台机器上依次使用bin/zkServer.sh start来启动zookeeper服务,使用jps查看进程,待启动完成后使用 bin/zkServer.sh status来查看该机器的身份 (leader、follower)

[root@hadoop01 conf]# jps
37520 QuorumPeerMain

七、启动zookeeper客户端检验服务是否可用

使用 bin/zkCli.sh来检验zookeeper是否可以连接成功,若出现如下提示,则表示zookeeper服务已经安装成功。 

[root@hadoop01 zookeeper-3.4.10]# bin/zkCli.sh
Connecting to localhost:2181
2018-09-19 17:28:59,122 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
2018-09-19 17:28:59,159 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=www.hadoop01.com
2018-09-19 17:28:59,159 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_181
2018-09-19 17:28:59,198 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2018-09-19 17:28:59,198 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/local/jdk1.8.0_181/jre
2018-09-19 17:28:59,198 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper-3.4.10/bin/../build/classes:/usr/local/zookeeper-3.4.10/bin/../build/lib/*.jar:/usr/local/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/usr/local/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/usr/local/zookeeper-3.4.10/bin/../conf:
2018-09-19 17:28:59,199 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2018-09-19 17:28:59,199 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2018-09-19 17:28:59,199 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2018-09-19 17:28:59,199 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2018-09-19 17:28:59,199 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2018-09-19 17:28:59,199 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=2.6.32-431.el6.x86_64
2018-09-19 17:28:59,199 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root
2018-09-19 17:28:59,200 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root
2018-09-19 17:28:59,200 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/usr/local/zookeeper-3.4.10
2018-09-19 17:28:59,202 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@1a86f2f1
Welcome to ZooKeeper!
2018-09-19 17:28:59,596 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2018-09-19 17:29:00,256 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@876] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
[zk: localhost:2181(CONNECTING) 0] 2018-09-19 17:29:02,448 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x165f066625c0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

[zk: localhost:2181(CONNECTED) 0] 

猜你喜欢

转载自blog.csdn.net/qq_35180983/article/details/82768629
今日推荐