随笔 - 45  文章 - 0 评论 - 7 阅读 - 20万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

  众所周知,Zookeeper有三种不同的运行环境,包括:单机环境、集群环境和集群伪分布式环境

  在此介绍的是集群环境的安装配置

一、下载:

http://apache.fayea.com/zookeeper/current/

二、解压:

tar zxvf zookeeper-3.4.7.tar.gz

个人喜欢将解压后文件名更改为 zookeeper

三、修改配置:

在Zookeeper集群环境下只要一半以上的机器正常启动了,那么Zookeeper服务将是可用的。

因此,集群上部署Zookeeper最好使用奇数台机器,这样如果有5台机器,只要3台正常工作则服务将正常使用。

进入zookeeper/conf:

$:cp zoo_sample.cfg zoo.cfg

$:vim zoo.cfg

可参照下图:

1

 

上图的配置中h1、h2、h3分别为主机名,具体的对应的主机可参见Hadoop的安装与配置的博文。

在上面的配置文件中"server.id=host:port:port"中的第一个port是从机器(follower)连接到主机器(leader)的端口号,第二个port是进行leadership选举的端口号。

接下来在dataDir所指定的目录下创建一个文件名为myid的文件,文件中的内容只有一行,为本主机对应的id值,也就是上图中server.id中的id。

$:echo 1 > /root/software/zookeeper/data/myid

h1机器的内容为1,h2机器的内容为2,h3机器的内容为3,若有更多依此类推。

注:

dataDir:数据目录

dataLogDir:日志目录

clientPort:客户端连接端口

tickTime:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

initLimit:Zookeeper的Leader 接受客户端(Follower)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度

                  后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒

syncLimit:表示 Leader 与 Follower 之间发送消息时请求和应答时间长度,最长不能超过多少个tickTime 的时间长度,总的时间长度就是 2*2000=4 秒。

四、启动与停止

启动:

bin/zkServer.sh start

停止:

bin/zkServer.sh stop

 2

如上图为正常启动。其中,QuorumPeerMain是zookeeper进程。

依次启动了所有机器上的Zookeeper之后可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower)

如下所示,是在ZooKeeper集群中的每个结点上查询的结果:

3

4

5

通过上面状态查询结果可见,h2是集群的Leader,其余的两个结点是Follower

posted on   一寸相思万千劫  阅读(925)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示