如何在Ubuntu 18.04中安装和配置zookeeper

Zookeeper 是一个集中式服务,用于维护配置信息、命名、提供分布式同步、提供组服务。
分布式应用程序以某种形式使用所有这些类型的服务。

配置zookeeper主机并添加zookeeper用户

在安装必要的Zookeeper软件包之前,我们将在所有Ubuntu节点上配置主机文件。
之后,我们将在所有三个节点上创建 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文件并进行以下更改:

192.168.1.102 node1
192.168.1.103 node2
192.168.1.105 node3

在主机文件中使用上述详细信息修改后,请检查所有节点之间的ping连接。

现在,使用命令创建新的zookeeper用户和组:

# adduser zookeeper

安装和配置Oracle JDK

有关更多信息,请查阅如何在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是否已成功配置了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服务,您应该在称为集成的集群中部署Zookeeper。只要大多数合奏者都在,这项服务就可以使用。因为Zookeeper需要多数,所以最好使用奇数台机器。例如,有了四台机器,Zookeeper只能处理一台机器的故障;如果两台机器出现故障,其余两台机器不构成多数。然而,有了五台机器,Zookeeper可以处理两台机器的故障。
作为Zookeeper体系结构一部分的每一个组件都在下面进行了解释。

  • 客户端–客户机是分布式应用程序集群中的一个节点,从服务器访问信息。在特定的时间间隔内,每个客户端向服务器发送一条消息,让服务器知道客户端处于活动状态。同样,当客户端连接时,服务器发送确认。如果连接的服务器没有响应,客户端会自动将消息重定向到另一台服务器。
  • 服务器–服务器是Zookeeper集合中的一个节点,为客户端提供所有服务。向客户端发出确认,通知服务器处于活动状态。
  • Leader–服务器节点,在任何连接的节点出现故障时执行自动恢复。服务启动时选举领导人。
  • Follower–遵循leader指令的服务器节点。

验证 Zookeeper Cluster 和 Ensemble

在 Zookeeper ensemble 中的三台服务器中,一台将处于leader模式,另外两台将处于follower模式。 您可以通过运行以下命令来检查状态。

$ /home/zookeeper/zookeeper-3.4.13/bin/zkServer.sh status

zookeeper服务状态检查。

$ echo stat | nc node1 2181

列出服务器和连接客户端的简要详细信息。

$ echo mntr | nc node1 2181

Zookeeper 集群健康监控变量列表。

$ echo srvr | nc localhost 2181

如果您需要检查和查看 znode,您可以在任何 Zookeeper 节点上使用以下命令进行连接:

$ /home/zookeeper/zookeeper-3.4.13/bin/zkCli.sh -server `hostname -f`:2181

安装和配置zookeeper

在所有三种Ubuntu机器中从官方Apache档案下载ZooKeeper包并进行解压缩:

$ 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

source一下,使环境变量在当前会话中生效。

$ source ~/.bashrc

现在,在 /var/lib文件夹下创建目录 zookeeper作为 Zookeeper 数据目录,并在 /var/log下创建另一个 zookeeper目录,所有 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服务器在ensemble内的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

默认情况下,一个名为“zoo_sample.cfg”的示例 conf 文件将出现在“conf”目录中。 您需要制作一个名为“zoo.cfg”的副本,如下所示,并按照所有三台 Ubuntu 机器的描述编辑新的“zoo.cfg”。

$ 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

zookeeper配置更改。

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

日志文件将在名为 zookeeper.log的 zookeeper 的 /var/log/zookeeper中创建,尾文件以查看任何错误的日志。

$ tail -f /var/log/zookeeper/zookeeper.log
日期:2020-07-07 20:55:21 来源:oir作者:oir