Skip to content

zookeeper单机集群部署

Published: at 06:42 AM | 4 min read

什么是Apache ZooKeeper

Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据。ZooKeeper本身是一个分布式应用程序,为写入分布式应用程序提供服务。

ZooKeeper提供的常见服务如下 :

分布式应用程序提供了很多好处,但它们也抛出了一些复杂和难以解决的挑战。ZooKeeper框架提供了一个完整的机制来克服所有的挑战。竞争条件和死锁使用故障安全同步方法进行处理。另一个主要缺点是数据的不一致性,ZooKeeper使用原子性解析。

单机集群部署

生产环境下至少需要三台机器,开发环境下可以在单台机器上部署集群,这里会部署三个服务

准备

点击下载apache-zookeeper-3.5.5-bin.tar.gz

直接解压缩就可以使用了,在bin目录下:

tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz
cd apache-zookeeper-3.5.5-bin/bin

配置文件

这里我在/usr/local下新建目录zkcluster

/usr/local/zkcluster
  zk1
    data
      myid    
    log
    zoo.cfg
  zk2
    ...
  zk3
    ...

data:数据目录下面的myid文件内容分别是:1, 2, 3(就一个数字)
log:日志目录
zoo.cfg:配置文件,zk1的配置文件如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zkcluster/zk1/data
dataLogDir=/usr/local/zkcluster/zk1/log
clientPort=2181
server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389

zk2和zk3的zoo.cfg内容跟上面一样,只是将dataDir和dataLogDir中的zk1改为自己目录的名字,clientPort分别是:2181,2182,2183

启动三个服务

./zkServer.sh start /usr/local/zkcluster/zk1/zoo.cfg
./zkServer.sh start /usr/local/zkcluster/zk2/zoo.cfg
./zkServer.sh start /usr/local/zkcluster/zk3/zoo.cfg

这样很简单的zookeeper集群就部署好了

解释

myid:服务的唯一标识,对应server.1,server.2,server.3后面的数字,1~255之间
server.1:格式是host:port:port,第一个端口是zookeeper服务器之间的通信端口,第二个端口是选举leader的端口