Zookeeper的环境搭建_单机与伪集群

Zookeeper的环境搭建_单机与伪集群

1、 部署前准备

三种部署方式:单机、集群、伪集群。集群方式与伪集群方式相似,只需要在多个机器上分别安装Zookeeper即可。

由于ZooKeeper是用Java开发的,因此安装ZooKeeper之前需要先安装JDK。

(1)部署JDK

下载路径:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,我选择的是jdk-8u112-linux-i586.tar.gz(Linux x64)。

下载下来后拷贝到/usr/java目录下,然后:tar  -zxvf  jdk-8u112-linux-i586.tar.gz解压后目录下有一个jdk1.8.0_111文件下。

  • 设置Java环境变量

然后通过vi /etc/profile命令来设置环境变量

export JAVA_HOME=/usr/java/jdk1.8.0_111

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

保存后进入cd /etc目录下,输入source profile命令使修改生效,然后java -version命令查看jdk版本信息。

  • 配置Zookeeper的环境变量

配置Zookeeper的环境变量目的:每次启动服务不需要定位到Zookeeperbin目录

然后执行source /etc/profile

(后面的操作都是默认配置了Zookeeper的环境变量)。

(2)下载Zookeeper压缩包

打开Zookeeper的官网:https://zookeeper.apache.org/

根据Download寻找:

https://www-eu.apache.org/dist/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz

在linux上下载:利用wget命令

wget https://www-eu.apache.org/dist/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz

然后,利用tar –zxvf xxx.tar.gz即可。

(3)关闭防火墙

zookeeper集群中的各个机器之间需要通过配置的端口号进行通信,端口没打开显然不会启动成功,报出异常Cannot open channel to * at election address

关闭防火墙方法: sudo service iptables stop

为了防止下次系统重启时防火墙再次被打开,需要关闭自启动,关闭自启动方法:sudo chkconfig iptables off

防火墙关闭之后,重启zookeeper集群成功。

2、Zookeeper单机

(1)修改配置文件

解压后,有个conf目录,有个样本配置文件:zoo_sample.cfg

mv zoo_sample.cfg zoo.cfg

vi zoo.cfg

主要是修改:clientPort=2181

dataDir=/usr/zookeeper/zookeeper-3.5.4-beta/data

dataLogDir=/usr/zookeeper/zookeeper-3.5.4-beta/logs

(2)启动与关闭、状态查询

zkServer.sh start ../conf/zoo-2181.cfg

zkServer.sh stop ../conf/zoo-2181.cfg

查看状态:

zkServer.sh status ../conf/zoo.cfg

3、Zookeeper的伪集群

(1)修改配置文件

Zookeeper集群的节点个数一般都是奇数个,这里以5个节点为例。

  • 复制多个配置文件zoo-port.cfg:

cp zoo_sample zoo-2181.cfg    …

  • 修改各自的clientPort、dataDir、dataLogDir

clientPort=2185

dataDir=/usr/zookeeper/zookeeper-3.5.4-beta/datas/data-2185

dataLogDir=/usr/zookeeper/zookeeper-3.5.4-beta/logs/logs-2185

  • 在最后添加server.X=A:B:C

server.X=A:B:C  X-代表服务器编号;A-代表ip;B和C-代表端口,这个端口用来系统之间通信;

在集群所有节点的配置文件中都添加且相同;这里涉及到多个端口,因此最好是将防火墙关闭。

server.1=127.0.0.1:2881:3881

server.2=127.0.0.1:2882:3882

server.3=127.0.0.1:2883:3883

server.4=127.0.0.1:2884:3884

server.5=127.0.0.1:2885:3885

  • 示例:

[root@iz2zeixh3287irhjrj62w8z conf]# vi zoo-2185.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=/usr/zookeeper/zookeeper-3.5.4-beta/datas/data-2185

dataLogDir=/usr/zookeeper/zookeeper-3.5.4-beta/logs/logs-2185

# the port at which the clients will connect

clientPort=2185

# 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

server.1=127.0.0.1:2881:3881

server.2=127.0.0.1:2882:3882

server.3=127.0.0.1:2883:3883

server.4=127.0.0.1:2884:3884

server.5=127.0.0.1:2885:3885

(2)两个目录:data和logs

  • 创建各个节点的data目录

创建datas目录,其下创建各个节点的data-port目录,因为每个服务器节点需要指定一定编号id,该id就是在data目录下的myid文件指定,所以每个节点需要单独有个data目录。

/usr/zookeeper/zookeeper-3.5.4-beta/datas/data-2181

  • 在各个节点的data-port目录下创建myid文件

myid文件内容就是该节点的编号,与配置文件的server.id中的id一致。

vi myid #创建myid文件,输入1,然后保存即可。

  • 创建各个节点的logs目录

(3)Zookeeper伪集群的启动

zkServer.sh start ../conf/zoo-2181.cfg

zkServer.sh start ../conf/zoo-2182.cfg

zkServer.sh start ../conf/zoo-2183.cfg

zkServer.sh start ../conf/zoo-2184.cfg

zkServer.sh start ../conf/zoo-2185.cfg

(4)Zookeeper集群的状态查看

在项目实施中经常需要用用zookeeeper集群环境,当需要定位zookeeper集群是否稳定的时候,会需要判断集群中leader是否进行改变,这时候就需要命令来查看。

命令:zookeeper-3.4.6/bin$  ./zkServer.sh status

zkServer.sh status../conf/zoo-2181.cfg

zkServer.sh status../conf/zoo-2182.cfg

zkServer.sh status../conf/zoo-2183.cfg

zkServer.sh status../conf/zoo-2184.cfg

zkServer.sh status../conf/zoo-2185.cfg

可以查看到哪一个节点为主节点leader,其他节点为从节点follower

(5)Zookeeper集群节点的关闭

zkServer.sh stop ../conf/zoo-2181.cfg

zkServer.sh stop../conf/zoo-2182.cfg

zkServer.sh stop../conf/zoo-2183.cfg

zkServer.sh stop../conf/zoo-2184.cfg

zkServer.sh stop../conf/zoo-2185.cfg

(6)对Zookeeper集群的操作

连接集群的任何一个节点,即可对整个Zookeeper集群操作。

连接Zookeeper:zkCli.sh –server localhost:2181

zkCli.sh –server localhost:2182

zkCli.sh –server localhost:2183

zkCli.sh –server localhost:2184

zkCli.sh –server localhost:2185

命令quit即可退出。

4、Zookeeper异常情况

(1)Zookeeper选举机制引起异常

当超过半数机器宕机,此时,无法选举leader,Zookeeper会认为该集群不可用。

[myid:] - INFO  [main-SendThread(10.10.16.151:2181):ClientCnxn$SendThread@1035] - Opening socket connection to server 10.10.16.151/10.10.16.151:2181. Will not attempt to authenticate using SASL (java.lang.SecurityException:

通过zookeeper的选举算法得知,当整个集群超过半数机器宕机,zookeeper会认为集群处于不可用状态。

(2)待续...

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值