Zookeeper的使用场景和集群配置
- Zookeeper的介绍
- ZK在分布式系统的应用
- Zookeeper搭建
- 集群角色介绍
- ZK的常用命令
一、Zookeeper的介绍
官方:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
二、ZK在分布式系统的应用
- 分布式配置中心
- 分布式job
- 服务注册与发现
- 存储数据
三、Zookeeper搭建
1)单机模式
- 官网下载:zookeeper官网
- 解压tar zxvf zookeeper-3.4.11.tar.gz
- 进入conf目录下:cp zoo_sample.cfg zoo.cfg
- 启动:进入bin目录下:sh zkServer.sh start
- 验证:在bin目录下:sh zkServer.sh status 或者使用jps -vm查看
- 连接:在bin目录下:sh zkCli.sh
2)集群模式(机器有限,使用伪分布式)
1、描述
伪分布式集群就是在一台机器部署多个zk应用,部署之前服务器需要有jdk环境。使用 java -version可以显示相关java信息才可以进行zookeeper搭建。
2、步骤
官网下载:zookeeper官网
解压tar zxvf zookeeper-3.4.11.tar.gz
进入conf目录下:
cp zoo-sample.cfg zoo1.cfg
cp zoo-sample.cfg zoo2.cfg
cp zoo-sample.cfg zoo3.cfg
分别对zoo1.cfg、zoo2.cfg、zoo3.cfg文件进行编辑:
#不同的地方,下面分别为d_1、d_2、d_3
dataDir=/apps/servers/data/d_1
#同上
dataLogDir=/apps/servers/logs/logs_1
#不同zoo.cfg修改自己的属性和端口号,为分布式端口号需要不一样
#分别是2181、2182、2183
clientPort=2181
#每个配置文件都需要配置如下三条,互相告知集群里有谁
#第一个端口号用于集群通讯,第二个端口号用于集群选举
server.1=192.168.31.132:2187:2887
server.2=192.168.31.132:2188:2888
server.3=192.168.31.132:2189:2889
分别创建data目录和日志目录:
mkdir /apps/servers/data/d_1
mkdir /apps/servers/data/d_2
mkdir /apps/servers/data/d_3 mkdir /apps/servers/logs/logs_1
mkdir /apps/servers/logs/logs_2
mkdir /apps/servers/logs/logs_3 echo "1" > /apps/servers/data/d_1/myid
echo "2" >/apps/servers/data/d_2/myid
echo "3" >/apps/servers/data/d_3/myid
进入bin目录下输入命令分别进行启动:
zkServer.sh start ../conf/zoo1.cfg
zkServer.sh start ../conf/zoo2.cfg
zkServer.sh start ../conf/zoo3.cfg
通过命令检测是否成功:注意防火墙和配置是否成功,这个是部署成功的关键
#进入bin目录下:
sh zkCli.sh -server 192.168.31.132:2181, 192.168.31.132:2182, 192.168.31.132:2183
结果如下:
四、集群角色介绍
Leader:
Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求。它会将每个状态更新请求进行排序和编号,保证整个集群内部消息处理的FIFO,写操作都走leader,zk里面leader只有一个。
Follower:
Follower的逻辑就比较简单。除了响应本服务器上的读请求外,follower还要处理leader的提议,并在leader提交该提议时在本地也进行提交。另外需要注意的是,leader和follower构成ZooKeeper集群的法定人数,也就是说,只有他们才参与新leader的选举、响应leader的提议。帮助leader处理读请求,投票权。
Observer:
如果ZooKeeper集群的读取负载很高,或者客户端多到跨机房,可以设置一些observer服务器,以提高读取的吞吐量。Observer和Follower比较相似,只有一些小区别:首先observer不属于法定人数,即不参加选举也不响应提议;其次是observer不需要将事务持久化到磁盘,一旦observer被重启,需要从leader重新同步整个名字空间。没有投票权利,可以处理读请求。
五、ZK的常用命令
Zookeeper的使用场景和集群配置的更多相关文章
- 基于zookeeper的activemq的主从集群配置
项目,要用到消息队列,这里采用activemq,相对使用简单点.这里重点是环境部署. 0. 服务器环境 RedHat710.90.7.210.90.7.1010.90.2.102 1. 下载安装zoo ...
- solrCloud+tomcat+zookeeper集群配置
solrcolud安装solrCloud+tomcat+zookeeper部署 转载请出自出处:http://eksliang.iteye.com/blog/2107002 http://eksli ...
- zookeeper集群配置与启动——实战
1,准备: A:三台linxu服务器: 10.112.29.177 10.112.29.172 10.112.29.174 命令 hostname 得到每台机器的 hostname vm-10-112 ...
- zookeeper集群配置与启动
摘要:Zookeeper是一个很好的集群管理工具,被大量用于分布式计算.如Hadoop以及Storm系统中.这里简单记录下Zookeeper集群环境的搭建过程.本文以Ubuntu 12.04 LTS作 ...
- 使用 ZooKeeper 同步集群配置
用 ZooKeeper 同步集群配置,当需要修改所有节点配置时,将配置更新到 ZooKeeper 的一个节点,引起这个节点数据发生变化, 其他所有需要同步配置的节点上的本地 Watcher 会立即发现 ...
- zookeeper[5] zookeeper集群配置及伪集群配置
参考:http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html 集群配置: 1.配置文件conf/zoo.cfg,除了单机模式的配置之外, ...
- zookeeper的安装及集群配置
1.解压 2.修改配置文件 cp zoo_sample.cfg zoo.cfg vim zoo.cfg dataDir=/usr/local/zookeeperData 其余采用默认 参数说明: ti ...
- HyperLedger Fabric基于zookeeper和kafka集群配置解析
简述 在搭建HyperLedger Fabric环境的过程中,我们会用到一个configtx.yaml文件(可参考Hyperledger Fabric 1.0 从零开始(八)--Fabric多节点集群 ...
- zookeeper集群配置详细教程
第一步:环境准备 环境 版本 说明 JDK 1.8 zookeeper运行所需 centos 7 操作系统 需要配置好JDK的环境变量 zookeeper-3.4.9.tar.gz 3.4.9 z ...
随机推荐
- linux下U盘变成只读文件系统的修复
问题描述: U盘插入linux下后变成了只读文件系统,不能再往u盘里拷贝文件. 总结:产生这个问题的原因可能是u盘文件系统损坏,操作系统为了防止它损坏系统,将它设置成了只读 修复方法: 在window ...
- servletHomeWork
2. http全称是什么? 超文本传输协议(HTTP, HyperText Transfer Protocol)是互联网上应用为最广泛的一种网络协议. 3.http协议是无状态的协议是什么意思?请说明 ...
- node安装依赖
node 版本:v6.11.2 npm 版本:3.10.10 开发(在UI目录下) # 安装依赖 npm install ## 若上述不行则采取下面命令 npm install --regist ...
- mysql按表字段内容长度排序
今天遇到个需求如下: 查询一下新的业务是否正常入库,遇到的问题是新旧业务用的是同一个字段标识,唯一不同的是字段里内容的长度不同 查询方式如下,mysql按表字段内容长度排序 SELECT * FROM ...
- LGOJ3804 【模板】后缀自动机
题目链接: link 题目大意 给定一个只包含小写字母的字符串\(S\), 请你求出 \(S\) 的所有出现次数不为 \(1\) 的子串的出现次数乘上该子串长度的最大值. Solution 预处理出每 ...
- Kafka(五) —— Kafka源码本地调试
搭建环境 安装scala 安装gradle 在kafka源码的根目录执行命令 gradle wrapper gradle idea 打开IDEA,File -> Open -> kafka ...
- Excel-DNA项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【C#版】
Excel-DNA项目中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在Class1.cs这个默认文件中. 大家可以在Visual Studi ...
- xshell+xftp将项目部署到远程服务器上
Xshell 简介: Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议. Xshell 通过互联网到远程主机的 ...
- file_get_contents为何无法采集某些压缩过的网站
有些网站直接用file_get_contents就能采集, 但是有些不行. 于是可以在网址前加入 'compress.zlib://‘ $url = 'compress.zlib://' . 'htt ...
- zabbix 使用邮件发送告警信息
配置系统mail命令,使其可以发送外网邮件 mail 命令配置 修改zabbix_server配置文件,使其可以执行告警脚本 [root@rexen etc]# vim /usr/local/zabb ...