目录
创建多台虚拟机
修改计算机名称
快速生效
修改网络信息
重启网络服务
关闭和禁用每台机的防火墙
同步时间
安装ntpdate
定时更新时间
启动定时任务
设置集群中每台机器的/etc/hosts
把hosts拷贝发送到每一台虚拟机
配置免密登陆
将本机的公钥拷贝到要免密登陆的目标机器
测试免密登陆是否成功
在ant151机器运行自动安装jdk脚本autoinstall.sh
把JDK环境变量拷贝到每一台虚拟机
把zookeeper拷贝到虚拟机里面
解压zookeeper
改名zookeeper
进入conf
修改zoo_cfg
创建目录
设置标识
配置环境变量
启动zookeeper
查看zookeeper状态
停止zookeeper
搭建zookeeper集群
删除datas里面的所有数据
把zk345拷贝到其余机器上面
设置标识
刷新资源
再次启动zookeeper
查看zookeeper状态
启动/关闭所有zookeeper/查看所有zookeeper状态
zkop.sh脚本
查看所有zookeeper服务启动情况
showjps.sh脚本
创建多台虚拟机
创建虚拟机教程
这里以三台虚拟机为例 ant151 / ant152 / ant153
修改计算机名称
三台虚拟机修改名称
[root@localhost ~]# hostnamectl set-hostname ant151
[root@localhost ~]# hostnamectl set-hostname ant152
[root@localhost ~]# hostnamectl set-hostname ant153
快速生效
[root@localhost ~]# bash
修改网络信息
vim /etc/sysconfig/network-scripts/ifcfg-ens33
4 BOOTPROTO=static
15 ONBOOT=yes
16 IPADDR=192.168.78.*
17 GATEWAY=192.168.78.2
18 NETMASK=255.255.255.0
19 DNS1=8.8.8.8
重启网络服务
两种方法:
systemctl restart network.service
service network restart
关闭和禁用每台机的防火墙
[root@ant151 ~]# systemctl stop firewalld
[root@ant151 ~]# systemctl disable firewalld
同步时间
同步时间的下面操作三台机都需要
安装ntpdate
[root@ant151 soft]# yum install -y ntpdate
定时更新时间
[root@ant151 soft]# crontab -e
每五分钟更新一次时间
*/5 * * * * /usr/sbin/ntpdate -u time.windows.com
启动定时任务
[root@ant151 soft]# service crond start
设置集群中每台机器的/etc/hosts
[root@ant151 opt]# vim /etc/hosts
下面加入
IP地址 计算机名称
例如:
192.168.111.111 ant151
192.168.111.111 ant152
192.168.111.111 ant153
把hosts拷贝发送到每一台虚拟机
[root@ant151 opt]# scp /etc/hosts root@ant152:/etc/
[root@ant151 opt]# scp /etc/hosts root@ant153:/etc/
配置免密登陆
[root@ant151 ~]# ssh-keygen -t rsa -P ''
[root@ant151 ~]# cd .ssh/把id_rsa.pub追加到au...下面
[root@ant151 .ssh]# cat id_rsa.pub >> ./authorized_keys
将本机的公钥拷贝到要免密登陆的目标机器
[root@ant151 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@ant151
[root@ant151 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@ant152
[root@ant151 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@ant153每一台机器都要执行
测试免密登陆是否成功
[root@ant151 .ssh]# ssh -p22 root@ant151
[root@ant151 .ssh]# ssh -p22 root@ant152
[root@ant151 .ssh]# ssh -p22 root@ant153
在ant151机器运行自动安装jdk脚本autoinstall.sh
教程
[root@ant153 shellfile]# ./autoinstall.sh
刷新资源
[root@ant153 shellfile]# source /etc/profile
[root@ant153 shellfile]# javac
把JDK180发送到每一台虚拟机上面
[root@ant151 opt]# scp -r ./soft/jdk180/ root@ant152:/opt/soft/
[root@ant151 opt]# scp -r ./soft/jdk180/ root@ant153:/opt/soft/
把JDK环境变量拷贝到每一台虚拟机
[root@ant151 zk345]# scp /etc/profile root@ant152:/etc/
[root@ant151 zk345]# scp /etc/profile root@ant153:/etc/
把zookeeper拷贝到虚拟机里面
可用xftp直接拉进去
解压zookeeper
[root@ant151 install]# tar -zxf zookeeper-3.4.5-cdh5.14.2.tar.gz -C ../soft
改名zookeeper
[root@ant151 install]# mv /opt/soft/zookeeper-3.4.5-cdh5.14.2/ /opt/soft/zk345
可以不改,改名便于操作
进入conf
[root@ant151 soft]# cd /opt/soft/zk345/conf
把zoo_sample.cfg,copy一份改名为zoo.cfg
修改zoo_cfg
[root@ant151 conf]# vim ./zoo.cfg
:set nu查看行号
修改12行用于存放数据
在最后加上server.0=ant151:22887:3387
创建目录
[root@ant151 conf]# mkdir /opt/soft/zk345/datas
设置标识
在datas里面创建myid用于标识便于找到ant151这台机器
[root@ant151 conf]# cd /opt/soft/zk345/datas/
[root@ant151 datas]# echo "0" > myid
配置环境变量
[root@ant151 zk345]# vim /etc/profile
把环境变量拷贝到其余机器
[root@ant151 zk345]# scp /etc/profile root@ant152:/etc/
[root@ant151 zk345]# scp /etc/profile root@ant153:/etc/
#ZK
export ZOOKEEPER_HOME=/opt/soft/zk345
export PATH=$PATH:$ZOOKEEPER_HOME/bin
从 解压 开始到 配置环境变量 的操可提取到一个脚本里面直接操作
操作方法类似JDK 教程
#! /bin/bash
echo 'auto 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=/tmp/zookeeper/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
TIP:
如果start出现下面问题
只需 kill 掉这个process即可
[root@ant151 soft]# kill -9 92810
再次启动则会正常
启动zookeeper
[root@ant151 zk345]# ./bin/zkServer.sh start
查看zookeeper状态
[root@ant151 zk345]# ./bin/zkServer.sh status
停止zookeeper
[root@ant151 soft]# zkServer.sh stop
搭建zookeeper集群
[root@ant151 zk345]# vim ./conf/zoo.cfg
在最下面加上
server.0=ant151:2287:3387
server.1=ant152:2287:3387
server.2=ant153:2287:3387这里只能是奇数,不能是偶数,因为要投票选举,如果是偶数则会出现平票的情况,所有只能是偶数
删除datas里面的所有数据
[root@ant151 zk345]# rm -rf /opt/soft/zk345/datas/*
把zk345拷贝到其余机器上面
[root@ant151 zk345]# scp -r ../zk345/ root@ant152:/opt/soft
[root@ant151 zk345]# scp -r ../zk345/ root@ant153:/opt/soft设置标识
注意:目录要在datas下面,上面有一步把ant151里面的datas删除了,所有这里还要设置
ant151 [root@ant151 datas]# echo "0" > myid
ant152 [root@ant152 datas]# echo "1" > myid
ant153 [root@ant153 datas]# echo "2" > myid
这里设置的标识要与上面的zoo.cfg下面设置的对应
刷新资源
[root@ant153 datas]# source /etc/profile
再次启动zookeeper
[root@ant151 datas]# zkServer.sh start
[root@ant152 datas]# zkServer.sh start
[root@ant153 datas]# zkServer.sh start
三台机器都要启动
查看zookeeper状态
[root@ant153 datas]# zkServer.sh status
ant151:follower
ant152:leader
ant153:follower
启动/关闭所有zookeeper/查看所有zookeeper状态
在opt下面创建一个shell目录,在创建一个zkop.sh文件用于存放脚本
创建目录
[root@ant151 opt]# mkdir shell
进入shell
[root@ant151 opt]# cd ./shell
创建zkop.sh并编辑
[root@ant151 shell]# vim zkop.sh修改权限
[root@ant151 shell]# chmod 733 zkop.sh
zkop.sh脚本
#! /bin/bash
case $1 in
"start"){
for i in ant151 ant152 ant153
do
ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh start "
done
};;
"stop"){
for i in ant151 ant152 ant153
do
ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh stop "
done
};;
"status"){
for i in ant151 ant152 ant153
do
ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh status "
done
};;
esac
关闭所有 zookeeper
开启所有zookeeper
查看所有zookeeper状态
查看所有zookeeper服务启动情况
在opt下面创建一个shell目录,在创建一个showjps.sh文件用于存放脚本
创建showjps.sh并编辑
[root@ant151 shell]# vim showjps.sh修改权限
[root@ant151 shell]# chmod 733 showjps.sh
showjps.sh脚本
# showalljps.sh
#! /bin/bash
for i in ant151 ant152 ant153
do
echo ---------- $i 服务启动状态 -------------
ssh $i "source /etc/profile; /opt/soft/jdk180/bin/jps "
done
[root@ant151 shell]# ./showjps.sh