zookeeper集群搭建
跳过安装jdk的方法就是找到安装jdk环境的虚拟机克隆
克隆之后的虚拟机根据台数直接修改ip地址,重新配置免密登录,确保每台机器能够互相连接,然后安装zookeeper
前期工作
这里以三台机器来搭建,搭建过程基本一致,以zk1的操作演示
服务器划分
服务器名称 | 环境 | ip地址 |
---|---|---|
zk1 | jdk | 192.168.95.161 |
zk2 | jdk | 192.168.95.162 |
zk3 | jdk | 192.168.95.163 |
ip地址配置之后,防火墙关闭并且能保证连接xshell和xftp
没有vim命令的可以使用
yum -y install vim
修改hostname
[root@localhost ~]# hostnamectl set-hostname zk1
[root@localhost ~]# bash
同理 修改第二台 zk2 第三台 zk3
设置集群中每台机器的/etc/hosts
[root@zk1 ~]# vim /etc/hosts
将hosts文件发送到另外两台机器上
[root@zk1 ~]# scp /etc/hosts root@zk2:/etc/
[root@zk1 ~]# scp /etc/hosts root@zk3:/etc/
配置免密登录
[root@zk1 ~]# ssh-keygen -t rsa -P ‘’
zk2 zk3重复此步骤
将本机的公钥拷贝到要免密登陆的目标机器
[root@zk1 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@zk1
[root@zk1 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@zk2
[root@zk1 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@zk3
注意:需要输入密码
zk2 zk3重复此步骤
测试免密登陆是否成功
[root@zk1 .ssh]# ssh -p22 root@zk2
[root@zk1 .ssh]# ssh -p22 root@zk3
注意:登录之后需要退出
zk2 zk3重复此步骤 看是否成功
安装jdk
具体步骤可以查看: Hadoop安装教程(一)
也可以使用脚本安装:Hadoop安装jdk简易版
这里使用脚本安装
zk1 opt下有soft和install目录
将jdk安装包用xftp上传到install目录下
编写autoinstall.sh脚本
#! /bin/bash
echo 'auto install begining....'
#global var
jdk=true
if [ "$jdk" = true ];then
echo 'jdk install set true'
echo 'setup jdk 8'
tar -zxf /opt/install/jdk-8u321-linux-x64.tar.gz -C /opt/soft/
mv /opt/soft/jdk1.8.0_321 /opt/soft/jdk180
sed -i '73a\PATH=$PATH:$JAVA_HOME/bin' /etc/profile
sed -i '73a\export CLASSPATH=.:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/lib/tools.jar' /etc/profile
sed -i '73a\export JAVA_HOME=/opt/soft/jdk180' /etc/profile
sed -i '73a\#jdk' /etc/profile
echo 'setup jdk 8 success!!!'
fi
修改autoinstall.sh脚本的权限
[root@zk1 opt]# chmod 777 autoinstall.sh
执行脚本文件
[root@zk1 opt]# ./autoinstall.sh
刷新配置文件
[root@zk1 opt]# source /etc/profile
将安装好的发送到zk2,zk3
[root@zk1 opt]# scp -r ./soft/jdk180/ root@zk2:/opt/soft/
[root@zk1 opt]# scp -r ./soft/jdk180/ root@zk3:/opt/soft/
注意:这里应该把 /etc/profile传给zk2,zk3,但后面还需要安装zookeeper 所以可以最后一起发送
部署zookeeper集群
上传安装包
zk1将zookeeper安装包上传到opt目录下install目录
编写 zkzutoinstall.sh
在opt目录下编写zkzutoinstall.sh脚本
#! /bin/bash
echo 'auto zookeeper install begining....'
#global var
zk=true
hostname=`hostname`
if [ "$zk" = true ];then
echo 'zookeeper install set true'
echo 'setup zookeeper-3.4.5-cdh5.14.2.tar.gz'
tar -zxf /opt/install/zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/soft/
mv /opt/soft/zookeeper-3.4.5-cdh5.14.2 /opt/soft/zk345
cp /opt/soft/zk345/conf/zoo_sample.cfg /opt/soft/zk345/conf/zoo.cfg
mkdir -p /opt/soft/zk345/datas
sed -i '12c dataDir=/opt/soft/zk345/datas' /opt/soft/zk345/conf/zoo.cfg
echo "server.0=$hostname:2287:3387" >> /opt/soft/zk345/conf/zoo.cfg
echo "0" > /opt/soft/zk345/datas/myid
sed -i '73a\export PATH=$PATH:$ZOOKEEPER_HOME/bin' /etc/profile
sed -i '73a\export ZOOKEEPER_HOME=/opt/soft/zk345' /etc/profile
sed -i '73a\#ZK' /etc/profile
echo 'setup zookeeper success!!!'
fi
修改权限
[root@zk1 opt]# chmod 777 zkautoinstall.sh
运行
[root@zk1 opt]# ./zkautoinstall.sh
进入/opt/soft/zk345/conf目录下
修改vim zoo.cfg
[root@zk1 conf]# vim zoo.cfg
并且在末尾追加
server.1=zk2:2287:3387
server.2=zk3:2287:3387
将zookeeper发送到zk2 zk3
[root@zk1 zk345]# scp -r …/zk345/ root@zk2:/opt/soft
[root@zk1 zk345]# scp -r …/zk345/ root@zk3:/opt/soft
查看myid
在zk1中
切换到datas目录下
[root@zk1 conf]# cd …/datas/
查看
[root@zk1 datas]# cat myid
确保 myid的编号与server.x的编号一致
同理zk2
切换到/opt/soft/zk345/datas目录下
[root@zk2 datas]# echo “1” > myid
[root@zk2 datas]# cat myid
同理zk3
切换到/opt/soft/zk345/datas目录下
[root@zk3 datas]# echo “2” > myid
[root@zk3 datas]# cat myid
将zk1 /etc/profile 发送给zk2 zk3
[root@zk1 zk345]# scp /etc/profile root@zk2:/etc/
[root@zk1 zk345]# scp /etc/profile root@zk3:/etc/
运行
刷新配置文件
[root@zk1 zk345]# source /etc/profile
运行zookeeper
[root@zk1 zk345]# zkServer.sh start
zk2 zk3 重复此步骤
查看jps
[root@zk2 datas]# jps
同理zk1 zk3 重复此步骤
查看状态
[root@zk1 zk345]# zkServer.sh status
zk2 zk3 重复此步骤
可以看到 zk2为leader zk1和zk3为follower
关闭服务
[root@zk1 zk345]# zkServer.sh stop
同理zk2 zk3重复此步骤
编写开启,查看状态,关闭脚本和查看jps脚本
为了方便在一台机器上查看所有机器的状况
zkop.sh
zk1 opt目录下
[root@zk1 opt]# vim zkop.sh
#! /bin/bash
case $1 in
"start"){
for i in zk1 zk2 zk3
do
ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh start "
done
};;
"stop"){
for i in zk1 zk2 zk3
do
ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh stop "
done
};;
"status"){
for i in zk1 zk2 zk3
do
ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh status "
done
};;
esac
修改zkop.sh权限
[root@zk1 opt]# chmod 777 ./zkop.sh
运行
开启
[root@zk1 opt]# ./zkop.sh start
查看状态
[root@zk1 opt]# ./zkop.sh status
关闭
[root@zk1 opt]# ./zkop.sh stop
showalljps.sh
查看所有机器的jps
zk1 opt目录下
[root@zk1 opt]# vim showalljps.sh
#! /bin/bash
for i in zk1 zk2 zk3
do
echo ---------- $i 服务启动状态 -------------
ssh $i "source /etc/profile; /opt/soft/jdk180/bin/jps "
done
修改showalljps.sh权限
[root@zk1 opt]# chmod 777 ./showalljps.sh
运行
[root@zk1 opt]# ./showalljps.sh