zookeeper安装模式分为三种:单机模式、集群模式和伪集群模式
伪集群模式就是在单机环境下模拟集群的Zookeeper服务,这里就不做演示
单机模式
-
下载zookeeper,地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
-
将安装包上传到linux上,并解压到指定目录
tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local -
配置修改
将/usr/local/zookeeper-3.4.14/conf下的zoo_simple.cfg修改为zoo.cfg,因为 bin/zkEnv.cmd文件里面的配置的是set ZOOCFG=%ZOOCFGDIR%\zoo.cfgmv zoo_simple.cfg zoo.cfg
修改zoo.cfg中的dataDir的路径
新建zkData文件mkdir zkData
-
启动zookeeper
bin/zkServer.sh start
-
查看进程是否启动
-
查看状态
-
启动客户端
bin/zkCli.sh
-
关闭zookeeper
bin/zkServer.sh stop
集群模式
zookeeper集群通常由2n+1(奇数)台服务器组成
搭建集群模式和单机模式步骤差不多一致,只是需要修改每台服务器的配置文件
-
每台服务器根据单机模式安装
-
配置文件zoo.cfg修改
#在配置文件中加上下面的配置,主机名:心跳端口:选举端口 server.1=172.16.120.136:2888:3888 server.2=192.168.3.223:2888:3888 server.3=172.16.120.152:2888:3888
-
新建myid文件
在zkData文件夹下新建myid文件,myid没有后缀名
每台服务器中的myid文件中的内容要和server.1的数字对应
比如192.168.3.223对应的myid值为2,其他服务器同理
-
依次启动zookeeper
Mode:follower表示当前服务器是跟随者
Mode:leader表示当前服务器是领导者
简单测试
-
创建maven项目,引入依赖
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.5.5</version> </dependency>
-
测试类
import org.apache.zookeeper.*; public class TestZKCli { public static void main(String[] args) throws Exception { ZooKeeper zooKeeper = new ZooKeeper("172.16.120.135,192.168.2.223,172.16.120.151", 30000, new Watcher() { public void process(WatchedEvent watchedEvent) { System.out.println(watchedEvent.getType()); System.out.println(watchedEvent.getPath()); System.out.println(watchedEvent.getState()); } }); zooKeeper.create("/zktest","123".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL); zooKeeper.close(); } }
-
查看节点