安装Zookeeper集群


一、前言

Zookeeper的用途非常广泛,它是分布式协调的最常用组件。

对于学习大数据,最基本的是学习Hadoop,而搭建高可用的Hadoop集群,必然需要首先搭建Zookeeper集群。本文将详细介绍如何搭建一个Zookeeper集群,为搭建Hadoop集群做好基础准备。

二、环境准备

本文将一步一步搭建一个具有3个节点的Zookeeper集群,所有节点已安装Ubuntu 18.04操作系统。

在安装Zookeeper之前,需要做一些环境准备。

1. 设置hostname

首先需要设置3个节点的hostname,比如分别为:bigdata01, bigdata02, bigdata03

vim /etc/hostname

分别登录每个节点,在/etc/hostname中修改hostname为实际的hostname,如bigdata01

2. 创建用户

一般情况下,最好创建一个专用的用户来运行Zookeeper,比如:bigdata

你也可以跳过这一步,直接用root或已有用户来运行Zookeeper

root用户分别登录每个节点,执行命令:

useradd -m bigdata -d /home/bigdata -s /bin/bash

然后设置新用户密码:

passwd bigdata

3. 设置免密登录

接下来,需要配置各个节点之间可以以新创建的用户免密登录,即可以通过ssh key的方式彼此登录。

1)首先,以新创建的用户(如:bigdata)登录到第一个节点(如:bigdata01),执行ssh-keygen生成ssh key

ssh-keygen

2)然后进入/home/bigdata/.ssh目录下,执行ssh-copy-id命令将ssh key分别拷贝到3个节点上:

cd ~/.ssh

ssh-copy-id -i id_rsa.pub bigdata01
ssh-copy-id -i id_rsa.pub bigdata02
ssh-copy-id -i id_rsa.pub bigdata03

3)分别登录另外两个节点,重复以上步骤1)和2)。

4. 安装JDK并配置JAVA_HOME

如果系统中没有安装JDK,需要先安装。

如下命令安装OpenJDK 8

apt-get update
apt-get install openjdk-8-jdk-headless

然后配置JAVA_HOME:

vim /etc/profile

/etc/profile最后加上如下两行:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

保存退出,执行如下命令使JAVA_HOME环境变量生效:

source /etc/profile

所有节点都需要执行以上步骤安装JDK,以及配置JAVA_HOME环境变量。

三、安装Zookeeper集群

1. 下载Zookeeper

Zookeeper官网找到适合版本的下载链接。

bigdata01节点上执行wget命令进行下载:

wget http://mirror.netinch.com/pub/apache/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz

2. 安装Zookeeper

bigdata01节点上创建安装目录:

mkdir -p /opt/software/

将下载的Zookeeper包拷贝到安装目录并解压:

cp apache-zookeeper-3.5.8-bin.tar.gz /opt/software/

解压:

cd /opt/software/
tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz
rm apache-zookeeper-3.5.8-bin.tar.gz
mv apache-zookeeper* zookeeper

3. 配置Zookeeper

Zookeper安装目录下创建datalogs目录

cd /opt/software/zookeeper
mkdir data
mkdir logs

conf目录下创建zoo.cfg配置文件:

cd /opt/software/zookeeper/conf
vim zoo.cfg

zoo.cfg中配置如下内容,各个配置项的说明已在注释中列出:

# tickTime表示服务器之间或客户端与服务器之间心跳的时间间隔,单位为毫秒
tickTime=2000
# follower与leader的初始连接心跳数
initLimit=10
# follower与leader请求和应答的最大心跳数
syncLimit=5
# 快照数据保存目录
dataDir=/opt/software/zookeeper/data
# 日志保存目录
dataLogDir=/opt/software/zookeeper/logs
# 客户端连接端口
clientPort=2181
# 客户端最大连接数,默认为60个
maxClientCnxns=60
# 默认为false,设置成true,zk将监听所有可用ip地址的连接
quorumListenOnAllIPs=false
# 服务器节点配置,格式为:
# server.<myid>=<host>:<leader和follower通信端口>:<选举端口>(observer节点最后加上:observer )
server.1=bigdata01:2888:3888
server.2=bigdata02:2888:3888
server.3=bigdata03:2888:3888

保存退出。

data目录下创建myid文件:

vim /opt/software/zookeeper/data/myid

注意:
myid文件的内容必须与zoo.cfg里的配置保持一致。
例如:对于第一个节点bigdata01,在zoo.cfg里配置为:server.1=bigdata01:2888:3888server.1表示myid1,因此在myid文件中必须配置为1

保存退出。

至此,在第一个节点bigdata01上的配置就完成了。接下来将整个Zookeeper安装目录同步到另外两个节点上去。

bigdata01上执行如下命令:

rsync -az --delete /opt/software/zookeeper bigdata02:/opt/software/
rsync -az --delete /opt/software/zookeeper bigdata03:/opt/software/

如果rsync命令不存在,执行apt-get install rsync先进行安装。

接下来,由于每个节点的myid是不能相同的,因此,还需要修改同步过去的myid文件。分别登录另外两个节点,修改myid文件内容与zoo.cfg里的配置保持一致。也就是bigdata02节点的myid2bigdata03节点的myid3

最后,把整个Zookeeper的安装目录的owner修改为新创建的用户,分别在3个节点上执行命令:

chown -R bigdata:bigdata /opt/software/zookeeper

4. 配置Zookeeper环境变量

分别在每个节点上配置ZOOKEEPER_HOMEPATH环境变量。

vim /etc/profile

添加如下内容:

export ZOOKEEPER_HOME=/opt/software/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile

5. 启动Zookeeper

现在,可以启动Zookeeper了。

分别以用户bigdata登录每个节点,执行命令:

zkServer.sh start

四、验证Zookeeper集群

启动Zookeeper后,可以简单验证一下Zookeeper集群是否正常工作。

在任意节点执行命令:

zkCli.sh -server bigdata01:2181

如果一切正常,会进入Zookeeper的命令行,可以输入ls /查看,结果类似如下:

[zk: bigdata01:2181(CONNECTED) 0] ls /
[zookeeper]

如果出现以上结果,说明Zookeeper是正常工作的。


文章作者: yglong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 yglong !
评论
  目录