zookeeper安装(Linux)
来源:互联网 发布:全民飞机双打飞跃算法 编辑:程序博客网 时间:2024/06/02 05:52
zookeeper安装(Linux)
单机模式
从Apache官网下载一个zookeeper稳定版本,本次采用的是zookeeper-3.4.9版本。
http://apache.fayea.com/zookeeper/zookeeper-3.4.9/
解压zookeeper-3.4.9.tar.gz文件到安装目录下:
tar -zxvf zookeepre-3.4.9.tar.gz
zookeeper要求Java运行环境,并且需要jdk版本1.6以上。为了以后的操作方便,可以对zookeeper的环境变量进行配置(该步骤可忽略)。在/etc/profile文件中加入以下内容:
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.9export PATH=$ZOOKEEPER_HOME/bin;$ZOOKEEPER_HOME/conf
- zookeeper服务需要用户自己创建一个配置文件。默认配置文件路径为 zookeeper-3.4.9/conf/目录下,文件名为zoo.cfg。进入conf/目录下可以看到一个zoo_sample.cfg文件,可供参考。
#新建文本文件,在文件中输入以下内容并保存
vim zoo.cfg
#服务器与客户端之间交互的基本时间单元(ms)
tickTime=2000
#保存zookeeper数据路径
dataDir=/home/jxwch/hadoop/data/zookeeper
#保存zookeeper日志路径,当此配置不存在时默认路径与dataDir一致
dataLogDir=/home/jxwch/hadoop/dataLog/zookeeper
#客户端访问zookeeper时经过服务器端时的端口号
clientPort=2181
注意:使用单机模式时需要注意,在这种配置方式下,如果zookeeper服务器出现故障,zookeeper服务将会停止。
集群模式
zookeeper最主要的应用场景是集群,最好使用奇台数服务器。如zookeeper拥有5台服务器,那么在最多2台服务器出现故障后,整个服务还可以正常使用。下载版本相同的zookeeper并配置相应的环境变量。配置每台机器上的conf/zoo.cfg配置文件
从Apache官网下载zookeeper稳定版本,本次采用的是zookeeper-3.4.9版本。
http://apache.fayea.com/zookeeper/zookeeper-3.4.9/
解压zookeeper-3.4.9.tar.gz文件到安装目录下:
tar -zxvf zookeepre-3.4.9.tar.gz
zookeeper要求Java运行环境,并且需要jdk版本1.6以上。为了以后的操作方便,可以对zookeeper的环境变量进行配置(该步骤可忽略)。在/etc/profile文件中加入以下内容:
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.9export PATH=$ZOOKEEPER_HOME/bin;$ZOOKEEPER_HOME/conf
配置对应机器的配置文件参数
#新建文本文件,在文件中输入以下内容并保存vim zoo.cfg #服务器与客户端之间交互的基本时间单元(ms)tickTime=2000#保存zookeeper数据路径dataDir=/home/jxwch/hadoop/data/zookeeper#保存zookeeper日志路径,当此配置不存在时默认路径与dataDir一致dataLogDir=/home/jxwch/hadoop/dataLog/zookeeper#客户端访问zookeeper时经过服务器端时的端口号clientPort=2181#允许follower连接并同步到leader的初始化时间,它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败。initLimit=10#leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,默认follower服务器与leader服务器之间断开链接。syncLimit=5#server.id=host:port:port : 表示了不同的zookeeper服务器的自身标识,作为集群的一部分,每一台服务器应该知道其他服务器的信息。在服务器的data(dataDir参数所指定的目录)下创建一个文件名为myid的文件,这个文件的内容只有一行,指定的是自身的id值。比如,服务器“1”应该在myid文件中写入“1”。这个id必须在集群环境中服务器标识中是唯一的,且大小在1~255之间。这一样配置中,zoo1代表第一台服务器的IP地址。第一个端口号(port)是从follower连接到leader机器的端口,第二个端口是用来进行leader选举时所用的端口。所以,在集群配置过程中有三个非常重要的端口:clientPort:2181、port:2888、port:3888。server.1=zoo1:2888:3888server.2=zoo2:2888:3888server.3=zoo3:2888:3888#限制连接到zookeeper服务器客户端的数量maxClientCnxns=60
伪集群模式
伪集群模式就是在单机环境下模拟集群的zookeeper服务。在zookeeper集群配置文件中,clientPort参数用来设置客户端连接zookeeper服务器的端口。server.1=IP1:2888:3888中,IP1指的是组成zookeeper服务器的IP地址,2888为组成zookeeper服务器之间的通信端口,3888为用来选举leader的端口。由于伪集群模式中,我们使用的是同一台服务器,也就是说,需要在单台机器上运行多个zookeeper实例,所以我们必须要保证多个zookeeper实例的配置文件的client端口不能冲突。在单台机器上建立伪集群模式步骤如下:
将zookeeper-3.4.9.tar.gz分别解压到server1,server2,server3目录下:
tar -zxvf zookeeper-3.4.9.tar.gz -C /home/user/server1 tar -zxvf zookeeper-3.4.9.tar.gz -C /home/user/server2tar -zxvf zookeeper-3.4.9.tar.gz -C /home/user/server3
在server1/data/目录下创建文件myid文件并写入“1”,同样在server2、server3进行同样的操作。
cd /home/user/server1/data/vim myid
配置server1/conf/、server2/conf/、server3/conf/目录下的zoo.cfg文件:
server1/conf/zoo.cfg文件
# Server 1# 服务器与客户端之间交互的基本时间单元(ms)tickTime=2000# 此配置表示允许follower连接并同步到leader的初始化时间,它以tickTime的倍数表示。当超过设置倍数的tickTime时间,则连接失败。initLimit=10# Leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,默认follower服务器与leader服务器之间断开链接syncLimit=5# 保存zookeeper数据,日志路径dataDir=/home/jxwch/server1/datadataLogDir=/home/jxwch/server1/dataLog# 客户端与zookeeper相互交互的端口clientPort=2181#server.A=B:C:D 其中A是一个数字,代表这是第几号服务器;B是服务器的IP地址;C表示服务器与群集中的“领导者”交换信息的端口;当领导者失效后,D表示用来执行选举时服务器相互通信的端口。server.1= 127.0.0.1:2888:3888server.2= 127.0.0.1:2889:3889server.3= 127.0.0.1:2890:3890# 限制连接到zookeeper服务器客户端的数量maxClientCnxns=60
server2/conf/zoo.cfg文件
# Server 2# 服务器与客户端之间交互的基本时间单元(ms)tickTime=2000# zookeeper所能接受的客户端数量initLimit=10# 服务器与客户端之间请求和应答的时间间隔syncLimit=5# 保存zookeeper数据,日志路径dataDir=/home/jxwch/server2/datadataLogDir=/home/jxwch/server2/dataLog# 客户端与zookeeper相互交互的端口clientPort=2182#server.A=B:C:D 其中A是一个数字,代表这是第几号服务器;B是服务器的IP地址;C表示服务器与群集中的“领导者”交换信息的端口;当领导者失效后,D表示用来执行选举时服务器相互通信的端口。server.1= 127.0.0.1:2888:3888server.2= 127.0.0.1:2889:3889server.3= 127.0.0.1:2890:3890# 限制连接到zookeeper服务器客户端的数量。#maxClientCnxns=60
server3/conf/zoo.cfg文件
# Server 3# 服务器与客户端之间交互的基本时间单元(ms)tickTime=2000# zookeeper所能接受的客户端数量initLimit=10# 服务器与客户端之间请求和应答的时间间隔syncLimit=5# 保存zookeeper数据,日志路径dataDir=/home/jxwch/server3/datadataLogDir=/home/jxwch/server3/dataLog# 客户端与zookeeper相互交互的端口clientPort=2183#server.A=B:C:D 其中A是一个数字,代表这是第几号服务器;B是服务器的IP地址;C表示服务器与群集中的“领导者”交换信息的端口;当领导者失效后,D表示用来执行选举时服务器相互通信的端口。server.1= 127.0.0.1:2888:3888server.2= 127.0.0.1:2889:3889server.3= 127.0.0.1:2890:3890# 限制连接到zookeeper服务器客户端的数量#maxClientCnxns=60
注意:在上述文件中除了clientPort不同之外,dataDir和dataLogDir也不同。不要忘记dataDir所对应的目录中创建的myid文件来指定对应的zookeeper服务器实例。
zookeeper伪集群模式运行
- 启动server1服务器:
cd server1/bin./zkServer.sh start
- 此时出现以下提示信息,表示启动成功:
注意:打开zookeeper.out文件会有错误日志。产生Waring信息是因为zookeeper服务的每个实例都拥有全局的配置信息,他们在启动的时候需要随时随地的进行leader选举,此时server1就需要和其他两个zookeeper实例进行通信,但是,另外两个zookeeper实例还没有启动起来,因此将会产生上述所示的提示信息。当我们用同样的方式启动server2和server3后就不会再有这样的警告信息了。
2017-02-23 16:17:46,940 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@400] - Cannot open channel to 2 at election address /127.0.0.1:3889java.net.ConnectException: 拒绝连接
- 分别启动server2、server3后,在每个服务上运行zkServer.sh status命令查看集群状态
server1服务器此时处于follower模式
server2被选举为leader
说明。