我实在本地搭建的虚拟机,zookeeper也是在虚拟机上搭建的,现在记录一下搭建的过程:
1、确定安装路径
cd /usr/local/bigdata/zookeeper/
2、下载安装包
wget https://mirrors.shu.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
3、解压安装包
tar xvzf zookeeper-3.4.13.tar.gz
4、创建第一个zk节点配置文件
cd /usr/local/bigdata/zookeeper/zookeeper-3.4.13/conf
cp zoo_sample.cfg zoo1.cfg
ESC +:+ wq保存退出。
我们可以看到,第一个zk节点已经创建成功了。
5、创建第二个zk节点配置文件
cp zoo1.cfg zoo2.cfg
将zoo1.cfg中的内容复制一份到zoo2.cfg文件中,并修改里面的相关信息,修改之后如下:
6、创建第三个zk节点配置文件
cp zoo2.cfg zoo3.cfg
我们现在搭建的是伪分布式,如果想将每个zk节点都搭建在不同的服务器上改一下上图被圈中部分的IP地址。
6、在每个zk数据节点创建myid
cd /usr/local/bigdata/zookeeper
mkdir server1
cd server1
mkdir data
mkdir logs
cd data
echo 1 > myid
2节点和3节点如上。
7、启动Zookeeper
cd /usr/local/bigdata/zookeeper/zookeeper-3.4.13/bin
zkServer.sh start /usr/local/bigdata/zookeeper/zookeeper-3.4.13/conf/zoo1.cfg
此时可能会出现:bash:zkServer.sh:command not found的情况,此时我们需要在/etc/profile中配置:
并source /etc/profile生效。再次执行上面的命令
我们查看一下该节点的状态:zkServer.sh status /usr/local/bigdata/zookeeper/zookeeper-3.4.13/conf/zoo1.cfg
发现我们刚才启动的节点并没有成功,我们看一下zookeeper.out:
我们可以看到上面的报错信息,我们启动的是zoo1.cfg文件,3882和3883节点是节点1与其他两个节点进行选举和交互的端口,connection refused说明节点没法访问3882和3883节点,首先怀疑是防火墙的问题。于是我把防火墙关了systemctl stop firewalld(我这是本地搭建的虚拟机,实际生产环境肯定是不能随便管防火墙的),重复上述步骤发现还是不行。
我们连续执行:
zkServer.sh start zoo1.cfg
zkServer.sh start zoo2.cfg
zkServer.sh start zoo3.cfg
三个节点全部启动之后,再查看每个节点的状态:
已经正常启动成功了,之前是因为另外两个节点没有启动,节点1访问不到另外两个节点,所以才会发生connection refused。
至此,我们的zookeeper伪集群搭建完毕。