实验二十 部署ZooKeeper

26 篇文章 10 订阅
2 篇文章 0 订阅

实验指导:

20.1 实验目的

掌握ZooKeeper集群安装部署,加深对ZooKeeper相关概念的理解,熟练ZooKeeper的一些常用Shell命令。

20.2 实验要求

部署三个节点的ZooKeeper集群,通过ZooKeeper客户端连接ZooKeeper集群,并用Shell命令练习创建目录,查询目录等。

20.3 实验原理

ZooKeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

ZooKeeper是以Fast Paxos算法为基础的。

ZooKeeper集群的初始化过程:集群中所有机器以投票的方式(少数服从多数)选取某一台机器作为leader(领导者),其余机器作为follower(追随者)。如果集群中只有一台机器,那么就这台机器就是leader,没有follower。

ZooKeeper集群与客户端的交互:客户端可以在任意情况下ZooKeeper集群中任意一台机器上进行读操作;但是写操作必须得到leader的同意后才能执行。

ZooKeeper选取leader的核心算法思想:如果某服务器获得N/2 + 1票,则该服务器成为leader。N为集群中机器数量。为了避免出现两台服务器获得相同票数(N/2),应该确保N为奇数。因此构建ZooKeeper集群最少需要3台机器。

20.4 实验步骤

本实验主要介绍ZooKeeper的部署,ZooKeeper一般部署奇数个节点,部署方法包主要含安装JDK、修改配置文件、启动测试三个步骤。

20.4.1 安装JDK

下载安装JDK。因为 ZooKeeper 服务器在 JVM 上运行。

20.4.2 修改ZooKeeper配置文件

首先配置slave1,slave2,slave3之间的免密和各个机器的/etc/hosts文件

修改ZooKeeper的配置文件,步骤如下:

进入解压目录下,把conf目录下的zoo_sample.cfg 复制成zoo.cfg文件。

cd /usr/cstor/zookeeper/conf
cp 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 port at which the clients will connect
clientPort=2181
# the directory where the snapshot is stored.
dataDir=/usr/cstor/zookeeper/data
dataLogDir=/usr/cstor/zookeeper/log
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888

新建两个目录。

mkdir /usr/cstor/zookeeper/data
mkdir /usr/cstor/zookeeper/log

将/usr/cstor/zookeeper目录传到另外两台机器上。

scp -r /usr/cstor/zookeeper root@slave2:/usr/cstor
scp -r /usr/cstor/zookeeper root@slave3:/usr/cstor

分别在三个节点上的/usr/local/zookeeper/data目录下创建一个文件:myid。

vi /usr/cstor/zookeeper/data/myid

分别在myid上按照配置文件的server.中id的数值,在不同机器上的该文 件中填写相应过的值,如下:

slave1 的myid内容为1

slave2 的myid内容为2

slave3 的myid内容为3

20.4.3 启动ZooKeeper集群

然后,启动ZooKeeper集群,进入客户端验证部署完成。

分别在三个节点进入bin目录,启动ZooKeeper服务进程:

cd /usr/cstor/zookeeper/bin
./zkServer.sh start

在各机器上依次执行脚本,查看ZooKeeper状态信息,两个节点是follower状态,一个节点是leader状态:

./zkServer.sh status

在其中一台机器上执行客户端脚本:

./zkCli.sh -server slave1:2181,slave2:2181,slave3:2181

在客户端shell下执行创建目录命令:

create /testZk ""

向/testZk目录写数据:

set /testZk 'aaa'

读取/testZk目录数据:

get /testZk

删除/testZk目录:

rmr /testZk

在客户端shell下用quit命令退出客户端:

quit

20.5 实验结果

各个节点执行jps命令查看Java进程,有QuorumPeerMain进程代表该节点ZooKeeper安装成功,如图20-1所示。

图20-1 ZooKeeper进程图

在客户端shell下查看ZooKeeper集群目录,输入命令:ls /,查看ZooKeeper集群目录列表结果如图20-2、图20-3、图20-4所示。

图20-2 ZooKeeper客户端结果图

图20-3 ZooKeeper客户端写数据

图20-4 ZooKeeper客户端读数据

实验操作:

步骤1:配置集群ssh免密

先编辑hosts文件,修改网络映射:vi /etc/hosts 

再配置ssh免密

步骤2:修改zookeeper配置

修改ZooKeeper的配置文件,步骤如下:

进入解压目录下,把conf目录下的zoo_sample.cfg 复制成zoo.cfg文件。

cd /usr/cstor/zookeeper/conf
cp 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 port at which the clients will connect
clientPort=2181
# the directory where the snapshot is stored.
dataDir=/usr/cstor/zookeeper/data
dataLogDir=/usr/cstor/zookeeper/log
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888

将/usr/cstor/zookeeper目录传到另外两台机器上。

scp -r /usr/cstor/zookeeper root@slave2:/usr/cstor
scp -r /usr/cstor/zookeeper root@slave3:/usr/cstor

分别在三个节点上的/usr/local/zookeeper/data目录下创建一个文件:myid。

vi /usr/cstor/zookeeper/data/myid

分别在myid上按照配置文件的server.中id的数值,在不同机器上的该文 件中填写相应过的值,如下:

slave1 的myid内容为1

slave2 的myid内容为2

slave3 的myid内容为3

 

步骤3:启动zookeeper

然后,启动ZooKeeper集群,进入客户端验证部署完成。(注意:ZooKeeper选取leader的核心算法思想:如果某服务器获得N/2 + 1票,则该服务器成为leader。N为集群中机器数量。为了避免出现两台服务器获得相同票数(N/2),应该确保N为奇数。因此构建ZooKeeper集群最少需要3台机器。

分别在三个节点进入bin目录,启动ZooKeeper服务进程:

cd /usr/cstor/zookeeper/bin
./zkServer.sh start

在各机器上依次执行脚本,查看ZooKeeper状态信息,两个节点是follower状态,一个节点是leader状态:

./zkServer.sh status

步骤4:使用zookeeper客户端

在其中一台机器上执行客户端脚本:(把集群中的一台机器作为客户端)

./zkCli.sh -server slave1:2181,slave2:2181,slave3:2181

在客户端shell下执行创建目录命令:

create /testZk ""

向/testZk目录写数据:

set /testZk 'aaa'

读取/testZk目录数据:

get /testZk

删除/testZk目录:

rmr /testZk

在客户端shell下用quit命令退出客户端:

quit

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值