Bootstrap

zookeeper---集群搭建

zookeeper集群搭建

跳过安装jdk的方法就是找到安装jdk环境的虚拟机克隆
克隆之后的虚拟机根据台数直接修改ip地址,重新配置免密登录,确保每台机器能够互相连接,然后安装zookeeper



前期工作

这里以三台机器来搭建,搭建过程基本一致,以zk1的操作演示

服务器划分

服务器名称环境ip地址
zk1jdk192.168.95.161
zk2jdk192.168.95.162
zk3jdk192.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
在这里插入图片描述

;