zookeeper 面试问题安装配置问题

随笔 - 43&
文章 - 1&评论 - 2&trackbacks - 0
1.什么是zookeeper
  ZooKeeper是一个的,开放源码的协调服务,是的Chubby一个的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,[1]&提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
2.zookeeper的原理
  ZooKeeper是以Fast Paxos算法为基础的,paxos算法存在的 问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader,只有leader才能提交propose,具体算法可见Fast Paxos。因此,要想弄懂ZooKeeper首先得对Fast Paxos有所了解。[3]
ZooKeeper的基本流程:
  1、选举Leader。
  2、同步数据。
  3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。
  4、Leader要具有最高的zxid。
  5、集群中大多数的机器得到响应并follow选出的Leader
3.zookeeper的特点
   在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据。如果在创建znode时Flag设置为 EPHEMERAL,那么当创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper 里,Zookeeper使用Watcher察觉事件信息。当客户端接收到事件信息,比如连接超时、节点数据改变、子节点改变,可以调用相应的行为来处理数 据。Zookeeper的Wiki页面展示了如何使用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交。
那么Zookeeper能作什么事情呢,简单的例子:假设我们有20个的(每 个负责总索引中的一部分的搜索任务)和一个总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集),一个备用的总服务器(负责当总服务器宕 机时替换总服务器),一个web的cgi(向总服务器发出搜索请求)。搜索引擎的服务器中的15个服务器提供搜索服务,5个服务器正在生成索引。这20个 搜索引擎的服务器经常要让正在提供搜索服务的服务器停止提供服务开始生成索引,或生成索引的服务器已经把索引生成完成可以搜索提供服务了。使用 Zookeeper可以保证总服务器自动感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,当总服务器宕机时自动启用备用的总服务器。
4.centos 5.8搭建环境
  所需软件:VM 虚拟机 &centos系统 &jdk 1.6或者以上 &zookeeper-3.4.6.tar.gz
  这里至少需要三台server,不然的话这里zookeeper安装的时候,测试会报至少需要三台server,相关可以查看zookeeper.out(测试环境下)
  首先下载jdk的rpm包,分别上传到三个虚拟机上并安装。
    1.先查看系统是否存在jdk的相关包。(有时候装的系统中会有一个openJDK)有的话就将其卸载掉。
    2.将jdk保存在/usr/local/java目录下
    3.安装jdk:rpm -ivh jdk-**-**.rpm
  这里不用配置java环境,因为rpm将其自动加到path中。
  安装zookeeper,将zookeeper上传到三个服务器,保存在/usr/local/zookeeper目录下,解压tar包
  tar -xzvf&zookeeper-3.4.6.tar.gz
  进入目录zookeeper-3.4.6中,将conf目录中的zoo_sample.cfg文件复制为zoo.cfg并利用vi命令进行修改
  tickTime=2000  initLimit=10  syncLimit=5  clientPort=2181  dataDir=/usr/local/zookeeper/zookeeper-3.4.6/data & &保存数据目录
  dataLogDir=/usr/local/zookeeper/zookeeper-3.4.6/log 保存日志目录
  server.1=ip: & ip为服务器的ip  server.2=ip: &&ip为服务器的ip  server.3=ip: &&ip为服务器的ip
  这里的data和log需要自己创建 mkdir命令创建
  在/usr/local/zookeeper/zookeeper-3.4.6/data目录下创建一个文件:myid
  分别在myid上按照配置文件的server.&id&中id的数值,在不同机器上的该文件中填写相应过的值
  ip& 的myid内容为1
  ip &的为2  ip &的为3
&  &ip为服务器的ip & 这里对应上面的server.1,server.2,server.3
  创建一个环境变量ZOOKEEPER并把该环境变量添加到系统路径:
  vim /etc/profile
  在export PATH语句前添加两行:
  ZOOKEEPER=/usr/local/zookeeper/zookeeper-3.4.6
  PATH=$PATH:$ZOOKEEPER/bin
  并执行 source /etc/profile
此时安装成功,进行测试:
  1.进入zookeeper的bin目录,执行sh zkServer.sh start进行启动zookeeper
  2.查看状态 & 进入bin目录,执行sh zkServer.sh status
  3.停止 & &进入bin目录,执行sh zkServer.sh stop
阅读(...) 评论()博客分类:
很多大型系统基本都需要一个无单点问题的分布式框架,zookeeper便满足这一需求。这次的博客,我们先进行一个最基本的安装、部署、连接。
1、首先下载zookeeper,解压,我这里选择最新的稳定版3.4.8,然后我们使用单机模拟集群,可以专门建立一个文件夹,用来放置你的zookeeper,比如:
/Users/zk_chs/something/hadoop/zookeeper-3.4.8-001
/Users/zk_chs/something/hadoop/zookeeper-3.4.8-002
/Users/zk_chs/something/hadoop/zookeeper-3.4.8-003
2、接下来,配置每个zookeeper的cfg文件,这里需要更改conf/zoo_sample.cfg为zoo.cfg,需要更改的内容为:
zookeeper-3.4.8-001/conf/zoo.cfg
=============before============
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
=============bofore============
=============now===============
dataDir=/Users/zk_chs/something/hadoop/tmp/zk-001/data
dataLogDir=/Users/zk_chs/something/hadoop/tmp/zk-001/log
# the port at which the clients will connect
clientPort=2181
server.1=localhost:
server.2=localhost:
server.3=localhost:
=============now================
clientPort:客户端连接端口,在我们的模拟集群环境中,每个zookeeper服务不能重复。
而server.1=localhost:中,2287表示leader通信端口,3387表示leader选举端口。
dataDir表示数据存储目录、dataLogDir表示日志存储目录,需要我们先手动创建好。
之后,再在每个dataDir中分别创建一个myid文件,文件中只有一个数字,即server Id。比如,我们的server.1对应的myid文件内容便是1
另外2个zookeeper如下配置:
zookeeper-3.4.8-002/conf/zoo.cfg
=============before============
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2182
=============bofore============
=============now===============
dataDir=/Users/zk_chs/something/hadoop/tmp/zk-002/data
dataLogDir=/Users/zk_chs/something/hadoop/tmp/zk-002/log
# the port at which the clients will connect
clientPort=2182
server.1=localhost:
server.2=localhost:
server.3=localhost:
=============now================
zookeeper-3.4.8-003/conf/zoo.cfg
=============before============
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2183
=============bofore============
=============now===============
dataDir=/Users/zk_chs/something/hadoop/tmp/zk-003/data
dataLogDir=/Users/zk_chs/something/hadoop/tmp/zk-003/log
# the port at which the clients will connect
clientPort=2183
server.1=localhost:
server.2=localhost:
server.3=localhost:
=============now================
3、接下来,通过bin/zkServer.sh进行启动:
/Users/zk_chs/something/hadoop/zookeeper-3.4.8-001/bin/zkServer.sh start
/Users/zk_chs/something/hadoop/zookeeper-3.4.8-002/bin/zkServer.sh start
/Users/zk_chs/something/hadoop/zookeeper-3.4.8-003/bin/zkServer.sh start
使用jps查看java进程:
837 QuorumPeerMain
824 QuorumPeerMain
835 QuorumPeerMain
如果启动成功,这些便是能看到的zookeeper进程了,
还可以使用zkCli.sh进行客户端连接:
/Users/zk_chs/something/hadoop/zookeeper-3.4.8-002/bin/zkCli.sh -server localhost:2183
成功后显示:
[zk: localhost:2183(CONNECTED) 0]
这样以来我们便能使用ls ,create ,delete ,get, set来测试了,使用方式与linux大同小异,另外,rmr可以进行递归删除。
4、使用java连接zookeeper:
个人建议使用开源的zkClient来进行连接,
&dependency&
&groupId&com.101tec&/groupId&
&artifactId&zkclient&/artifactId&
&version&0.8&/version&
&/dependency&
接下来使用zkClient进行zookeeper集群的连接:
public class TestZkClient {
private static ZkClient zkClient = new ZkClient("127.0.0.1:.0.1:.0.1:2183");
private static final String node = "/zk_chs";
public static void main(String[] args) throws InterruptedException {
testZkClient();
private static void testZkClient (){
if ( !zkClient.exists(node) ){
zkClient.createPersistent(node, "this is first node");
System.out.println((String) zkClient.readData(node));
连接zookeeper时,使用单个地址也是可以的,我们在这里使用","对地址进行分隔,是为了容错。
我们还定义了一个"/zk_chs"节点,关于节点的更多内容后续讲解。
上述程序输出:
this is first node
使用zookeeper还可以对节点数据变化进行监听,对上述程序进行扩展:
public class TestZkClient {
private static ZkClient zkClient = new ZkClient("127.0.0.1:.0.1:.0.1:2183");
private static final String node = "/zk_chs";
public static void main(String[] args) throws InterruptedException {
testZkClient();
subscribeDataChange();
zkClient.writeData(node, "new data");
zkClient.delete(node);
Thread.sleep(1000);
private static void testZkClient (){
if ( !zkClient.exists(node) ){
zkClient.createPersistent(node, "this is first node");
System.out.println((String) zkClient.readData(node));
private static void subscribeDataChange (){
zkClient.subscribeDataChanges(node, new IZkDataListener() {
public void handleDataChange(String dataPath, Object data) throws Exception {
System.out.println("node data changed: " + dataPath + ", data: " + data);
public void handleDataDeleted(String dataPath) throws Exception {
System.out.println("node data deleted: " + dataPath);
最后输出:
this is first nodenode data changed: /zk_chs, data: new datanode data deleted: /zk_chs
这次我们对zookeeper先做一个基本的了解,后续再介绍更多的内容。
浏览: 108762 次
非常用心。不错。
亲测可用,上面所说的html放在src\main\resour ...
PropertySource注解是Spring框架本来就有的
帮了我大忙,谢谢
建议作者写个总结,这样对bean的整个加载流程有个大概的轮廓, ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客访问: 606218
博文数量: 99
博客积分: 2544
博客等级: 少校
技术积分: 1835
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX 08:52:12
1, 安装准备
1.2 安装jdk : 我的是jdk-1.6.0_14-fcs
1.3 系统: linux&:centos-5.4
1.4 hadoop安装配置:
&&& 192.168.201.128 namenode
&&& 192.168.201.131 datanode
&&& 192.168.201.132 datanode
2,操作步骤
2.1 复制以上文件到/usr/下
2.2 解压后得到目录: /usr/zookeeper-3.3.3
2.3 进入zookeeper-3.3.3目录下,把conf目录下的zoo_sample.cfg 复制成zoo.cfg文件
2.4 打开zoo.cfg并修改和添加配置项目,如下:
# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the port at which the clients will connectclientPort=2181# the directory where the snapshot is stored.#dataDir=/export/crawlspace/mahadev/zookeeper/server1/datadataDir=/usr/zookeeper-3.3.3/data
dataLogDir=/usr/zookeeper-3.3.3/log
server.1=192.168.201.128: server.2=192.168.201.131: server.3=192.168.201.132:
2.5 新建两个目录
&&& mkdir /usr/zookeeper-3.3.3/{data,log}
2.6 在/usr/zookeeper-3.3.3/data目录下创建一个文件:myid
2.7 分别在myid上按照配置文件的server.中id的数值,在不同机器上的该文件中填写相应过的值
192.168.201.128& 的myid内容为1
192.168.201.131&&的为2192.168.201.132& 的为3
2.8 创建一个环境变量ZOOKEEPER并把该环境变量添加到系统路径:
vim /etc/profile
在export PATH语句前添加两行:
ZOOKEEPER=/usr/zookeeper-3.3.3/
PATH=$PATH:$ZOOKEEPER/bin
并执行 source /etc/profile
2.9 安装完成
3.1 在三台机器上分别执行shell脚本,由于已经把可执行路径添加到环境变量中了,所以可以直接执行:
zkServer.sh start
3.2 在其中一台机器上执行客户端脚本,来查看这台服务器是否启动:
zkCli.sh -server 192.168.201.128:2181
4,查看状态
4.1 执行jps查看状态
4.2 查看zookeeper集群是否启动
zkServer.sh status
[root@master ~]# zkServer.sh statusJMX enabled by defaultUsing config: /usr/zookeeper-3.3.3/bin/../conf/zoo.cfgMode: follower
leader的显示是:
JMX enabled by defaultUsing config: /usr/zookeeper-3.3.3/bin/../conf/zoo.cfgMode: leader
4.3 查看zookeeper的启动状态
echo ruok | nc 192.168.201.128 2181
控制台输出: imok
5, 基本命令使用
注意:(处理客户端命令的函数是processZKCmd)
通过zkCli.sh -server 命令可以连接到其中一台server中,然后就可以通过交互式命令来控制zk了,简单讲解一下create命令的用法:
连接上zookeeper集群后,可以向其中输入命令:
#创建一个znode: /t 和数据tdata,其结点是EPHEMERAL类型的,
#意味着,客户端断开后其结点就会被删除
[zk: 192.168.201.128(CONNECTED) 25] create -e /t tdata&
Created /t[zk: 192.168.201.128(CONNECTED) 26] ls /&& #查看/目录下目录[t, zookeeper][zk: 192.168.201.128(CONNECTED) 27] ls /t&& #查看/t目录下的内容[][zk: 192.168.201.128(CONNECTED) 28] get /t& #获取并查看/t目录写的数据tdatacZxid = 0xctime = Sun Apr 22 17:58:05 CST 2012mZxid = 0xmtime = Sun Apr 22 17:58:05 CST 2012pZxid = 0xcversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x136d781d8750002dataLength = 5numChildren = 0[zk: 192.168.201.128(CONNECTED) 29]
6,集群管理使用
阅读(33900) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~
请登录后评论。> 博客详情
摘要: 本文详细展示了ZooKeeper单机和集群模式下的安装和配置
##软件下载
写本文时, ZooKeeper 最新稳定版本是 3.4.8, 可以从 下载 zookeeper-3.4.8.tar.gz。将下载的 zookeeper-3.4.8.tar.gz 文件拷贝到 /opt 目录下。
安装和配置
注意安装 ZooKeeper 之前需要先安装 JDK, 关于 JDK 的安装这里不再赘述。
sudo tar -zxvf zookeeper-3.4.8.tar.gz
###目录重命名
sudo mv zookeeper-3.4.8 zookeeper
###修改用户和用户组
sudo chown —R hadoop:hadoop zookeeper/
###环境变量配置
编辑 .bashrc 文件, 在文件末尾添加以下环境变量配置:
# ZooKeeper Env
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
运行以下命令使环境变量生效:
source .bashrc
核心配置文件zoo.cfg
初次使用 ZooKeeper 时, 需要将 $ZOOKEEPER_HOME/conf 目录下的 zoo_sample.cfg 重命名为 zoo.cfg, zoo.cfg 默认配置如下:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to &0& to disable auto purge feature
#autopurge.purgeInterval=1
tickTime: ZooKeeper 中使用的基本时间单元, 以毫秒为单位, 默认值是 2000。它用来调节心跳和超时。例如, 默认的会话超时时间是两倍的 tickTime。
initLimit: 默认值是 10, 即 tickTime 属性值的 10 倍。它用于配置允许 followers 连接并同步到 leader 的最大时间。如果 ZooKeeper 管理的数据量很大的话可以增加这个值。
syncLimit: 默认值是 5, 即 tickTime 属性值的 5 倍。它用于配置leader 和 followers 间进行心跳检测的最大延迟时间。如果在设置的时间内 followers 无法与 leader 进行通信, 那么 followers 将会被丢弃。
dataDir: ZooKeeper 用来存储内存数据库快照的目录, 并且除非指定其它目录, 否则数据库更新的事务日志也将会存储在该目录下。建议配置
dataLogDir 参数来指定 ZooKeeper 事务日志的存储目录。
clientPort: 服务器监听客户端连接的端口, 也即客户端尝试连接的端口, 默认值是 2181。
maxClientCnxns: 在 socket 级别限制单个客户端与单台服务器之前的并发连接数量, 可以通过 IP 地址来区分不同的客户端。它用来防止某种类型的 DoS 攻击, 包括文件描述符耗尽。默认值是 60。将其设置为 0 将完全移除并发连接数的限制。
autopurge.snapRetainCount: 配置 ZooKeeper 在自动清理的时候需要保留的数据文件快照的数量和对应的事务日志文件, 默认值是 3
autopurge.purgeInterval: 和参数 autopurge.snapRetainCount 配套使用, 用于配置 ZooKeeper 自动清理文件的频率, 默认值是 1, 即默认开启自动清理功能, 设置为 0 则表示禁用自动清理功能。
更多 ZooKeeper 配置后面会写文章详细描述。
zoo.cfg配置
ticketTime=2000
clientPort=2181
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs
启动 ZooKeeper 服务
可以使用如下命令来启动 ZooKeeper 服务
zkServer.sh start
服务启动信息如下:
验证 ZooKeeper 服务
服务启动完成后, 可以使用 telnet 和 stat 命令验证服务器启动是否正常:
在单机模式中, Mode 的值是 &standalone&。
停止 ZooKeeper 服务
想要停止 ZooKeeper 服务, 可以使用如下命令:
zkServer.sh stop
服务停止信息如下:
##集群模式
###zoo.cfg配置
在 master 机器上, 在单机模式的配置文件下增加了最后 5 行配置:
ticketTime=2000
clientPort=2181
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs
initLimit=10
syncLimit=5
server.1=master:
server.2=slave01:
server.3=slave02:
集群模式中, 集群中的每台机器都需要感知其它机器, 在 zoo.cfg 配置文件中, 可以按照如下格式进行配置, 每一行代表一台服务器配置:
server.id=host:port:port
id 被称为 Server ID, 用来标识服务器在集群中的序号。同时每台 ZooKeeper 服务器上, 都需要在数据目录(即 dataDir 指定的目录) 下创建一个 myid 文件, 该文件只有一行内容, 即对应于每台服务器的Server ID。
ZooKeeper 集群中, 每台服务器上的 zoo.cfg 配置文件内容一致。
server.1 的 myid 文件内容就是 &1&。每个服务器的 myid 内容都不同, 且需要保证和自己的 zoo.cfg 配置文件中 &server.id=host:port:port& 的 id 值一致。
id 的范围是 1 ~ 255。
###创建myid文件
在 dataDir 指定的目录下 (即 /opt/zookeeper/data 目录) 创建名为 myid 的文件, 文件内容和 zoo.cfg 中当前机器的 id 一致。根据上述配置, master 的 myid 文件内容为 1。
按照相同步骤, 为 slave01 和 slave02 配置 zoo.cfg 和 myid 文件。zoo.cfg文件内容相同, slave01 的 myid 文件内容为 2, slave02 的 myid 文件内容为 3。
在集群中的每台机器上执行以下启动命令:
zkServer.sh start
启动信息如下:
master 和 slave01 两台服务器的 Mode 值均为 follower, 表明它们在集群中的角色为 Follower。
slave02 服务器的 Mode 值为 leader, 表明它在集群中的角色为 Leader。
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥1:首先下载一个zookeeper,我下载的版本是zookeeper-3.4.6,(目前最新版本为3.5.0,但是启动不了),解压安装包,解压后的zookeeper安装包我放置的路径是:D:/zookeeper/zookeeper-3.4.6
2.:进入D:/zookeeper/zookeeper-3.4.6/conf,将zoo_sample.cfg文件复制一份,并将复制好的文件改名为zoo.cfg。打开新建的zoo.cfg文件,将里面的内容进行修改,修改后的文件内容如下:
#initLimit=10
#syncLimit=5
tickTime=2000
dataDir=D:/zookeeper/zookeeper-3.4.6/data
clientPort=2181
3. 配置环境变量,在“我的电脑”上点击右键,选择属性,再点击高级系统设置,点击环境变量按钮,在系统变量这一栏,点击新建,添加:
变量名:ZOOKEEPER_HOME
变量值:D:/zookeeper/zookeeper-3.4.6
还是在系统变量这一栏,找到path,点击编辑path,在变量值里添加:% ZOOKEEPER_HOME %/ % ZOOKEEPER_HOME %/
4. 启动D:/zookeeper/zookeeper-3.4.6/bin/ zkServer.cmd
这里说下多个机器配置zookeeper (windows下伪集群没有成功)
1:192.168.1.113, 192.168.1.111上D:/zookeeper分别解压安装zookeeper-3.4.6
2:D:/zookeeper/zookeeper-3.4.6/conf/zoo.cfg添加如下配置
initLimit=5
syncLimit=2
tickTime=2000
dataDir=D:/zookeeper/zookeeper-3.4.6/data
clientPort=2181
server.1=192.168.1.113:
server.2=192.168.1.111:
tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。(这里是摘抄- -!~)
3:D:/zookeeper/zookeeper-3.4.6/data下创myid文件 myid的文件内容分别为:1、2 上边下边配置文件中192.168.1.113servier.X中的X值,如ip113的电脑,myid为1)
4:分别启动两个zookeeper,在一台机器上创建节点,另一个机器能同步过去证明成功
5:zookeeper服务器推荐用奇数个,半数以上服务正常,整个服务就正常,本人条件有限只配置两个

我要回帖

更多关于 zookeeper 问题 的文章

 

随机推荐