首页 > 编程笔记 > MySQL笔记 阅读:17

ZooKeeper下载、安装和测试教程(新手必看)

ZooKeeper 是分布式应用的协调服务,在部署 HBase 伪分布式环境之前,必须先部署 ZooKeeper 集群。

下载并安装ZooKeeper

从官网下载 ZooKeeper 安装包。这里选择 apache-zookeeper-3.6.3-bin.tar.gz,将其解压到 /usr/local 目录下,并重命名。具体代码如下:
clinux@master:~$ sudo tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /usr/local
clinux@master:~$ cd /usr/local
clinux@master:~$ sudo mv apache-zookeeper-3.6.3-bin zookeeper3.6.3
修改 ZooKeeper 的用户及其权限,防止后面启动 ZooKeeper 服务的时候出现一些无法写入的错误。

这里需要为 ZooKeeper 增加写的权限,具体代码如下:
clinux@master:~$ cd  /usr/local
clinux@master:~$ sudo  chown  -R  clinux:clinux  zookeeper3.6.3  #改变用户
clinux@master:~$ sudo  chmod  -R  u+w  zookeeper3.6.3        #增加写权限

配置 ZooKeeper 的环境变量,具体代码如下:
clinux@master:~$ cd  ~  #进入家目录
clinux@master:~$ sudo  vim  .bashrc
# Shift+G, 跳到文件末尾,添加以下内容
export  ZOOKEEPER_HOME = /usr/local/zookeeper3.6.3
export  PATH = .:$ZOOKEEPER_HOME/bin:$PATH
保存并退出。运行 source.bashrc,使配置生效。

修改 ZooKeeper 的配置文件,具体代码如下:
clinux@master:~$ cd /usr/local/zookeeper3.6.3/conf
clinux@master:~$ sudo cp zoo_sample.cfg zoo.cfg

此时,启动单机版 ZooKeeper,具体代码如下:
clinux@master:~$ zkServer.sh start # 使用默认的配置文件zoo.cfg启动
clinux@master:~$ zkServer.sh status # 查看
clinux@master:~$ zkServer.sh stop # 停止

配置伪分布式的ZooKeeper集群

这里的伪分布式集群部署是指在一台机器上配置多个配置文件,并根据不同的配置文件来启动 ZooKeeper 服务。具体配置如下:
clinux@master:~$ cd /usr/local/zookeeper3.6.3/conf
clinux@master:~$ sudo cp zoo_sample.cfg zoo1.cfg
clinux@master:~$ sudo cp zoo_sample.cfg zoo2.cfg
clinux@master:~$ sudo cp zoo_sample.cfg zoo3.cfg
在上述配置中,3 个配置文件中的 clientPort 分别为 2181、2182、2183,dataDir 分别为 /usr/local/zookeeper3.6.3/zkData1、/usr/local/zookeeper3.6.3/zkData2、/usr/local/ zookeeper3.6.3/zkData3。手动创建这 3 个目录,并添加写的权限,之后在这 3 个配置文件的末尾添加以下内容:
server.1 = IP:2888:3888
server.2 = IP:2889:3889
server.3 = IP:2890:3890
在上述代码结构 server.A = B∶ C∶ D 中:
对于伪分布式集群的配置方式,由于 B 都是一样的,因此我们需要为不同的 ZooKeeper 服务器通信端口分配不同的端口号。

在各个 dataDir 目录下创建 myid 文件,并存储当前服务器的编号,具体代码如下:
clinux@master:~$ cd /usr/local/zookeeper3.6.3
clinux@master:~$ sudo touch zkData1/myid
clinux@master:~$ sudo touch zkData2/myid
clinux@master:~$ sudo touch zkData3/myid
clinux@master:~$ sudo -s # 切换到超级权限
clinux@master:~$ echo 1 > zkData1/myid
clinux@master:~$ echo 2 > zkData2/myid
clinux@master:~$ echo 3 > zkData3/myid

启动并测试ZooKeeper伪分布式集群

依次启动 ZooKeeper 服务。在启动的时候,ZooKeeper 节点通过选举算法依次投票,选举出的 Leader 服务器是 2 号配置文件对应的 ZooKeeper 节点,其他节点则是 Fllower 节点。

启动第一台服务器时查看到的状态 status 是不可用的,因为集群中节点未在半数以上。集群中奇数个节点和偶数个节点对故障的容忍度是一致的,我们建议配置奇数个 ZooKeeper 节点。

以下代码展示了依次使用配置文件来启动 ZooKeeper 服务:
clinux@master:~$ zkServer.sh start /usr/local/zookeeper3.6.3/conf/zoo1.cfg
clinux@master:~$ zkServer.sh start /usr/local/zookeeper3.6.3/conf/zoo2.cfg
clinux@master:~$ zkServer.sh start /usr/local/zookeeper3.6.3/conf/zoo3.cfg

查看各个节点的状态(需先关闭防火墙),具体代码如下:
clinux@master:~$ zkServer.sh status /usr/local/zookeeper3.6.3/conf/zoo1.cfg
clinux@master:~$ zkServer.sh status /usr/local/zookeeper3.6.3/conf/zoo2.cfg
clinux@master:~$ zkServer.sh status /usr/local/zookeeper3.6.3/conf/zoo3.cfg
得到的结果如下图所示:


图 1 ZooKeeper服务节点的状态

此时,使用 jps 命令查看所有进程,得到的结果如下图所示:


图 2 ZooKeeper服务进程

客户端连接 ZooKeeper 节点所使用的命令如下:
clinux@master:~$ zkCli.sh - server localhost:2183
# 退出使用quit命令
在 ZooKeeper 完全分布式集群中,配置文件存储在各自所在的服务器上,然后在各自所在的服务器上启动 ZooKeeper 服务进程。

相关文章