Zookeeper集群部署

Zookeeper集群部署

环境说明

主机列表

IP地址主机名操作系统
192.168.159.130node01debian 9.6
192.168.159.131node02debian 9.6
192.168.159.132node03debian 9.6

JDK

因为Oracle变更了Java的使用授权方式,所以使用OpenJDK

openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

zookeeper

Zookeeper版本:zookeeper-3.4.13

部署过程

下载并解压

在三台主机执行以下操作

$ mkdir ~/Downloads
$ cd ~/Downloads
$ wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz
$ wget http://mirrors.shu.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
$ sudo tar xf openjdk-11.0.1_linux-x64_bin.tar.gz -C /usr/local/
$ sudo tar xf zookeeper-3.4.13.tar.gz -C /opt/
$ sudo mkdir -p /opt/zookeeper-3.4.13/data
$ sudo mkdir -p /opt/zookeeper-3.4.13/logs
$ sudo chown -R 用户名:用户组 /opt/zookeeper-3.4.13/

请用实际的用户名和用户组替换命令中的部分

修改环境变量

在三台主机执行以下操作

修改/etc/profile文件,追加以下内容,并注销后重新登陆

export JAVA_HOME=/usr/local/jdk-11.0.1
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

export ZOOKEEPER_HOME=/opt/zookeeper-3.4.13
export PATH=$ZOOKEEPER_HOME/bin:$PATH

修改hosts

在三台主机执行以下操作

$ sudo vim /etc/hosts

追加以下内容

192.168.159.130	node01
192.168.159.131	node02
192.168.159.132	node03

如果hosts文件中存在127.0.1.1 主机名这样的配置,请删除。

关于127.0.1.1的内容,参见 what does 127.0.1.1 mean ???

修改配置文件

在三台主机执行以下操作

$ cp /opt/zookeeper-3.4.13/conf/zoo_sample.cfg /opt/zookeeper-3.4.13/conf/zoo.cfg 

修改文件内容

$ vim /opt/zookeeper-3.4.13/conf/zoo.cfg 

注释掉以下内容

# dataDir=/tmp/zookeeper

追加如下内容

dataDir=/opt/zookeeper-3.4.13/data
dataLogDir=/opt/zookeeper-3.4.13/logs

server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

修改zookeeper.out日志输出目录

$ vim /opt/zookeeper-3.4.13/bin/zkEnv.sh 

在命令模式输入:56跳转到56行

修改以下内容:

if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="/opt/zookeeper-3.4.13/logs/"    # 修改此行内容
fi

生成myid

在三台主机分别执行以下操作

$ echo 'x' > /opt/zookeeper-3.4.13/data/myid

注意,此处用配置文件中的server.后面的数字替换命令中的x

启动集群

在三台主机执行以下操作

$ zkServer.sh start 

查看集群状态

$ zkServer.sh status

使用zkCli.sh验证

$ zkCli.sh
.
. 此处有日志输出
.
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]

如上,zookeeper集群构建完成。