1、单机安装
# 上传 zookeeper-3.4.6.tar.gz 到linux /opt目录
# 解压
tar -zxf zookeeper-3.4.6.tar.gz
# 创建软链
ln -s /opt/zookeeper-3.4.6 /usr/local/zk
# zk的数据放在/data/zk,存放zk运行时产生的数据
mkdir /data/zk -p
cd /usr/local/zk/conf/
# 配置文件
cp zoo_sample.cfg zoo.cfg
# 修改 dataDir=/data/zk
vim zoo.cfg
# 启动zk
/usr/local/zk/bin/zkServer.sh start
#JMX enabled by default
#Using config: /usr/local/zk/bin/../conf/zoo.cfg
#Starting zookeeper ... STARTED
# 查看zk状态
/usr/local/zk/bin/zkServer.sh status
#JMX enabled by default
#Using config: /usr/local/zk/bin/../conf/zoo.cfg
#Mode: standalone
# 停止zk
/usr/local/zk/bin/zkServer.sh stop
2、集群安装
真实的集群需要部署不同的服务器
我本地为了节省资源,部署在一台虚拟机,使用不同的端口号进行区分
(1)准备安装文件
mkdir /opt/zkcluster -p
# 创建多个data文件夹
mkdir /data/zkcluster/{zk1,zk2,zk3} -p
# 上传 zookeeper-3.4.6.tar.gz 到linux /opt目录
# 解压
cp /opt/zookeeper-3.4.6.tar.gz /opt/zkcluster
cd /opt/zkcluster
tar -zxf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 zookeeper-3.4.6-01
cp -r zookeeper-3.4.6-01/ zookeeper-3.4.6-02
cp -r zookeeper-3.4.6-01/ zookeeper-3.4.6-03
rm -f zookeeper-3.4.6.tar.gz
ln -s /opt/zkcluster/zookeeper-3.4.6-01 /usr/local/zk1
ln -s /opt/zkcluster/zookeeper-3.4.6-02 /usr/local/zk2
ln -s /opt/zkcluster/zookeeper-3.4.6-03 /usr/local/zk3
(2)myid
# 创建myid,内容只有数字:“1”
touch /data/zkcluster/zk1/myid
echo '1'>/data/zkcluster/zk1/myid
# 创建myid,内容只有数字:“2”
touch /data/zkcluster/zk2/myid
echo '2'>/data/zkcluster/zk2/myid
# 创建myid,内容只有数字:“3”
touch /data/zkcluster/zk3/myid
echo '3'>/data/zkcluster/zk3/myid
(3)修改配置并启动节点
# 修改配置1
cp /usr/local/zk1/conf/zoo_sample.cfg /usr/local/zk1/conf/zoo.cfg
# 修改节点配置: dataDir=/data/zkcluster/zk1;clientPort=2181
sed -i 's/dataDir=\/tmp\/zookeeper/dataDir=\/data\/zkcluster\/zk1/g' /usr/local/zk1/conf/zoo.cfg
sed -i 's/clientPort=2181/clientPort=2181/g' /usr/local/zk1/conf/zoo.cfg
# zoo.cfg 加入 server.myid=服务器IP地址:服务器之间通信端口:服务器之间投票选举端口
echo 'server.1=192.168.211.131:2881:3881' >> /usr/local/zk1/conf/zoo.cfg
echo 'server.2=192.168.211.131:2882:3882' >> /usr/local/zk1/conf/zoo.cfg
echo 'server.3=192.168.211.131:2883:3883' >> /usr/local/zk1/conf/zoo.cfg
#启动
/usr/local/zk1/bin/zkServer.sh start
/usr/local/zk1/bin/zkServer.sh status
# 修改节点2配置: dataDir=/data/zkcluster/zk2;clientPort=2182 客户端连接zk的端口
cp /usr/local/zk2/conf/zoo_sample.cfg /usr/local/zk2/conf/zoo.cfg
sed -i 's/dataDir=\/tmp\/zookeeper/dataDir=\/data\/zkcluster\/zk2/g' /usr/local/zk2/conf/zoo.cfg
sed -i 's/clientPort=2181/clientPort=2182/g' /usr/local/zk2/conf/zoo.cfg
echo 'server.1=192.168.211.131:2881:3881' >> /usr/local/zk2/conf/zoo.cfg
echo 'server.2=192.168.211.131:2882:3882' >> /usr/local/zk2/conf/zoo.cfg
echo 'server.3=192.168.211.131:2883:3883' >> /usr/local/zk2/conf/zoo.cfg
/usr/local/zk2/bin/zkServer.sh start
/usr/local/zk2/bin/zkServer.sh status
# 修改节点3配置: dataDir=/data/zkcluster/zk3;clientPort=2183
cp /usr/local/zk3/conf/zoo_sample.cfg /usr/local/zk3/conf/zoo.cfg
sed -i 's/dataDir=\/tmp\/zookeeper/dataDir=\/data\/zkcluster\/zk3/g' /usr/local/zk3/conf/zoo.cfg
sed -i 's/clientPort=2181/clientPort=2183/g' /usr/local/zk3/conf/zoo.cfg
echo 'server.1=192.168.211.131:2881:3881' >> /usr/local/zk3/conf/zoo.cfg
echo 'server.2=192.168.211.131:2882:3882' >> /usr/local/zk3/conf/zoo.cfg
echo 'server.3=192.168.211.131:2883:3883' >> /usr/local/zk3/conf/zoo.cfg
/usr/local/zk3/bin/zkServer.sh start
/usr/local/zk3/bin/zkServer.sh status
# yum install net-tools
/usr/local/zk1/bin/zkServer.sh stop
/usr/local/zk2/bin/zkServer.sh stop
/usr/local/zk3/bin/zkServer.sh stop
/usr/local/zk1/bin/zkServer.sh start
/usr/local/zk2/bin/zkServer.sh start
/usr/local/zk3/bin/zkServer.sh start
/usr/local/zk1/bin/zkServer.sh status
/usr/local/zk2/bin/zkServer.sh status
/usr/local/zk3/bin/zkServer.sh status
rm /opt/zkcluster/ -fr
rm /data/zkcluster/ -fr
rm -f /usr/local/zk1
rm -f /usr/local/zk2
rm -f /usr/local/zk3