在本文中,我们已经说明了在Ubuntu 18.04上使用确定的仲裁数量安装和配置3 Node Zookeeper群集的必要步骤。
在本教程中,您将学习:
- 什么是Zookeeper及其概述。
- 什么是Zookeeper的体系结构。
- 如何配置Zookeeper主机和添加Zookeeper用户。
- 如何安装和配置Oracle JDK。
- 如何配置和设置Zookeeper。
- 如何配置工作节点加入Swarm集群。
- 如何验证Zookeeper群集和集合。
使用的软件要求和约定
类别 | 使用的要求,约定或软件版本 |
---|---|
系统 | Ubuntu 18.04 |
软件 | zookeeper-3.4.12,Oracle JDK 1.8.0_192 |
其他 | 以root身份或通过Linux特权访问Linux系统sudo 命令。 |
约定 | #-要求linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo 命令$-要求linux命令以普通非特权用户身份执行 |
Zookeeper概述
Zookeeper允许分布式进程通过数据寄存器(我们称这些寄存器为znode)的共享层次结构名称空间相互协调,就像文件系统一样。与普通文件系统不同,Zookeeper为客户端提供了高吞吐量,低延迟,高可用性,对znode进行严格排序的访问。
Zookeeper的性能方面使它可以在大型分布式系统中使用。可靠性方面阻止它成为大型系统中的单点故障。它严格的排序允许在客户端实现复杂的同步原语。
Zookeeper提供的名称空间与标准文件系统的名称空间非常相似。名称是由斜杠(“/”)分隔的一系列路径元素。 Zookeeper名称空间中的每个znode均由路径标识。每个znode都有一个父对象,其路径是znode的前缀,元素少一个;此规则的例外是root(“/”),它没有父级。此外,与标准文件系统完全一样,如果znode有子节点,则无法删除它。
Zookeeper旨在存储协调数据:状态信息,配置,位置信息等。
Zookeeper的体系结构
为了获得可靠的Zookeeper服务,您应该在称为集合的群集中部署Zookeeper。只要大多数集成正常运行,就可以使用该服务。因为Zookeeper占多数,所以最好使用奇数台计算机。例如,对于四台机器,Zookeeper只能处理单台机器的故障;如果两台计算机发生故障,则其余两台计算机不占多数。但是,使用五台计算机,Zookeeper可以处理两台计算机的故障。
下面说明了Zookeeper体系结构中的每个组件。
- 客户-客户端(我们的分布式应用程序集群中的节点之一)从服务器访问信息。在特定的时间间隔内,每个客户端都会向服务器发送一条消息,以使服务器知道该客户端仍在运行中。同样,客户端连接时,服务器也会发送确认消息。如果连接的服务器没有响应,则客户端会自动将消息重定向到另一台服务器。
- 服务器-服务器是我们Zookeeper集成中的节点之一,可为客户端提供所有服务。向客户端发出确认以通知服务器处于活动状态。
- 领导-如果任何连接的节点发生故障,则执行自动恢复的服务器节点。在服务启动时选出领导者。
- 追随者-遵循领导者指令的服务器节点。
配置Zookeeper主机并添加Zookeeper用户
在安装必要的Zookeeper软件包进行配置之前,我们将在所有Ubuntu节点上配置hosts文件。之后,我们将在所有三个节点上创建zookeeper用户,因为zookeeper守护程序需要以zookeeper
用户本身。
在这里,我们使用了3台Ubuntu 18.04机器。
Zookeeper Node1 – 192.168.1.102 (hostname - node1)
Zookeeper Node2 – 192.168.1.103 (hostname – node2)
Zookeeper Node3 – 192.168.1.105 (hostname - node3)
编辑/etc/hosts
通过三个文件跨所有节点gedit
要么vim
并进行以下更改:
192.168.1.102 node1
192.168.1.103 node2
192.168.1.105 node3
在hosts文件中使用以上详细信息进行修改后,使用ping检查所有节点之间的连接性。
现在,创建新的zookeeper
用户和组使用以下命令:
# adduser zookeeper
安装和配置Oracle JDK
下载并解压缩Java档案在下面/opt
目录。欲了解更多信息,请前往如何在Ubuntu 18.04上安装Java。
要将JDK 1.8 Update 192设置为默认JVM,我们将使用以下命令:
# update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_192/bin/java 100
# update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_192/bin/javac 100
安装完成以验证Java已成功配置后,运行以下命令:
# update-alternatives --display java
# update-alternatives --display javac
要检查Java版本,请运行以下命令:
# java -version
成功安装后,您将获得以下信息:
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
配置和设置Zookeeper
下载并解压缩Zookeeper套件从所有三台Ubuntu计算机上的Apache官方存档中获取,如下所示:
$ wget https://www-us.apache.org/dist/zookeeper/stable/zookeeper-3.4.12.tar.gz
$ tar -xzvf zookeeper-3.4.12.tar.gz
编辑bashrc
通过设置以下Zookeeper环境变量为Zookeeper用户提供服务。
export ZOO_LOG_DIR=/var/log/zookeeper
在当前登录会话中获取.bashrc:
$ source ~/.bashrc
现在,创建目录zookeeper
下/var/lib
该文件夹将用作Zookeeper数据目录并创建另一个zookeeper
目录下/var/log
将捕获所有Zookeeper日志的位置。这两个目录所有权都需要更改为zookeeper。
$ sudo mkdir /var/lib/zookeeper ; cd /var/lib ; sudo chown zookeeper:zookeeper zookeeper/
$ sudo mkdir /var/log/zookeeper ; cd /var/log ; sudo chown zookeeper:zookeeper zookeeper/
创建集合的服务器ID。每个Zookeeper服务器中的服务器编号都应唯一myid
集成中的文件,其值应在1到255之间。
在Node1中
$ sudo sh -c "echo '1' > /var/lib/zookeeper/myid"
在Node2中
$ sudo sh -c "echo '2' > /var/lib/zookeeper/myid"
在Node3中
$ sudo sh -c "echo '3' > /var/lib/zookeeper/myid"
现在,转到Zookeeper主目录下的conf文件夹(解压缩/解压缩存档后Zookeeper目录的位置)。
$ cd /home/zookeeper/zookeeper-3.4.13/conf/
zookeeper@node1:~/zookeeper-3.4.13/conf$ ls -lrth
total 16K
-rw-r--r-- 1 zookeeper zookeeper 922 Jun 29 21:04 zoo_sample.cfg
-rw-r--r-- 1 zookeeper zookeeper 535 Jun 29 21:04 configuration.xsl
-rw-r--r-- 1 zookeeper zookeeper 999 Nov 24 18:29 zoo.cfg
-rw-r--r-- 1 zookeeper zookeeper 2.2K Nov 24 19:07 log4j.properties
默认情况下,示例conf文件的名称为zoo_sample.cfg
将存在于conf
目录。您需要用名称复制它zoo.cfg
如下所示,然后编辑新zoo.cfg
如在所有三台Ubuntu计算机上所述。
$ cp zoo_sample.cfg zoo.cfg
$ ls -lrth /home/zookeeper/zookeeper-3.4.13/conf
total 16K
-rw-r--r-- 1 zookeeper zookeeper 922 Jun 29 21:04 zoo_sample.cfg
-rw-r--r-- 1 zookeeper zookeeper 535 Jun 29 21:04 configuration.xsl
-rw-r--r-- 1 zookeeper zookeeper 999 Nov 24 18:29 zoo.cfg
-rw-r--r-- 1 zookeeper zookeeper 2.2K Nov 24 19:07 log4j.properties
$ vim /home/zookeeper/zookeeper-3.4.13/conf/zoo.cfg
dataDir=/var/lib/zookeeper
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
现在,在log4.properties
文件如下。
$ vim /home/zookeeper/zookeeper-3.4.13/conf/log4j.properties
zookeeper.log.dir=/var/log/zookeeper
zookeeper.tracelog.dir=/var/log/zookeeper
log4j.rootLogger=INFO, CONSOLE, ROLLINGFILE
完成配置后zoo.cfg
所有三个节点中的文件,使用以下命令一个接一个地启动所有三个节点中的zookeeper:
$ /home/zookeeper/zookeeper-3.4.13/bin/zkServer.sh start
日志文件将在/var/log/zookeeper
动物园管理员的名字zookeeper.log
,拖尾该文件以查看日志中是否有任何错误。
$ tail -f /var/log/zookeeper/zookeeper.log
验证Zookeeper群集和集成
在三台服务器中的Zookeeper集成中,一台将处于领导者模式,另外两台将处于跟随者模式。您可以通过运行以下命令来检查状态。
$ /home/zookeeper/zookeeper-3.4.13/bin/zkServer.sh status
$ echo stat | nc node1 2181
$ echo mntr | nc node1 2181
$ echo srvr | nc localhost 2181
如果需要检查并查看znode,可以在任何zookeeper节点上使用以下命令进行连接:
$ /home/zookeeper/zookeeper-3.4.13/bin/zkCli.sh -server `hostname -f`:2181
结论
它已成为大规模创建高度可用的分布式系统的首选方法之一。 Zookeeper项目是Apache基金会最成功的项目之一,已获得顶级公司的广泛采用,并带来了与大数据相关的众多好处。
通过提供扎实的基础来实施各种大数据工具,Apache Zookeeper允许公司在大数据世界中平稳运行。它一次提供多种好处的能力使其成为大规模实施的首选应用程序之一。