下载jdk
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
分别解压到三台服务器指定目录
如/data//jdk1.8.0_191
配置jdk环境变量
vi /etc/profile
插入
JAVA_HOME=/data/aics/jdk1.8.0_191
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
source /etc/profile
下载zookeeper
http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/
安装脚本
#!/usr/bin/env bash
set -x
zkpath=/data/zookeeper-3.4.10.tar.gz
ipath=/data
num="1"
ipaddress1="192.168.117.128"
ipaddress2="192.168.117.129"
ipaddress3="192.168.117.130"
if [ ! -e $ipath ] ; then
echo "路径不存在,创建安装路径!"
mkdir -p $ipath
fi
echo "解压zk到指定目录下!"
tar -zxvf $zkpath -C $ipath
echo "解压完毕!"
cd $ipath
mv zookeeper-3.4.10 zookeeper
confpath=$ipath"/zookeeper"
cd $confpath
mkdir data
cd data
echo $num >> myid
echo "生成myid文件......."
cd $confpath"/conf"
mv zoo_sample.cfg zoo.cfg
sed -i -e "s|dataDir=/tmp/zookeeper|dataDir=${confpath}/data|" zoo.cfg
echo "server.1=$ipaddress1:2888:3888" >> zoo.cfg
echo "server.2=$ipaddress2:2888:3888" >> zoo.cfg
echo "server.3=$ipaddress3:2888:3888" >> zoo.cfg
echo "写入zoo.cfg文件成功!"
pid=`ps -ef | grep zookeeper | gawk '{ print $2}' | head -n 1`
echo "zk进程号: $pid"
#检查进程号是否为空
if [ ! -z $pid ] ; then
kill $pid
echo "检测到zookeeper进程存在,已关闭!"
fi
echo "开始启动zk....."
cd ..
bin/zkServer.sh start
echo "启动完成....查看zookeeper状态"
bin/zkServer.sh status
分别解压到三台服务器指定目录
比如`/data/zookeeper/zookeeper-3.4.10`
如三台服务器地址分别为:`192.168.117.128;192.168.117.129;192.168.117.130`
配置ZooKeeper
cp /data/zookeeper/zookeeper-3.4.10/conf/zoo_sample.cfg /data/zookeeper/zookeeper-3.4.10/conf/zoo.cfg
每个`zoo.cfg`配置
`/data/zookeeper/zookeeper-3.4.10/conf/zoo.cfg`内容:
#######The number of milliseconds of each tick
tickTime=2000
#######The number of ticks that the initial
#######synchronization phase can take
initLimit=10
#######The number of ticks that can pass between
#######sending a request and getting an acknowledgement
syncLimit=5
#######the directory where the snapshot is stored.
#######do not use /tmp for storage, /tmp here is just
#######example sakes.
#######dataDir=/tmp/zookeeper
dataDir=/data/aics/zookeeper/data
#######the port at which the clients will connect
clientPort=2181
server.1=192.168.117.128:2888:3888
server.2=192.168.117.129:2888:3888
server.3=192.168.117.130:2888:3888
在每台服务器执行如下命令
mkdir -p /data/zookeeper/data
在每个dataDir对应目录下新建myid文件
cd /data/zookeeper/data
`192.168.117.128`服务器上执行命令`echo '1'>myid`
`192.168.117.129`服务器上执行命令`echo '2'>myid `
`192.168.117.130`服务器上执行命令`echo '3'>myid `
开启端口
`firewall-cmd --zone= public --add-port=2181/tcp --permanent`
`firewall-cmd --zone= public --add-port=2888/tcp --permanent`
`firewall-cmd --zone= public --add-port=3888/tcp --permanent`
启动服务
切换到zooKeeper bin目录下执行命令:`./zkServer.sh start`
验证服务
三台服务器都启动后执行命令:`./zkServer.sh status`