任务:Zookeeper完全分布式模式配置
一、任务描述
本实验任务主要完成基于ubuntu环境的搭建Zookeeper完全分布式模式配置工作。通过完成本实验任务,要求学生熟练掌握Zookeeper完全分布式模式配置的方法,为后续实验的开展奠定zookeeper平台基础,也为从事大数据平台运维工程师、大数据技术支持工程师等岗位工作奠定夯实的技能基础。
二、任务目标
1、掌握Zookeeper完全分布式模式的环境搭建
三、任务环境
Ubuntu(三台节点:mater:192.168.0.3,slave1:192.168.0.2,slave2:192.168.0.4)、Zookeeper3.4.5
四、任务分析
Apache Zookeeper 由 Apache Hadoop 的 Zookeeper 子项目发展而来,现已经成为 Apache 的顶级项目,它是一个开放源码的分布式应用程序协调服务,是Google Chubby的一个开源实现。它是一个为分布式应用提供一致性服务的组件,提供的功能包括:配置管理,名字服务,提供分布式同步、队列管理、集群管理等。
Zookpeeper的基本架构:
作为ZooKeeper架构的一部分的每个组件在下表中进行了说明:
我们的任务是:
1) 学会Zookeeper完全分布式集群的配置。
2) 学会Zookeeper基本的服务端操作命令。
五、 任务实施
步骤1、完全分布式集群的配置
在主节点上右击桌面上选择【Open in Terminal】打开终端。
在弹出的终端中输入【cd /simple/soft】进入软件包的所在文件夹中,并通过【ls】查看文件夹下所有软件。如图1所示。
图1 查看软件包
使用命令【tar -zxvf zookeeper-3.4.6.tar.gz -C /simple】解压zookeeper到simple目录下。如图2所示。
图2 解压Zookeeper软件包
使用【cd /simple】进入软件的所在文件夹中,使用命令【mv zookeeper-3.4.6 zookeeper】重命名为zookeeper。如图3所示。
图3 重命名zookeeper
进入到zookeeper/conf目录下,使用命令【cp zoo_sample.cfg zoo.cfg】复制zoo_sample.cfg文件并改名zoo.cfg。如图4所示。
图4 生成zoo.cfg文件
使用命令【vi zoo.cfg】进行zoo.cfg配置文件修改,设置集群配置参数,添加集群配置。如图5所示。
图5 配置zoo.cfg文件
♥ 温馨提示 |
zoo.cfg配置文件参数详解: tickTime为心跳会话超时世间,毫秒单位,如果超过该时间心跳监测没有回应(ack),判定该节点已死。 initLimit zookeeper follow和leader进行数据同步容许的最大时长,更具业务需要可调整该参数。 syncLimit 容许zookeeper follow 数据落后leader的最大数据。 dataDir zookeeper存储内存数据快照的本地磁盘位置。zookeeper在运行期间会将数据存储在内存中,保证了访问的时效性。 clientPort 监听客户端连接的端口;也即开放给客户连接的端口。 dataLogDir 配置zookeeper存储事务日志的地方,不配置默认使用dataDir配置。目的是为了将事务日志和内存数据镜像分开存储。 server.x 用户配置zookeeper集群服务器主机列表配置。配置规则server.x=[hostname]:nnnnn[:nnnnn], etc 第一个参数为机器主机名,后面两个为机器端口参数,例如2888用于和leader的通讯,3888为用于集群leader的选举。 注意x为集群中该机器的编号(集群中唯一),该配置需要和dataDir目录下文件myid中的内容一致,为数字。 |
在zookeeper/目录下新建zk_data文件夹,并在此zk_data/目录下新建myid文件。如图6所示。
图6 创建myid文件
♥ 知识链接 |
myid文件作用 集群启动的时候会去zoo.cfg配置文件的dataDir目录下查找myid,检查编号是否一致。 |
将zookeeper分发到其他两个节点的/simple目录下。如图7-8所示。
图7 分发Zookeeper到slave1
图8 分发Zookeeper到slave2
♥ 知识链接 |
Linux scp命令用于Linux之间复制文件和目录。 scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。 复制目录命令格式: scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folder remote_ip:remote_folder 第1个指定了用户名,命令执行后需要再输入密码; 第2个没有指定用户名,命令执行后需要输入用户名和密码; 应用实例: scp -r /home/space/music/ root@slave1:/home/root/others/ scp -r /home/space/music/ slave2:/home/root/others/ 上面命令将本地 music 目录复制到远程 others 目录下。 |
在主节点zookeeper文件夹zk_data/下,对myid文件进行编译【echo 1 >> myid】。如图9所示。
图9 配置主节点myid文件
相同的步骤在第二个节点,为myid文件赋值2。如图10所示。
图10 配置slave1节点myid文件
相同的步骤在第三个节点,为myid文件赋值3。如图11所示。
图11 配置myid文件3
步骤2、启动Zookeeper集群
分别进入三个节点到zookeeper bin文件下,通过命令【./zkServer.sh start】来启动服务。如图12-14所示。
图12 启动Zookeeper集群
图13 启动Zookeeper集群
图14 启动Zookeeper集群
在三台节点上利用【./zkServer.sh status】查看Zookeeper节点状态。如图15-17所示。
图15 master查看Zookeeper节点状态
图16 slave1查看Zookeeper节点状态
图17 slave2查看Zookeeper节点状态
♥ 温馨提示 |
Zookeeper工作流程-Leader 1 .恢复数据; 2 .维持与Learner的心跳,接收Learner请求并判断Learner的请求消息类型; 3 .Learner的消息类型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根据不同的消息类型,进行不同的处理。 Zookeeper工作流程-Follower 1.向Leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息); 2.接收Leader消息并进行处理; 3.接收Client的请求,如果为写请求,发送给Leader进行投票; 4.返回Client结果。 |