zookeeper学习-1-zookeeper的安装与运行

zookeeper有三种运行方式:单机、伪集群、集群,这里只介绍集群安装和运行
1、首先先搭建好虚拟机多台,这里设置两台


2、在官网上找到zookeeper的安装文件
    主页:http://zookeeper.apache.org/ 点击Download,下载某个版本,解压到/opt目录。
    tar xzvf zookeeper-3.4.6.tar.gz

将conf目录下的zoo_sample.cfg改为zoo.cfg
这个配置文件中各个配置项的意义。
    tickTime=2000
    dataDir=D:/devtools/zookeeper-3.2.2/build
    clientPort=2181
   initLimit=5
    syncLimit=2
   server.1=zoo1:2888:3888
   server.2=zoo2:2888:3888
   server.3=zoo3:2888:3888


  tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔tickTime 时间就会发送一个心跳。 
  dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。 
  clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。 
  其中zoo1、zoo2、zoo3分别为集群中机器的IP。
  initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒。
  syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒。
  “server.id=host:port:port. ”指示了不同的 ZooKeeper 服务器的自身标识,作为集群的一部分的机器应该知道 ensemble 中的其它机器。用户可以从“ server.id=host:port:port. ”中读取相关的信息。 在服务器的 data( dataDir 参数所指定的目录)目录下创建一个文件名为 myid 的文件,这个文件中仅含有一行的内容,指定的是自身的 id 值。比如,服务器“ 1 ”应该在 myid 文件中写入“ 1 ”。这个 id 值必须是 ensemble 中唯一的,且大小在 1 到 255 之间。这一行配置中,第一个端口( port )是从( follower )机器连接到主( leader )机器的端口,第二个端口是用来进行 leader 选举的端口。在这个例子中,每台机器使用三个端口,分别是: clientPort ,2181 ; port , 2888 ; port , 3888 。
  
  ZooKeeper 要求 JAVA 的环境才能运行,并且需要 JAVA6 以上的版本,可以从 SUN 官网上下载,并对JAVA 环境变量进行设置。
  
  除此之外,为了今后操作的方便,我们需要对 ZooKeeper 的环境变量进行配置,方法如下,在 /etc/profile 文件中加入如下的内容:
 
  #Set ZooKeeper Enviroment
  export ZOOKEEPER_HOME=/root/hadoop-0.20.2/zookeeper-3.3.1
  export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
  
  export JAVA_HOME=/usr/java/jdk1.7.0_79 
  export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
  export PATH=$JAVA_HOME/bin:$PATH
  
3、 开启zookeeper服务:
  zkServer.sh start
  
  开启后查看当前zookeeper的状态
  zkServer.sh status
  
  集群状态下可能发现服务未启动,提示
  Error contacting service. It is probably not running.
  此时需要做的就是检查如下选项:
  
1. 是否安装了Java环境, 并配置了环境变量. (如果Java8不成功就换成Java6)


2. 是否禁用防火墙,包括ipv6的防火墙


3. 是否禁用了ipv6协议


4. zoo.cfg中配置的dataDir和dataLogDir所在的路径是否存在


5. dataDir下的myid文件是否存在且内容是否正确


6. 如果zoo.cfg中配置的server.x=hostname:2888:3888这种形式, 即使hostname在/etc/hosts中做了正确映射且通过hostname互相ping也是通的, 但启动zookeeper就是失败, 那么把hostname换成ip地址, 如: server.x=192.168.1.1:2888:3888


禁用防火墙后重启zookeeper,查询状态,返回如下
[root@localhost init.d]# zkServer.sh status
JMX enabled by default
Using config: /app/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower






  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值