Zookeeper是一个开源的高效分布式协调服务,可以用来协调其他分布式集群实例间的执行调度,比如Kafka的集群就使用Zookeeper来管理,在Zookeeper的文件树结构中,存放着Kafka的一些节点元数据信息,比如broker信息,消费者信息,topic信息等。Kafka可以从Zookeeper上获取相关信息,保证各个实例间的元数据是一致的。
另外,Zookeeper也可以作为一个服务注册和发布服务,比如作为Dubbo的服务注册中心,用来管理各个服务实例发布的接口信息。
Zookeeper的定位是一个分布式的协调服务,所以它并不能像Kafka或者Redis一样存储大量的数据,它的树状的结构上的节点中只能存储少量的信息,不过能存储的数据量以及完全满足它的分布式协调和服务注册和发现中心的要求了。
下面搭建一个Zookeeper的集群,便于后续的学习使用。
在VM中创建了三台linux虚拟机,IP地址分别是:
下载之后上传到三台服务器上:
把压缩包解压到opt目录下,使用sudo tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz -C /opt/:
配置zookeeper环境变量,sudo vim profile命令打开环境变量配置文件。
添加export ZOOKEEPER_HOME=/opt/apache-zookeeper-3.5.5-bin
并在path中添加$ZOOKEEPER_HOME/bin :
修改保存后,使用source /etc/profile 更新环境变量。
然后修改zookeeper的配置文件:
在zookeeper目录下的zoo_sample.cfg为zoo.cfg,使用sudo mv zoo_sample.cfg zoo.cfg:
使用sudo vim zoo.cfg,打开配置文件,配置节点信息:
记得三个节点都需要配置。
然后给zookeeper配置id,进入配置文件中的dataDir所指的目录,如果没有,就创建它:
创建一个myid文件,在其中分别写入编号0,1,2,如:
配置完成,下面启动zookeeper
进入zookeeper安装目录的bin文件夹:
使用zkServer.sh start命令启动zookeeper(注意切换为root账号):
三个节点都启动起来之后,使用zkServer.sh status查看状态:
节点0:
节点1:
节点2:
OK,集群环境搭建成功。