天天看点

分布式架构(四)-zookeeper概述简介特性数据结构节点类型Zookeeper集群的安装

简介

zookeeper是一个分布式协调服务,能够为分布式应用程序提供协调服务。 1. zookeeper是为别的分布式程序服务的。 2. zookeeper本身就是一个分布式程序。 zookeeper集群分为两种角色:Leader和Follower,Leader的选举通过zab算法进行(PAXOS算法的简化版)。 集群中半数节点以上存活,就能提供服务。 3. zookeeper提供的服务包含:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁等等。 4. zookeeper底层只提供了两个功能: 4.1 管理用户提交的数据。 4.2 提供数据节点的监听服务。

特性

1. 全局数据一致性:每个server保存一份相同的数据副本,客户端无论连接到哪个server,数据都是一致的。 2. 分布式读写,更行操作由leader实施。 3. 更新请求顺序进行。来自同一个客户端的更新请求按其发送顺序依次进行。 4. 数据更新的原子性。 4. 数据实时性。

数据结构

1. 层次化的目录结构。 2. 每个节点为znode,并且有一个唯一的路径标识。 3. 节点可以包换数据和子节点(EPHEMERAL节点没有子节点)。 4. 节点可以设置监听器。

节点类型

1. 短暂节点(ephemeral),断开连接时会自动删除。 2. 持久节点(persistent)。 3. 节点还可以拥有序列号,为sequential。

Zookeeper集群的安装

1. Centos的准备

准备方式可以参考另一篇博文。 一共准备三台虚拟机,分别将其命名为zookeeper1.com、zookeeper2.com、zookeeper3.com 然后创建zookeeper用户

adduser zookeeper
passwd zookeeper
           

将密码直接设置成zookeeper即可。

设置sudo权限 使用root用户执行:

vim /etc/sudoers
           

在root ALL=(ALL) ALL下一行添加: zookeeper ALL=(ALL) ALL 退出保存。 然后切换到zookeeper用户

su zookeeper
           

2. Java环境安装

在zookeeper用户目录下创建文件夹:

mkdir zip apps
           

jdk使用7_79版本。然后将安装包上传到zip目录。 执行:

tar -zxvf jdk-7u79-linux-x64.tar.gz
mv jdk-7u79-linux-x64 ~/apps
sudo vi /etc/profile
           

在文件末尾添加:

export JAVA_HOME=/home/zookeeper/apps/jdk1.7.0_79
           

执行:

sudo source /etc/profile
           

执行java -version,如果可以看到jdk版本信息,则说明安装成功。

3. Zookeeper的安装

首先,准备zookeeper的安装包,这里使用的是3.4.5版本,你可以在 这里下载。 在zookeeper用户目录下创建文件夹:

mkdir zip apps
           

在以后的博文中,应用程序都会安装在apps目录下, 所有的安装包都会放在zip目录下。 将下载好的安装包,上传到zip目录中,解压

tar -zxvf zookeeper-3.4.5.tar
mv zookeeper-3.4.5 ../apps
           

进入到安装目录

cd ../apps/zookeeper-3.4.5
           

修改配置文件

cp conf/zoo_sample.cfg conf/zoo.cfg
vi zoo.cfg
           

修改内容如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper/apps/zookeeper-3.4.9/data
dataLogDir=/home/zookeeper/apps/zookeeper-3.4.9/log
clientPort=2181
server.1=zookeeper1.com:2888:3888
server.2=zookeeper2.com:2888:3888
server.3=zookeeper3.com:2888:3888
           

其中,最下面的几行,server.x是不能修改的,x代表第几台zookeeper机。zookeeperx.com是每一台主机的域名。端口号2888和3888是默认的。 配置环境变量:

sudo vi /etc/profile
           

在末尾添加:

export ZOOKEEPER_HOME=/home/zookeeper/apps/zookeeper-3.4.9
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
           

保存设置

sudo source /etc/profile
           

将上述的配置在每台centos上执行。也可以使用scp命令进行传输。

然后,在每台zookeeper机上配置集群id 进入data目录,这个data目录就是在zoo.cfg文件里配置的

vi /home/zookeeper/apps/zookeeper-3.4.5/data/myid
           

当前机对应的是zoo.cfg文件中的server.x的哪个数字,就将值填进去。例如,直接写个1,然后退出保存。 然后关闭防火墙,或开放2888,3888端口。

sudo service iptables stop
           

设置hosts文件,在每台服务器上执行:

sudo vi /etc/hosts
           

在末尾添加:

192.168.232.101 zookeeper1.com
192.168.232.102 zookeeper2.com
192.168.232.103 zookeeper3.com
           

ip地址根据自己的实际情况修改。

最后,启动zookeeper集群

zkServer.sh start
           

查看zookeeper状态

zkServer.sh status
           

查看到如下,说明启动成功:

分布式架构(四)-zookeeper概述简介特性数据结构节点类型Zookeeper集群的安装
分布式架构(四)-zookeeper概述简介特性数据结构节点类型Zookeeper集群的安装

继续阅读