目录
前提条件
准备3台Linux机器,并安装好Java8
ZooKeeper集群规划
node2 | node3 | node4 |
---|---|---|
zookeeper | zookeeper | zookeeper |
安装的ZooKeeper版本为3.7.1,首先在node2安装ZooKeeper,然后分发到node3、node4。
下载ZooKeeper
下载ZooKeeper安装包并上传到node2 /opt/software目录
https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
解压
解压
[liang@node2 software]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/module
重命名
[liang@node2 software]$ cd /opt/module/ [liang@node2 module]$ ls | grep zookeeper apache-zookeeper-3.7.1-bin [liang@node2 module]$ mv apache-zookeeper-3.7.1-bin zookeeper-3.7.1
配置环境变量
[liang@node2 module]$ sudo vim /etc/profile.d/my_env.sh
添加如下内容
#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.7.1
export PATH=$PATH:$ZOOKEEPER_HOME/bin
让环境变量生效
[liang@node2 module]$ source /etc/profile
配置ZooKeeper
配置zoo.cfg
[liang@node2 module]$ cd $ZOOKEEPER_HOME/conf/ [liang@node2 conf]$ ls configuration.xsl log4j.properties zoo_sample.cfg [liang@node2 conf]$ cp zoo_sample.cfg zoo.cfg [liang@node2 conf]$ ls configuration.xsl log4j.properties zoo.cfg zoo_sample.cfg [liang@node2 conf]$ vim zoo.cfg
修改内容
dataDir=/opt/module/zookeeper-3.7.1/zkData
同时,文件末尾添加如下配置
server.2=node2:2888:3888
server.3=node3:2888:3888
server.4=node4:2888:3888
配置myid
在dataDir配置目录(zoo.cfg中配置了dataDir)下创建myid,在myid中配置服务器编号
cd $ZOOKEEPER_HOME mkdir zkData cd zkData
创建myid
vim myid
内容如下:
2
分发到其他机器
分发ZooKeeper安装目录到node3、node4
xsync /opt/module/zookeeper-3.7.1
分发环境变量
sudo /home/liang/bin/xsync /etc/profile.d/my_env.sh
根据提示输入node2机器root账户的登录密码
分别让node3及node4的环境变量生效
[liang@node3 ~]$ source /etc/profile [liang@node4 ~]$ source /etc/profile
修改其他机器myid
分别修改node3、node4的myid,myid的内容改为机器对应的服务器编号。
node3机器
[liang@node3 ~]$ vim $ZOOKEEPER_HOME/zkData/myid
内容修改为
3
node4机器
[liang@node4 ~]$ vim $ZOOKEEPER_HOME/zkData/myid
内容修改为
4
启动集群
分别在集群各个机器启动ZooKeeper服务
[liang@node2 conf]$ zkServer.sh start [liang@node3 conf]$ zkServer.sh start [liang@node4 conf]$ zkServer.sh start
分别查看集群各个机器ZooKeeper状态
[liang@node2 conf]$ zkServer.sh status [liang@node3 conf]$ zkServer.sh status [liang@node4 conf]$ zkServer.sh status
可以看到三台有一台机器为leader状态,另外两台机器为follower状态。
查看进程
[liang@node2 conf]$ jps [liang@node3 conf]$ jps [liang@node4 conf]$ jps
关闭集群
分别在集群各个机器关闭ZooKeeper服务
[liang@node2 conf]$ zkServer.sh stop [liang@node3 conf]$ zkServer.sh stop [liang@node4 conf]$ zkServer.sh stop
查看进程
[liang@node2 conf]$ jps [liang@node3 conf]$ jps [liang@node4 conf]$ jps
集群启停脚本
在node2机器执行
zk.sh
vim ~/bin/zk.sh
内容如下:
#!/bin/bash
case $1 in
"start"){
for i in node2 node3 node4
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/module/zookeeper-3.7.1/bin/zkServer.sh start"
done
};;
"stop"){
for i in node2 node3 node4
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/module/zookeeper-3.7.1/bin/zkServer.sh stop"
done
};;
"status"){
for i in node2 node3 node4
do
echo ---------- zookeeper $i 状态 ------------
ssh $i "/opt/module/zookeeper-3.7.1/bin/zkServer.sh status"
done
};;
esac
添加权限
chmod +x ~/bin/zk.sh
测试
zk.sh start zk.sh status zk.sh stop
如有需要,可点击查看:配套视频教程
完成!enjoy it!