-
机器准备
××.××.××.1
××.××.××.2
××.××.××.3 -
zookeeper下载
此处选择3.6.0版本进行安装
要选择带有bin的安装包,不带bin的安装包只包含源码,从版本3.5.5开始,带有bin名称的包才是我们想要的下载可以直接使用的里面有编译后的二进制的包
-
zookeeper实例安装
解压安装包
tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz -C /usr/local
进入conf目录修改配置文件
cp zoo_sample.cfg zoo.cfg
配置文件需要修改data文件目录和添加进群配置:
tickTime=2000
initLimit=10
syncLimit=5
#修改文件位置
dataDir=/usr/local/apache-zookeeper-3.6.0-bin/data
clientPort=2181
#配置集群
server.0=××.××.××.1:2888:3888
server.1=××.××.××.2:2888:3888
server.2=××.××.××.3:2888:3888
创建/usr/local/apache-zookeeper-3.6.0-bin/data目录并在data目录下创建myid文件,三台机器依次在myid文件中输入0,1,2对应当前机器在集群中的ID
配置环境变量
export ZK_HOME=/usr/local/software/zookeeper-3.3.6
export PATH=$PATH:$ZK_HOME/bin
使环境变量生效
source /etc/profle
分别启动三个zookeeper服务
./bin/zkServer.sh start-foreground
添加foreground可以看到启动日志,若启动失败方便排查,启动过程中如果报错:
Unexpected exception, exiting abnormally
java.net.BindException: 地址已在使用
原因是端口号被占用,解决方案是杀掉这个进程,步骤如下:
sudo netstat -nltp | grep 2181
结果为:
tcp6 0 0 :::2181 :::* LISTEN 53206/java
该端口被java进程占用,所有kill命令杀掉该进程
sudo kill -9 3071
三个zookeeper实例成功启动之后,zookeeper集群搭建完毕,可以通过
./bin/zkServer.sh status
来查看实例的状态
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
可以从mode中看到,当前实例是follower。
- 启动命令:./bin/zkServer.sh start
- 停止命令:./bin/zkServer.sh stop
- 重启命令:./bin/zkServer.sh restart
- 状态查看命令:./bin/zkServer.sh status
- 开启zk客户端:./bin/zkCli.sh
- 查看zk中的所有内容: ls /
- 创建zk节点:create /zk testData
- 获取节点zk的内容:get /zk 获取节点zk
- 删除节点zk:delete /zk
在leader节点开启zk客户端连接zk,创建一个/testNode节点
[zk: localhost:2181(CONNECTED) 3] create /testNode myTestData
Created /testNode
[zk: localhost:2181(CONNECTED) 4] get /testNode
myTestData
[zk: localhost:2181(CONNECTED) 5]
从节点查看该节点内容,显示通不成功,集群搭建成功
[zk: localhost:2181(CONNECTED) 0] ls /
[testNode, zk, zookeeper]
[zk: localhost:2181(CONNECTED) 1] get /testNode
myTestData
[zk: localhost:2181(CONNECTED) 2]








网友评论