【图文详解】Zookeeper集群搭建(CentOs6.3)
Zookeeper简介:
Zookeeper是一个分布式协调服务,就是为用户的分布式应用程序提供协调服务的。
A、zookeeper是为别的分布式程序服务的
B、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)
C、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……
D、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:
- 管理(存储,读取)用户程序提交的数据;
- 并为用户程序提供数据节点监听服务;
Zookeeper集群机制
Zookeeper集群的角色: 1个leader 和 多个follower
只要集群中有半数以上节点存活,集群就能提供服务,因此集群中机器数量适合选择奇数台,避免leader选举时出现同票数的情况。
Zookeeper选举机制
- 服务器1启动,此时只有它一台服务器启动了,它发出去的报没有任何响应,所以它的选举状态一直是LOOKING状态
- 服务器2启动,它与最开始启动的服务器1进行通信,互相交换自己的选举结果,由于两者都没有历史数据,所以id值较大的服务器2胜出,但是由于没有达到超过半数以上的服务器都同意选举它(这个例子中的半数以上是3),所以服务器1,2还是继续保持LOOKING状态.
- 服务器3启动,根据前面的理论分析,服务器3成为服务器1,2,3中的老大,而与上面不同的是,此时有三台服务器选举了它,所以它成为了这次选举的leader.
- 服务器4启动,根据前面的分析,理论上服务器4应该是服务器1,2,3,4中最大的,但是由于前面已经有半数以上的服务器选举了服务器3,所以它只能接收当小弟的命了.
- 服务器5启动,同4一样,当小弟.
综上可知:
- 先后启动集群中3台机器,则机器2为leader
- 先后启动集群中7台机器,则机器4为leader
Zookeeper集群搭建
1、前期准备
3台虚拟机(Linux-----CentOs6.3)
mini1----192.168.25.13 mini2----192.168.25.14 mini3----192.168.25.15
三台虚拟机上分别都装好jdk
2、上传Zookeeper安装包到mini1上
3、解压安装包,并将解压后的目录改名为zk放到/usr/local/目录下
tar -zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 /usr/local/zk
4、进入zk目录下的conf目录中查看相关配置文件
cd /usr/local/zk/conf
5、将zoo_sample.cfg拷贝一份并重命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
6、 修改配置文件zoo.cfg(基本保持默认,修改图中两处配置即可)
vim zoo.cfg
tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳
initLimit:此配置表示,允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
syncLimit:此配置项表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
dataDir:数据存放的位置
dataLogdDir:日志信息存放的位置
server.a=b:c:d
a:集群中此台服务器的编号 B:此台服务器的ip C:Zookeeper服务器之间的通信端口 D:Leader选举的端口
7、在zk目录下创建data目录
mkdir /usr/local/zk/data
8、在data目录中创建myid文件,并写入此台服务器的编号(在zoo.cfg配置文件里填写过)
echo 1 > myid
9、配置环境变量
vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/zk
export PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH
10、将zk目录分别发送给mini2和mini3两台机器
scp -r /usr/local/zk/ 192.168.25.14:/usr/local/
scp -r /usr/local/zk/ 192.168.25.15:/usr/local/
11、将环境变量文件分别发送给mini2和mini3两台机器
scp /etc/profile 192.168.25.14:/etc/
scp /etc/profile 192.168.25.15:/etc/
12、到mini2机器的/usr/local/目录下可以看到刚传过来的zk目录
13、到mini2的zk目录下的data目录将myid文件内容改为mini2这台机器的编号(mini3做同样操作)
cd /usr/local/zk/data/
echo 2 > myid(mini3的编号为3)
14、分别启动三台机器上的Zookeeper,并查看状态(启动前重新加载环境变量)
source /etc/profile
zkServer.sh start
zkServer.sh status
自此Zookeeper集群搭建结束,我们可以看到mini3是集群中的leader,其他两台是follower,如果你的启动顺序是按顺序启动mini1,mini2,mini3则mini2会是集群中的leader
集群批量启动,关闭
批量启动Zookeeper集群
#!/bin/sh
for i in 192.168.25.13 192.168.25.14 192.168.25.15
do
ssh $i "source /etc/profile;zkServer.sh start"
done
批量停止Zookeeper
#!/bin/sh
for i in 192.168.25.13 192.168.25.14 192.168.25.15
do
ssh $i "source /etc/profile;zkServer.sh stop"
done
更多推荐:
- http://www.cnblogs.com/52mm/p/p7.html
- http://www.cnblogs.com/sunddenly/p/4018459.html
- https://www.cnblogs.com/ASPNET2008/p/6421571.html
【图文详解】Zookeeper集群搭建(CentOs6.3)的更多相关文章
- 【zookeeper】 zookeeper 集群搭建
集群搭建环境: 发行版:CentOS-6.6 64bit 内核:2.6.32-504.el6.x86_64 CPU:intel-i7 3.6G 内存:2G 集群搭建步骤: 1. 确保机器安装了jdk ...
- kafka学习(二)-zookeeper集群搭建
zookeeper概念 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名 服务等.Zookeeper是h ...
- Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建
Zookeeper是一种在分布式系统中被广泛用来作为:分布式状态管理.分布式协调管理.分布式配置管理.和分布式锁服务的集群.kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kaf ...
- 分布式架构中一致性解决方案——Zookeeper集群搭建
当我们的项目在不知不觉中做大了之后,各种问题就出来了,真jb头疼,比如性能,业务系统的并行计算的一致性协调问题,比如分布式架构的事务问题, 我们需要多台机器共同commit事务,经典的案例当然是银行转 ...
- 分布式协调服务Zookeeper集群搭建
分布式协调服务Zookeeper集群搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装jdk环境 1>.操作环境 [root@node101.yinzhengjie ...
- zookeeper集群搭建及Leader选举算法源码解析
第一章.zookeeper概述 一.zookeeper 简介 zookeeper 是一个开源的分布式应用程序协调服务器,是 Hadoop 的重要组件. zooKeeper 是一个分布式的,开放源码的分 ...
- Zookeeper(二) zookeeper集群搭建 与使用
一.zookeeper集群搭建 鉴于 zookeeper 本身的特点,服务器集群的节点数推荐设置为奇数台.我这里我规划为三台, 为别为 hadoop01,hadoop02,hadoop03 1. ...
- ZooKeeper集群搭建过程
ZooKeeper集群搭建过程 提纲 1.ZooKeeper简介 2.ZooKeeper的下载和安装 3.部署3个节点的ZK伪分布式集群 3.1.解压ZooKeeper安装包 3.2.为每个节点建立d ...
- zookeeper集群搭建及常用场景实现
本文完整源码地址 基于zookeeper的常用用法.分布式锁.分布式队列及leader选举实现 https://github.com/killianxu/zookeeper_example zooke ...
随机推荐
- python 可迭代对象,迭代器和生成器,lambda表达式
分页查找 #5.随意写一个20行以上的文件(divmod) # 运行程序,先将内容读到内存中,用列表存储. # l = [] # 提示:一共有多少页 # 接收用户输入页码,每页5条,仅输出当页的内容 ...
- zabbix 监控 tomcat
一, 脚本监控文件 #!/bin/bash # @Function # Find out the highest cpu consumed threads of java, and print the ...
- spark运行时出现Neither spark.yarn.jars nor spark.yarn.archive is set错误的解决办法(图文详解)
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- unity的assetbundle的自动命名,以我的命名lua为例
static string testDir = "Assets/LuaScripts/"; [MenuItem("测试/lua命名")] public stat ...
- Oracle关于All和Any
简单的说 All等价于N个And语句,Any等价于N个or语句.
- linux服务器git pull/push时避免频繁输入账号密码
1.先cd到根目录,执行git config --global credential.helper store命令 [root@iZ25mi9h7ayZ ~]# git config --global ...
- nginx禁止对写操作timeout时retry
1) nginx禁止对写操作timeout时retry 以前遇到的一个case,业务那边说一笔请求从nginx端发送给后端tomcat了2次(落在两个不同的tomcat节点上).后来发现是nginx发 ...
- 原生js与jquery的区别
1.选择器: js: $('.car_img_con img')[0]; var jsObj = document.getElementsByClassName('sel_index_block')[ ...
- c# 快速修改图片颜色
public static void ChangeColour(this Bitmap bmp, byte inColourR, byte inColourG, byte inColourB, byt ...
- NIOSocket Server Client
最近在看Netty框架,顺便写了一下NIO SocketChannel服务端和客户端 Server.java import java.io.IOException; import java.net.I ...