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

记录:455

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

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

1.主机规划

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

主机app161;IP:192.168.19.161;端口:22181,28001,28501。

主机app162;IP:192.168.19.162;端口:22181,28001,28501。

主机app163;IP:192.168.19.163;端口:22181,28001,28501。

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日

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值