在Linux上安装Zookeeper集群(zookeeper-3.5.9)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

记录455

场景在CentOS 7.9操作系统上使用zookeeper-3.5.9版本在三台机器上安装Zookeeper集群。

版本zookeeper-3.5.9CentOS 7.9,Linux kernel-5.4.218。

1.主机规划

目标使用三台主机部署Zookeeper集群。

主机app161IP192.168.19.161端口221812800128501。

主机app162IP192.168.19.162端口221812800128501。

主机app163IP192.168.19.163端口221812800128501。

2.下载zookeeper-3.5.9安装包

下载版本apache-zookeeper-3.5.9-bin.tar.gz

下载地址https://archive.apache.org/dist/zookeeper/

下载命令wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz

解析下载完成后apache-zookeeper-3.5.9.tar.gz包在当前目录。

3.解压zookeeper包到指定目录

3.1解压

命令tar -zxvf /home/apps/software/apache-zookeeper-3.5.9-bin.tar.gz -C /home/opt/zk

解析解压到指定目录/home/opt/zk/apache-zookeeper-3.5.9-bin。

3.2重命名

命令mv /home/opt/zk/apache-zookeeper-3.5.9-bin /home/opt/zk/zookeeper-3.5.9

解析把apache-zookeeper-3.5.9重命名为zookeeper-3.5.9。

4.创建zookeeper的数据和日志目录

数据和日志目录可以放在/home/opt/zk/zookeeper-3.5.9内也可以独立放置。

数据目录命令mkdir -p /home/opt/zk/data

日志目录命令mkdir -p /home/opt/zk/log

解析data目录是存放zookeeper运行数据。log目录存放zookeeper运行日志。

5.修改zookeeper的配置

5.1把zoo_sample.cfg复制并重命名为zoo.cfg

命令cp -r /home/opt/zk/zookeeper-3.5.9/conf/zoo_sample.cfg  /home/opt/zk/zookeeper-3.5.9/conf/zoo.cfg

解析zoo_sample.cfg是官方提供的模板配置用户按需配置就行。

(1)把zoo_sample.cfg复制并重命名为zoo.cfg

5.2修改zoo.cfg配置文件

修改命令vi /home/opt/zk/zookeeper-3.5.9/conf/zoo.cfg

修改内容

#修改数据目录和日志目录
dataDir=/home/opt/zk/data
dataLogDir=/home/opt/zk/log
#修改端口号,默认是2181
clientPort=22181
#zookeeper集群配置
server.1=192.168.19.161:28001:28501
server.2=192.168.19.162:28001:28501
server.3=192.168.19.163:28001:28501

5.3解析集群配置格式

在zoo.cfg文件中的zookeeper集群配置格式说明。

格式: server.A = B:C:D

A: 是一个数字,集群中表示第几号服务器。

B: 服务器IP地址。

C: 是一个端口号用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口。

D: 是一个端口号是在leader挂掉是专门用来进行选举leader所用的端口。

6.把主机app161配置的zookeeper拷贝到其它主机

6.1远程创建目录

脚本名称mkdir_script.sh

脚本内容

#!/bin/bash
for host_name in app162 app163
do
  ssh -t root@${host_name} 'mkdir -p /home/opt/zk/zookeeper-3.5.9/ ;\
   mkdir -p /home/opt/zk/data/ ;\
   mkdir -p /home/opt/zk/log/'
done

执行脚本bash mkdir_script.sh

6.2远程拷贝zookeeper到其它主机

脚本名称scp_script.sh

脚本内容

#!/bin/bash
for host_name in app162 app163
do
  scp -r /home/opt/zk/zookeeper-3.5.9/* root@${host_name}:/home/opt/zk/zookeeper-3.5.9
  scp -r /home/opt/zk/data/* root@${host_name}:/home/opt/zk/data
  scp -r /home/opt/zk/log* root@${host_name}:/home/opt/zk/log
done

执行脚本bash scp_script.sh

7.创建myid文件和写入编号

命令echo '1' > /home/opt/zk/data/myid

解析如果同一台主机部署zookeeper集群多个节点那么myid的值需不一样。

脚本名称create_myid_script.sh

脚本内容

#!/bin/bash

for host_name in app161 app162 app163
do
  if [[ ${host_name} = 'app161' ]] ;then
    ssh -t root@${host_name} " echo '1' > /home/opt/zk/data/myid "
  elif [[ ${host_name} = 'app162' ]] ;then
    ssh -t root@${host_name} " echo '2' > /home/opt/zk/data/myid "
  elif [[ ${host_name} = 'app163' ]] ;then
    ssh -t root@${host_name} " echo '3' > /home/opt/zk/data/myid "
  fi
done

执行脚本bash create_myid_script.sh

解析每台主机的myid编号是不一样的。检测两个字符串是否相等使用“=”同时“=”两边有空格。

8.修改zookeeper目录所有权

在此步骤前zookeeper相关操作使用root用户操作。生产环境一般运行zookeeper使用普通用户修改目录所有权。

脚本名称chown_script.sh

脚本内容

#!/bin/bash
for host_name in app161 app162 app163
do
   ssh -t root@${host_name} 'chown -R learn:learn /home/opt/zk/'
done

执行脚本bash chown_script.sh

解析把/home/opt/zk/目录所有权赋给learn用户。如下

zookeeper主目录/home/opt/zk/zookeeper-3.5.9。

zookeeper数据目录/home/opt/zk/data。

zookeeper日志目录/home/opt/zk/log。

9.启动zookeeper集群

操作用户切换为learn用户su learn

启动zookeeper集群只需启动每个节点zookeeper会自动组成集群。

9.1启动zookeeper集群(逐台启动)

使用启动名到每台主机启动zookeeper就行。

使用用户su learn

操作目录/home/opt/zk/zookeeper-3.5.9/bin

启动命令sh zkServer.sh start

解析每次都登录集群主机挺麻烦可以考虑使用脚本启动。

9.2启动zookeeper集群(使用脚本启动)

脚本名称zk-start_script.sh

脚本内容

#!/bin/bash
for host_name in app161 app162 app163
do
   ssh -t learn@${host_name} 'cd /home/opt/zk/zookeeper-3.5.9/bin/ ;  sh zkServer.sh start '
done

执行脚本sh zk-start_script.sh

日志信息

9.3使用脚本启动zookeeper需修改zkEnv.sh文件

本例中当使用脚本启动zookeeper集群需修改zkEnv.sh文件。

(1)修改主机app161的zkEnv.sh

文件全路径/home/opt/zk/zookeeper-3.5.9/bin/zkEnv.sh

修改内容

JAVA_HOME=/home/apps/module/jdk1.8.0_281

解析在使用脚本远程启动时报错Error: JAVA_HOME is not set and java could not be found in PATH.因此在zkEnv.sh文件指定环境变量。

(2)把修改zkEnv.sh同步到其它主机

脚本名称scp_zkEnv.sh

脚本内容

for host_name in app162 app163
do
  scp -r /home/opt/zk/zookeeper-3.5.9/bin/zkEnv.sh root@${host_name}:/home/opt/zk/zookeeper-3.5.9/bin/zkEnv.sh
done

执行脚本bash scp_zkEnv.sh

10.查看zookeeper集群启动状态

脚本名称zk-status_script.sh

脚本内容

#!/bin/bash

for host_name in app161 app162 app163
do
   echo "查看主机 ${host_name} 启动端口:"
   ssh -t learn@${host_name} ' netstat -tlnp | grep java '
done

执行脚本bash zk-status_script.sh

日志信息

11.使用客户端登录集群

客户端/home/opt/zk/zookeeper-3.5.9/bin/zkCli.sh

连接命令

sh zkCli.sh -timeout 5000 -server 192.168.19.161:22181

sh zkCli.sh -timeout 5000 -server 192.168.19.162:22181

sh zkCli.sh -timeout 5000 -server 192.168.19.163:22181

12.查看zookeeper集群信息

脚本名称zk-cluster.sh

脚本内容

#!/bin/bash
for host_name in app161 app162 app163
do
   echo "查看主机 ${host_name} 在集群角色:"
   ssh -t learn@${host_name} 'cd /home/opt/zk/zookeeper-3.5.9/bin/ ;  sh zkServer.sh status '
done

执行脚本bash zk-cluster.sh

日志信息

以上感谢。

2023年6月11日

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux