此篇内容详细介绍zookeeper集群的搭建,以及萌新路上碰见的花里胡哨的问题,(没错就是我,我把坑一个一个算是踩完了~~必须汇总一下我遇到妖魔鬼怪!)
这里我直接将准备工作做好了,具体:先配置zkeeper01的网络,防火墙,和java运行环境,因为zookeeper是由java编写需要java运行环境,配置号zkeeper01之后拍摄快照,进行克隆,生成另外两台!
虚拟机设置
vi /etc/hostname //此处修改的名称要与hosts文件的名字一样
hostname文件内容:
hosts文件内容(后面三台虚拟机统一设置):
防火墙配置命令
关闭防火墙:
systemctl stop firewalld
卸载防火墙:(这里直接卸载了防火墙,省事)
systemctl disable firewalld
网络配置(很简单,这里不做多解释)只要能ping同百度就行
其实就是修改这个文件:vim /etc/sysconfig/network-scripts/ifcfg-ens32
//文件修改内容后,如下:
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.168.67
NETMASK=255.255.255.0
GATEWAY=192.168.168.2
DNS1=192.168.168.2
DNS2=114.114.114.114
DNS3=8.8.8.8
Tips:注意
//克隆的三台计算机ip地址不能一样,第一时间记得修改(我的三台ip如下)
zkeeper01=192.168.168.67
zkeeper02=192.168.168.68
zkeeper03=192.168.168.69
Java环境配置(这里不懂得点一下有专门解释jdk配置)
如上图,当基本的环境配置完毕时,对zookeeper01拍摄快照,再进行克隆操作出zookeeper02、zookeeper03即可
- zookeeper资源下载(建议到目录/usr/local/
下载)
//切换到/usr/local目录下下载,安装目录随个人喜好不强求
cd /usr/local
wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
- 解压文件改文件名
//我这里直接加压在/usr/local目录下
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
//改文件名为zookeeper
mv apache-zookeeper-3.7.0-bin.tar.gz zookeeper
-修改配置文件(进入加压后的文件,找到conf/zoo_sample.cfg
文件)
//对文件进行重命名
cd zookeeper/conf //进入配置文件目录(看你所处目录情况来看,按照我一样的不用担心直接复制命令)
ls //查看是否有zoo_sample.cfg文件
mv zoo_sample.cfg zoo.cfg //确定有,则改名字
//进行文件内部修改
vim zoo.cfg
//2888为组成zookeeper服务器之间的通信端口,3888为用来选举leader的端口
三台虚拟机都需操作
server.1=192.168.168.67:2888:3888
server.2=192.168.168.68:2888:3888
server.3=192.168.168.69:2888:3888
三台端口号:2181、2182、2183(随意)
创建和修改myid文件内容:
-创建数据存储文件夹data和myid文件
mkdir /usr/local/zookeeper/data
touch myid //创建文件myid
//写入内容1,此处内容要与zoo.cfg内的server.1的.1一致
echo "1">>myid
//查看文件内容是否添加成功
cat myid
192.168.168.67 zkeeper01 zkeeper01
192.168.168.68 zkeeper02 zkeeper02
192.168.168.69 zkeeper03 zkeeper03
-将配置好的zookeeper文件分发
//分发给zkeeper02(加-r)
scp -r zookeeper 192.168.168.68:/usr/local/
//分发给zkeeper03
scp -r zookeeper 192.168.168.69:/usr/local/
-修改zookeeper02和zookeeper03里的myid文件
修改zookeeper02的myid内容为2,zookeeper03的myid内容为3,查看如下:
-查看三台虚拟机的/etc/hosts文件(确认无误)
-启动三台虚拟机
[root@zkeeper01 zookeeper]# bin/zkServer.sh start
[root@zkeeper01 zookeeper]# bin/zkServer.sh status
下面操作只为更清晰的观察结果
//直接jps查看端口号也可具体显示出zookeeper在运行
jps
//安装net-tools软件包
yum -y install net-tools
//输入ifconfig,查看对应的虚拟机的ip地址及状态
ifconfig
熟悉的报错语句: ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Error contacting service. It is probably not running.
检查以下几点:
⭐ - jdk未安装,无Java运行环境
⭐ - 防火墙未关闭
⭐ - 三台虚拟机的端口号一样,导致无法启动
⭐ - 三台虚拟机的/etc/hosts
文件修改错误
⭐ - 三台虚拟机的myid
文件内容与zoo.cfg
文件里的server.x不对应
⭐ - 非常重要一点,仔细操作,一点失误,就可能启动不了
其他问题请直接私信我
补充常用知识:
常用命令
./zkServer.sh start
./zkServer.sh status
./zkServer.sh stop
./zkServer.sh restart
Zookeeper客户端常用命令
./zkCli.sh -server ip:port(链接外部服务端)
/./zkCli.sh(连接本机服务端)
quit
help
ls 目录 (eg:ls ./)
create /节点path value (eg:create /zk01 100)
get /节点path
set /节点path value
delete /节点path
deleteall /节点path