1. 先玩起来
1.1 zk集群搭建
## 下面的每一步都需要在三台机器上都操作一遍,除非标注了不需要操作
## 准备三个虚拟机节点、或者云服务器节点
192.168.231.132 192.168.231.133 192.168.231.134
## 修改3个节点的 etc/hostname 配置主机名称(内容随意有区分就行)
kafka132
kafka133
kafka134
## 修改3个节点的 etc/hosts 该文件可以让我们通过主机名称互通
192.168.231.132 kafka132
192.168.231.133 kafka133
192.168.231.134 kafka134
## 虚拟机防火墙、云服务器端口开放
systemctl start firewalld ## 启动防火墙
systemctl stop firewalld ## 关闭防火墙
systemctl restart firewalld ## 重启防火墙
systemctl status firewalld ## 查看防火墙状态
systemctl disable firewalld ## 禁用防火墙
## 验证服务通信,随便找一个节点,比如 221 节点,ping完之后显示互通就算完成
ping kafka134
## 系统需要安装jdk(每台服务都需要)
因为zk是java写的
## zk版本(每台服务都需要)
zookeeper-3.4.6
## 上传zk到服务器,也可以通过复制命令,复制到其它服务器
/home/software/zookeeper
scp zookeeper-3.4.6.tar.gz 192.168.231.132:/home/software/zookeeper
## 解压到,/usr/local(每台服务都需要)
tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/
## 修改环境变量,vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6
export PATH=.:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
## 刷新环境变量
source /etc/profile
## 进入文件目录
cd /usr/local/zookeeper-3.4.6/conf
## 修改配置名称
mv zoo_sample.cfg zoo.cfg
## 修改zoo.cfg,设置zk存储数据的目录
dataDir=/usr/local/zookeeper-3.4.6/data
## 修改zoo.cfg,修改集群地址,server.集群数从0开始=ip:2888:3888(单机版就写第一行就行)
server.0=bhz221:2888:3888
server.1=bhz222:2888:3888
server.2=bhz223:2888:3888
## 创建在配置文件中写的data
mkdir /usr/local/zookeeper-3.4.6/data
## 创建文件myid
vim /usr/local/zookeeper-3.4.6/data/myid
## 到此为止,Zookeeper集群环境大功告成!启动zookeeper命令
启动路径:/usr/local/zookeeper-3.4.6/bin(也可在任意目录,因为配置了环境变量)
执行命令:zkServer.sh start (注意这里3台机器都要进行启动,启动之后可以查看状态)
查看状态:zkServer.sh status (在三个节点上检验zk的mode, 会看到一个leader和俩个follower),单节点的状态会看到(standalone 独立的)
集群关闭:zkServer.sh stop
## 默认端口是
2181
## 输入jps
QuorumPeerMain :代表zk
1.2 配置开机自启动
cd /etc/rc.d/init.d/
touch zookeeper
chmod 777 zookeeper
vim zookeeper
开机启动zookeeper脚本:
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
case $1 in
start) /usr/local/zookeeper-3.4.6/bin/zkServer.sh start;;
stop) /usr/local/zookeeper-3.4.6/bin/zkServer.sh stop;;
status) /usr/local/zookeeper-3.4.6/bin/zkServer.sh status;;
restart) /usr/local/zookeeper-3.4.6/bin/zkServer.sh restart;;
*) echo "require start|stop|status|restart" ;;
esac
开机启动配置:chkconfig zookeeper on
验证:
chkconfig --add zookeeper
chkconfig --list zookeeper
这个时候我们就可以用servicezookeeper start/stop来启动停止zookeeper服务了
使用chkconfig--add zookeeper命令把zookeeper添加到开机启动里面
添加完成之后接这个使用chkconfig--list 来看看我们添加的zookeeper是否在里面
如果上面的操作都正常的话;你就可以重启你的linux服务器了
1.3 本机启动zk
## 下载Zookeeper最新版,
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.5/
## 配置 /usr/local/apache-zookeeper-3.5.5-bin/conf
将zoo_sample.cfg 复制一份命名为zoo.cfg,也可以修改下数据存储节点,默认的也OK
## 启动Zookeeper
cd /usr/local/apache-zookeeper-3.5.5-bin/bin
Mac执行命令行执行 ./zkServer.sh start
Windows同学执行对应的cmd文件
本地如果启动失败,可能是因为没有权限使用: sudo ./zkServer.sh start
## 启动完成以后出现这个就代表着启动成功
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
## 进入客户端,运行验证
命令: ./zkCli.sh
也可能没有权限进入失败使用: sudo ./zkCli.sh
最后打印出一堆东西最后一行是
WatchedEvent state:SyncConnected type:None path:null
## 关闭Zookeeper
./zkServer.sh stop
1.4 zk客户端常见命令
## 进入客户端
zkCli.sh
## 查找
ls /
ls /zookeeper
## 创建并赋值,前者是节点名称,后者是节点存储的值
create /imooc zookeeper
## 获取
get /imooc
## 重新设置值
set /imooc zookeeper1314
## 删除节点
delete /imooc
2. 理论知识
1. zk是一个树形文件结构,比较像目录结构 1. 红色节点 1. 持久节点,zk的会话结束,重启都不会消失,除非手动删除 3. 黄色节点 1. 瞬时节点,zk重启或者连接的会话断开都会消失 1. 它不允许有子节点 1. 有序:创建这些节点,它的名称是会按照序号排序的 |
|
---|---|