分布式学习——Zookeeper介绍(三)——Zookeeper的安装

Zookeeper概述中简单介绍了Zookeepr,工欲善其事,必先利其器。那么本文就介绍如何安装Zookeeper。

Zookeeper有三种安装方式:单机模式、集群模式、伪集群模式。

单机模式

单机模式表示只运行在一台服务器上,适合测试环境; 安装步骤如下:

一、下载ZooKeeper

二、解压

三、在conf目录下创建一个配置文件zoo.cfg

tickTime=2000  dataDir=/Users/zdandljb/zookeeper/data dataLogDir=/Users/zdandljb/zookeeper/dataLog            clientPort=2181

这里涉及到的参数会在后文统一介绍

四、启动ZooKeeper的Server

sh bin/zkServer.sh start, 如果想要关闭,输入:zkServer.sh stop

五、检查是否启动成功

启动后使用命令echo ruok | nc localhost 2181检查 Zookeeper 是否已经在服务。如果正常启动将输出imok

我在启动zookeeper的时候出现了闪退,于是我在zkServer用记事本打开,在最后加上pause,保存,然后再启动,查看闪退的原因。错误信息如下:

错误是找不到或者无法加载主类,这时有些人说看一下jdk配置是否正确,我也查看了我的jdk配置,配置是没有问题的。还有的说把jdk配置放在最前面,也试了,不能解决问题。我的jdk是1.8.0版本的。我想到可能是zookeeper的版本太高造成的。于是把zookeeper的版本从3.4.6降低到3.3.6,然后启动zookeeper,成功启动。

不管是使用3.4.6还是使用3.3.6版本,记得在conf文件夹下面做一件事情,就是把zoo_sample.cfg拷贝一份,写成了zoo.cfg,同时在里面添加一些信息(矩形标出部分):

集群模式

Zookeeper 不仅可以单机提供服务,同时也支持多机组成集群来提供服务。

安装步骤和单机模式类似,只是配置不太一样。这里以三台机器为例

一、分别在不同的机器上下载并解压Zookeeper

二、创建myid文件

在每台机器上都创建一个myid文件。文件的内容只有一个数字。

server1机器的内容为:1 server2机器的内容为:2 server3机器的内容为:3

三、在conf目录下创建一个配置文件zoo.cfg

tickTime=2000  dataDir=/Users/zdandljb/zookeeper/data dataLogDir=/Users/zdandljb/zookeeper/dataLog               
clientPort=2181                      
initLimit=5                         
syncLimit=2                                 
server.1=server1:2888:3888                      
server.2=server2:2888:3888                      
server.3=server3:2888:3888

伪集群模式

实际上 Zookeeper 还支持另外一种伪集群的方式,也就是可以在一台物理机上运行多个 Zookeeper 实例

一、安装Zookeeper

建了3个文件夹,server1 server2 server3,然后每个文件夹里面解压一个zookeeper的下载包

二、创建myid文件

进入data目录,创建一个myid的文件,里面写入一个数字,server1,就写一个1,server2对应myid文件就写入2,server3对应myid文件就写个3

三、在conf目录下创建一个配置文件zoo.cfg

tickTime=2000  dataDir=/Users/zdandljb/zookeeper/data dataLogDir=xxx/zookeeper/server1/         
clientPort=2181                              
initLimit=5                           
syncLimit=2                                 
server.1=server1:2888:3888                      
server.2=server2:2889:3889                                     
server.3=server3:2890:3890

为了防止端口冲突,要配置不同的端口号。

常用参数

dataDir:用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里。

dataLogDir:用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争。

tickTime:心跳时间,为了确保client-server连接存在的,以毫秒为单位,最小超时时间为两个心跳时间。

clientPort:客户端监听端口。

initLimit:初始化连接时最长能忍受多少个心跳时间间隔数

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

server.x=[hostname]:nnnnn[:nnnnn]

   配置集群里面的主机信息,其中:
  server.xserver.xx要写在myid文件中,决定当前机器的id
  ②第一个port用于连接leader
  ③第二个用于leader选举。
  ④如果electionAlg0,则不需要第二个port
  hostname也可以填ip

伪集群模式安转时,后面连着的2个端口3个server都不要一样,否则端口冲突。

electionAlg

  用于选举的实现的参数:
  1LeaderElection
  2AuthFastLeaderElection
  3FastLeaderElection

zookeeper默认使用FastLeaderElection进行Leader选举

原文链接:http://www.hollischuang.com/archives/1277

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值