博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(集群版)
阅读量:5330 次
发布时间:2019-06-14

本文共 3386 字,大约阅读时间需要 11 分钟。

 

上篇文章讲了在 idea 里以单机的方式启动zookeeper,这篇介绍一下以集群的方式启动。

集群方式启动,才会真正的用到 Zookeeper 的快速选举算法,单机版不涉及选举。这里我准备启动三个zkServer实例。

修改配置文件

首先要准备三个配置文件,具体配置及配置项解释如下:

# 发送心跳的间隔时间,单位:毫秒

tickTime=2000

# 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,

# 而是 Zookeeper 服务器集群中连接到 Leader 的Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
# 当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。
# 总的时间长度就是 10*2000=20 秒
initLimit=10

# 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,

# 总的时间长度就是 5*2000=10 秒
syncLimit=5

# zookeeper用于存储快照文件(zookeeper 节点数据)的目录,无默认值
dataDir=D:/zookeeper/data1

# 用于配置服务器存储事务日志文件的目录,有默认值dataDir,但是建议将两个目录分别配置,

# 防止磁盘的并发读写,影响服务器性能。可将其配置在一个单独的磁盘上。
dataLogDir=D:/zookeeper/log1

# 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求

clientPort=2181

# server.A=B:C:D 其 中

# A 是一个数字,表示这个是第几号服务器,叫做myid或sid;
# B 是这个服务器的 ip地址;
# C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
# D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,
# 而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,
# 所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
server.1=localhost:2184:3181
server.2=localhost:2185:3182
server.3=localhost:2186:3183

我们只需再复制两份配置文件,分别明白为 zk1.cfg、zk2.cfg 和 zk3.cfg,并把 clientPort 配置项设置为2181、2182和 2183 即可。

配置多实例

配置文件改好之后,我们只需要创建三个 Application 启动项即可,把各自的 Program argument 改为对应的配置文件地址即可。

 

 依次启动1、2、3实例即可。

错误处理

错误一

启动会报错,首先报非法参数异常,原因是找不到文件myid

解决办法:创建data1目录,并在其下创建文件myid,另外两台类似,创建各自的data和log目录。

Invalid config, exiting abnormallyDisconnected from the target VM, address: '127.0.0.1:58070', transport: 'socket'2019-08-15 10:37:41,957 [myid:] - ERROR [main:QuorumPeerMain@88] - Invalid config, exiting abnormallyorg.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing D:\soft\zookeeper-3.4.13\conf\zk1.cfgat org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:156)at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:104)at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:81)Caused by: java.lang.IllegalArgumentException: D:\zookeeper\data1\myid file is missingat org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:408)at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:152)... 2 more
 
 data1、data2、data3分别创建myid对应文件内容1、2、3
 
错误二
解决完错误一后,重新启动,又报错,同样是非法参数,serverid不是数字。
解决办法:在刚才创建的myid文件里,增加serverid,只增加一个数字即可,切记要和配置文件里配置的server.X的X一一对应。
Invalid config, exiting abnormallyorg.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing D:\soft\zookeeper-3.4.13\conf\zk1.cfgat org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:156)at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:104)at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:81)Caused by: java.lang.IllegalArgumentException: serverid null is not a numberat org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:422)at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:152)Disconnected from the target VM, address: '127.0.0.1:58318', transport: 'socket'... 2 more

启动成功

先启动1和2,可以看到已经选举出 leader了,就是2。因为集群中已经选举出 leader,3再启动就被告知2已经是 leader。

实例1

 

 实例2

 实例3

 

 在 IDE 里以集群的方式启动zookeeper 到这里结束了,下一篇开始分析选举算法源码。

转载于:https://www.cnblogs.com/ibigboy/p/11353885.html

你可能感兴趣的文章
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>
移动端 响应式、自适应、适配 实现方法分析(和其他基础知识拓展)
查看>>
selenium-窗口切换
查看>>
使用vue的v-model自定义 checkbox组件
查看>>
[工具] Sublime Text 使用指南
查看>>
Hangfire在ASP.NET CORE中的简单实现方法
查看>>
Algorithm——何为算法?
查看>>
Web服务器的原理
查看>>
小强升职计读书笔记
查看>>
常用的107条Javascript
查看>>
#10015 灯泡(无向图连通性+二分)
查看>>
elasticsearch 集群
查看>>
忘记root密码,怎么办
查看>>
linux设备驱动归纳总结(三):1.字符型设备之设备申请【转】
查看>>