ZOOKEEPER基础

jopen 8年前

搞数据开发的对一些产品非常熟悉,比如:

  1. HBase
  2. Hadoop

但是对它们背后共同的“男人”没有太多的了解,太不应该了。这篇是一个基础的介绍,看完之后应该会对ZOOKEEPER有大概了解。

安装部署

这里下载包,放到你喜欢的目录解压缩:

sudo tar -zxvf zookeeper-3.4.7.tar.gz

配置信息在conf/zoo.cfg中(可以在zoo_sample.cfg中看到),常用的几个设置项如下(更多看这里):

配置 作用
tickTime 客户端和服务器之间的心跳间隔(毫秒)
initLimit FOLLOWER与LEADER初始连接的最大延迟心跳数
syncLimit FOLLOWER与LEADER请求应答的最大延迟心跳数
dataDir 数据文件目录
dataLogDir 日志文件目录
clientPort 客户端连接端口

配置安成以后使用命令启动(standalone模式):

./bin/zkServer.sh start

查看zookeeper的状态(看看起来没):

./bin/zkServer.sh start

当然也可以用客户端试一下能不能连上:

./bin/zkCli.sh 或者 ./bin/zkCli.sh -server 127.0.0.1:2181

现在还是单个节点,离集群还差很多,怎么办?暂时没有很多机器,在单机上搞“伪集群”应该还是简单的,这样和真正的集群差的不是太多了。刚开始看这里感觉没啥问题,但是有点烦,于是看下./bin/zkServer.sh的代码:

if [ "x$2" != "x" ]  then      ZOOCFG="$ZOOCFGDIR/$2"  fi

果然是可以指定配置文件的,于是创建文件./conf/zoo_1.cfg,内容如下:

tickTime=2000  initLimit=10  syncLimit=5  dataDir=/tmp/zookeeper/1 # 新建个目录  clientPort=3181 # 注意端口不要冲突  server.0=127.0.0.1:2008:6008  server.1=127.0.0.1:2007:6007

当然需要对原来的./conf/zoo.cfg做一点小修改:

tickTime=2000  initLimit=10  syncLimit=5  dataDir=/tmp/zookeeper/0 # 新建个目录  clientPort=2181 # 注意端口不要冲突  server.0=127.0.0.1:2008:6008  server.1=127.0.0.1:2007:6007

后面放的是ZK的服务器列表(每个节点上的列表都是一样的),格式如下:

server.[myId]=[IP地址][通信端口][选举端口]

另外需要写入myid:

echo '0' > /tmp/zookeeper/0/myid  echo '1' > /tmp/zookeeper/1/myid

现在可以启动了:

./bin/zkServer.sh start ./conf/zoo.cfg ./bin/zkServer.sh start ./conf/zoo_1.cfg

再用命令查看状态显示Mode: follower,启动成功(STOP的时候也需要指定配置文件)。

来自:http://wsztrush.github.io/编程技术/2015/12/22/ZOOKEEPER-BASIC.html