写在前面,从网上东拼西凑+踩坑记录,写的也许有错,麻烦提醒一下哈

可能是最好搭建的集群之一

Zookeeper最好搭建奇数台。如果集群内可用的机器>50%,对外就是可用的。

这里我搭3台,master,worker1,worker2;

1:Zookeeper的下载:

https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz

用3.6.1的版本。

2:先在master上操作,解压

zookeeper k8s 容器配置说明_hadoop

3:修改配置文件

先给zookeeper文件夹创建一个软链接:

ln -s apache-zookeeper-3.5.8-bin zookeeper

在解压后的文件中找到conf文件夹,将zoo_sample.cfg 重命名为zoo.cfg,

zookeeper k8s 容器配置说明_服务器_02

tickTime

心跳基本时间单位,毫秒级,ZK基本上所有的时间都是这个时间的整数倍。

initLimit

tickTime的个数,表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或者说leader的数据灰常多时,同步时间相应可能会增加,那么这个值也需要相应增加。当然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)

syncLimit

tickTime的个数,这时间容易和上面的时间混淆,它也表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。

dataDir

内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。

clientPort

配置ZK监听客户端连接的端口

server.serverid=host:tickpot:electionport

server:固定写法 serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复) host:主机名
tickpot:心跳通信端口 electionport:选举端口

4:分发zookeeper包

回到上级目录,终端输入:

scp -r zookeeper/ hadoop@worker1:$PWD
scp -r zookeeper/ hadoop@worker1:$PWD

5:配置myid

分发好了之后,在每台服务器上新建刚刚配置好的dataDir=/home/hadoop/data/zookeeper文件夹。

新建完成后,再新增一个文件myid,里面的内容对应刚刚配置的server.1=192.168.188.101:2888:3888里server.*。比如我在192.168.188.101服务器上,也就是master,在dataDir路径下新增了一个文件叫做myid:

zookeeper k8s 容器配置说明_zookeeper_03


像这样,在每台服务器上都配置好。

6:配置zookeeper环境变量

在三台机器上,

vim ~/.bashrc

增加以下内容

zookeeper k8s 容器配置说明_centos_04

然后 source ~/.bashrc 使修改生效。

7:启动zookeeper集群

在三台机器上,

zkServer.sh start 启动
zkServer.sh status 状态
zkServer.sh stop 停止

先启动一台试试:

zookeeper k8s 容器配置说明_服务器_05


只有一台,直接报错了。再启动一台:

zookeeper k8s 容器配置说明_zookeeper_06

你这个worker怎么是leader啊(恼

启动完三台,回去看状态:

zookeeper k8s 容器配置说明_linux_07


zookeeper k8s 容器配置说明_服务器_08


我master成follower了,成何体统!

全文完。