zookeeper可以理解为一个分布式一致性协调器。只要一半以上的节点还运行,zookeeper就能提供服务,当leader出现问题时,将一个follower切换成leader
在进行ZooKeeper的安装之前的一些准备工作:
(1)四台虚拟机,master,node1,node2,node3;
(2)每台虚拟机设置固定IP;
(3)每台虚拟机必须要有之前安装好的软件,比如Hadoop必不可少。
接下来利用xftp将文件压缩包传输到node1节点的opt目录下:
我将我的zookeeper文件传送到百度网盘上,可供自行下载:
链接:https://pan.baidu.com/s/1TZaUhkKhMSdkqwGPKeoRng
提取码:mman
然后查看文件是否传输成功:
接下来的操作,如无特别说明,全是在node1节点上进行操作:
先进行解压操作,并查看:
tar -zxf /opt/zookeeper-3.4.6.tar.gz -C /usr/local/
cd /usr/local
ls
下面将一个文件进行拷贝并改名:
cd zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo.cfg
ls
然后vi zoo.cfg进入修改文件,删除文件中原本所有的东西并添加下面的代码:
dataDir=/usr/lib/zookeeper
dataLogDir=/var/log/zookeeper
clientPort=2181
tickTime=2000
initLimit=5
syncLimit=2
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
可以使用cat命令查看文件内容:
cat zoo.cfg
然后再node1,node2,node3上面分别创建文件夹,并创建myid进行编辑:
mkdir /usr/lib/zookeeper
mkdir /var/log/zookeeper
vi /usr/lib/zookeeper/myid
node1节点的文件中写1,node2中写2,node3中写3,如图:
将zookeeper-3.4.6的名字换成zookeeper,并将node1上的文件复制到node2和node3中:
mv /usr/local/zookeeper-3.4.6 /usr/local/zookeeper
cd /usr/local/
ls
scp -r /usr/local/zookeeper node2:/usr/local/
scp -r /usr/local/zookeeper node3:/usr/local/
接下来进行环境变量的修改,在文章末尾添加下面的内容,node123都要配置:
export ZK_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZK_HOME/bin
配置结束后,使用source更新配置:
vi /etc/profile
source /etc/profile
现在就可以启动zookeeper集群,node123上都要实行启动,全部启动后再使用第二行代码查看启动状态,确定是否启动成功:
zkServer.sh start
zkServer.sh status
如果启动的时候出现这个问题,需要检查一下自己的zoo.cfg文件是否配置有误,但是如果是到最后一部出错了,那么node123都要进行修改:
我的修改如图:
然后停止node123上面的zookeeper进程,进行统一配置,图示表示已经关闭完成:
zkServer.sh stop
jps
接下来的操作除特殊说明外,都是在master节点上进行:
使用xftp将zookeeper压缩包传到master节点的opt目录下:
tar -zxf /opt/zookeeper-3.4.6.tar.gz -C /usr/local/
给其中的一些文件改名,方便操作:
cd /usr/local/zookeeper-3.4.6/conf
mv zoo_sample.cfg zoo.cfg
cd /usr/local/
mv zookeeper-3.4.6 zookeeper
然后在node1中将zoo.cfg的内容拷贝到master主机上:
scp -r zoo.cfg master:/usr/local/zookeeper/conf/
然后查看master主机中文件的内容,发现发生了变化:
然后在master中创建文件夹:
mkdir /usr/lib/zookeeper
mkdir /var/log/zookeeper
然后在node1节点中将myid拷贝到master中,要先切换到myid所在目录才可以:
cd /usr/lib/zookeeper
ls
scp -r myid master:/usr/lib/zookeeper
回到master节点,对文件进行修改和查看,文件内容改成4,如图:
vi /usr/lib/zookeeper/myid
cat /usr/lib/zookeeper/myid
cd /usr/local/zookeeper/conf
ls
vi zoo.cfg
添加的内容为:
server.4=master:2888:3888
在node123中分别都加入刚才的代码:
然后继续在master中配置profile文件:
export ZK_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZK_HOME/bin
更新一下配置内容:
vi /etc/profile
source /etc/profile
在master上进行拷贝:
scp -r /usr/local/zookeeper node1:/usr/local/
scp -r /usr/local/zookeeper node2:/usr/local/
scp -r /usr/local/zookeeper node3:/usr/local/
然后关闭node2节点:
在master上进行zookeeper的启动,要先进入bin目录:
cd /usr/local/zookeeper/bin/
zkServer.sh start
然后分别查看master,node1,node3的集群启动状态,这里查看状态要等待一段时间,否则他会报错说还没有启动:
可以看出,node3是leader。
如果node2长期不用,可以考虑将zoo.cfg中的2用#注释掉。