判断zk是否挂掉_Zookeeper入门学习第一天,zk集群简单介绍
一、Zookeeper集群搭建及基本使用
1.centOs虚拟机三台 ,集群最好是奇数台容灾性好一些,由于允许不过半节点宕机,例五台可以挂掉两台,四台可以挂掉一台。简单说就是过半可用。
2.Zookeeper官方 http://zookeeper.apache.org/
二、zk安装
1.Wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
2. tar -xvzf zookeeper-3.4.5.tar.gz
目录为/opt/bigdata/zookeeper-3.4.5
3.在/etc/profile 里配置:
JAVA_HOME ZOOKEEPER_HOME PATH
4.创建data目录和myid
创建data目录:$ZOOKEEPER/data,即/opt/bigdata/zookeeper-3.4.5/data
创建myid: /opt/bigdata/zookeeper-3.4.5/data/myid
myid存server的id,可以是1,2,3…,必须唯一
三、zk配置
创建文件 $ZOOKEEPER/conf/zoo.cfg
修改zoo.cfg,增加如下:
dataDir=/opt/bigdata/zookeeper-3.4.5/data
clientPort=2181
initLimit=10
syncLimit=5
tickTime=2000
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
其中server.myid代表组成整个服务的机器,当服务启动时,会在数据目录下查找这个文件myid,这个文件中存有服务器的号码。
四、启动
zkServer.sh start 启动 三台顺序分别启动后第二台为leader其他为follower代表成功(选举机制)
zkServer.sh status 查看状态
zkServer.sh status 停止
Master/slave 架构
Leader选举,Leader负责整个集群Client消息接收,分发给每个Flower。
Client操作:
在任一台机器上
zkCli.sh -server master:2181
五、zk的优点
简单易用,能够很好的解决分布式框架在运行中出现的协调问题。例如master主备切换、节点的上下线感知。
六、zk的HA方案
话不多说,上图
1.在我们配置HA高可用之后,HA会给我们产生zkfc(基于zookeeper实现的failover controller)进程,启动后,两个zkfc都会往zk集群中注册(此时还不知道哪个namenode为active)
2.我们根据zkfc的注册顺序,即谁先注册成功谁成为active节点。
3.这时active的zkfc会在zk集群中生成一个临时节点,而standby的zkfc监听着这个临时节点
假如因为网络故障zk集群和active namenode连接不上则监听器会将监听到的事件通知给standby的zkfc,standby的zkfc触发监听的回调
1)首先判断active的namenode是否真的和zk集群断开了连接
2)宕机的namenode则降级为standby namenode
3)监听到事件的standby namenode成为新的active namenode。
需要注意的是,当active namenode宕机的时候,standby namenode收到切换的请求时,不是立即切换的,首先会做两件事。
1.通过SSH远程指令,杀掉active namenode 的进程,但是如果不仅仅是namenode挂了,而是整个机器挂了,那发送的指令就不会有反应,也不会有反馈信息。
2.那么如果SSH没有响应,则帮用户调用一个用户所指定的脚本,脚本运行成功,则切换状态
七、监听器原理
1)首先要有一个 main()线程
2)在 main 线程中创建 Zookeeper 客户端,这时就会创建两个线程,一个负责网络连接
通信(connet),一个负责监听(listener)。
3)通过 connect 线程将注册的监听事件发送给 Zookeeper。
4)在 Zookeeper 的注册监听器列表中将注册的监听事件添加到列表中。
5)Zookeeper 监听到有数据或路径变化,就会将这个消息发送给 listener 线程。
6)listener 线程内部调用了 process()方法。
判断zk是否挂掉_Zookeeper入门学习第一天,zk集群简单介绍相关推荐
- Clickhouse入门学习、单机、集群安装部署
参考:https://blog.csdn.net/qq_37933018/article/details/108019566 Clickhouse官网:https://clickhouse.tech/ ...
- Python入门学习(第一天)
入门学习第一步: 1.安装python https://www.python.org/downloads/ 2.下载编辑器 推荐PyCharm Edu 3.打开编辑器新建一个python文件 4. 在 ...
- python零基础入门教程视频下载-Python零基础入门学习视频教程全42集,资源教程下载...
课程名称 Python零基础入门学习视频教程全42集,资源教程下载 课程目录 001我和Python的第一次亲密接触 002用Python设计第一个游戏 003小插曲之变量和字符串 004改进我们的小 ...
- python基础教程视频教程百度云-Python零基础入门学习视频教程全42集百度云网盘下载...
课程简介 Python零基础入门学习视频教程全42集百度云网盘下载 课程目录 042魔法方法:算术运算 041魔法方法:构造和析构 040类和对象:一些相关的BIF 039类和对象拾遗 038类和对象 ...
- python基础教程百度云-Python零基础入门学习视频教程全42集百度云网盘下载
课程简介 Python零基础入门学习视频教程全42集百度云网盘下载 课程目录 042魔法方法:算术运算 041魔法方法:构造和析构 040类和对象:一些相关的BIF 039类和对象拾遗 038类和对象 ...
- symfony入门学习资料之九:YAML格式介绍
symfony入门学习资料之九:YAML格式介绍 由于EDUSOHO的项目原因,中断了对symfony框架的继续学习,今天回顾了前面的总结,总结了八节.从建立简单的页面.控制器.路由.模板等,甚至包括 ...
- Hadoop学习笔记—13.分布式集群中节点的动态添加与下架
Hadoop学习笔记-13.分布式集群中节点的动态添加与下架 开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如 ...
- 尚硅谷大数据技术Zookeeper教程-笔记01【Zookeeper(入门、本地安装、集群操作)】
视频地址:[尚硅谷]大数据技术之Zookeeper 3.5.7版本教程_哔哩哔哩_bilibili 尚硅谷大数据技术Zookeeper教程-笔记01[Zookeeper(入门.本地安装.集群操作)] ...
- Redis 学习笔记八:集群模式
Redis 学习笔记八:集群模式 作者:Grey 原文地址: 博客园:Redis 学习笔记八:集群模式 CSDN:Redis 学习笔记八:集群模式 前面提到的Redis 学习笔记七:主从复制和哨兵只能 ...
最新文章
- WPF中如何将ListViewItem双击事件绑定到Command
- python入门要多久-初学者如何快速上手python入门要多久
- DPM(Deformable Parts Models)-----目标检测算法理解
- 高性能网站建设的最佳实践(二)
- OAuth2认证有一定的了解
- 科学证明夜猫子都死得早?稳住,事情不是这样的
- 同义反复,相似的表达
- Python 标准库 —— os 模块
- C++ 中 Windows 编程概述
- 14_按类别分页展示商品
- Win10 安装 JDK1.8 及配置环境变量
- 支付宝VS微信,谁在抄袭谁?
- python 隐藏excel的列和行
- matlab 变速不变调,使用GoldWave 轻松实现变速不变调
- 局域网流量监控_常见的企业电脑监控网络管理软件哪一款好呢?
- 【Google Chrome】打开本地html文件报错问题
- ADP(自适应动态规划)-值迭代
- 数据结构形象动态演示的网站
- 【演武厅】表达式求值实例
- Usb 声卡 linux,树莓派:使用usb声卡播放音乐
热门文章
- IDC:今年全球认知和人工智能系统支出将突破125亿美元
- BaaS API 设计规范
- sublime不认识python_Python3小白入门 Sublime Text3
- oracle scn与数据恢复,Oracle数据恢复:数据文件头的SCN与时间校验
- 用bbp公式计算pi_家用配电箱里设计几个回路合适?用这个公式,计算起来很方便...
- 计算机系统-电路设计01-非门电路
- Bootstrap-datetimepicker控件使用
- IntelliJ IDEA 2018 设置代码提示对大小写不敏感
- 微信小程序项目笔记以及openId体验版获取问题
- 网络编程之 keepalive(zz)