Kafka 集群搭建过程

前言

跟着尚硅谷海哥文档搭建的Kafka集群环境,在此记录一下,侵删

注意:博主在服务器上搭建环境的时候使用的是一个服务器,所以这篇博客可能会出现一些xsync分发到其他服务器时候的错误,如果你在搭建的过程中出现了错误,欢迎评论来访,我们一起解决。

准备工作

准备三台服务器:hadoop102,hadoop103,hadoop104,在opt文件下先创建两个文件modulesoftware

Hadoop 部分(Hadoop如果不使用的话,可以不用安装Hadoop,但是在此阶段的环境搭建还要进行)

JDK的安装

1、用XShell传输工具将JDK导入到 opt 目录下的 software 文件夹下面

2、在software目录下解压JDK到/opt/module目录下

bash 复制代码
[root@hadoop102 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module

3、配置JDK环境变量

新建/etc/profile.d/my_env.sh文件

bash 复制代码
[root@hadoop102 /]# sudo vim /etc/profile.d/my_env.sh

添加一下内容,然后保存后退出

bash 复制代码
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

source一下/etc/profile文件,让新的环境变量PATH生效

bash 复制代码
[root@hadoop102 /]# source /etc/profile

4、测试JDK是否安装成功

bash 复制代码
[root@hadoop102 /]# java -version

看到以下结果,代表Java安装成功

bash 复制代码
java version "1.8.0_212"

集群分发脚本:xsync

1、在/usr/bin中添加脚本

bash 复制代码
[root@hadoop102 /]# cd /usr/bin
[root@hadoop102 bin]# vim xsync

2、在该文件中编写以下代码

bash 复制代码
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
 echo Not Enough Arguement!
 exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
 echo ==================== $host ====================
 #3. 遍历所有目录,挨个发送
 for file in $@
 do
 #4. 判断文件是否存在
 if [ -e $file ]
 then
 #5. 获取父目录
 pdir=$(cd -P $(dirname $file); pwd)
 #6. 获取当前文件的名称
 fname=$(basename $file)
 ssh $host "mkdir -p $pdir"
 rsync -av $pdir/$fname $host:$pdir
 else
 echo $file does not exists!
 fi
 done
done

3、修改脚本 xsync 执行权限

bash 复制代码
[root@hadoop102 bin]# chmod +x xsync

4、同步jdk1.8.0_212到其他服务器

bash 复制代码
[root@hadoop102 /]# xsync jdk1.8.0_212

5、同步环境变量

bash 复制代码
[root@hadoop102 /]# sudo xsync /etc/profile.d/my_env.sh

6、在各自的服务器让环境变量生效

bash 复制代码
[root@hadoop102 /]# source /etc/profile

查看服务器Java进程脚本:jpsall

1、在/usr/bin中添加脚本

bash 复制代码
[root@hadoop102 /]# cd /usr/bin
[root@hadoop102 bin]# vim jpsall

2、输入以下内容,然后保存退出

bash 复制代码
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
 echo =============== $host ===============
 ssh $host jps
done

3、赋予脚本执行权限

bash 复制代码
[root@hadoop102 bin]# chmod +x jpsall

4、分发 jpsall 脚本,保证其在三台服务器上都可以使用

bash 复制代码
[root@hadoop102 /]# xsync /usr/bin

Zookeeper 部分

Zookeeper 本地安装

1、用XShell传输工具将Zookeeper导入到 opt 目录下的 software 文件夹下面

2、在software目录下解压JDK到/opt/module目录下

bash 复制代码
[root@hadoop102 software]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module

3、修改名称

bash 复制代码
[root@hadoop102 module]# mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7

4、在/opt/module/zookeeper-3.5.7/这个目录下创建 zkData

bash 复制代码
[root@hadoop102 zookeeper-3.5.7]# mkdir zkData

5、在/opt/module/zookeeper-3.5.7/zkData 目录下创建一个 myid 的文件

bash 复制代码
[root@hadoop102 zkData]# vim myid

在文件中添加与server对应的编号,如hadoop102中填写2(上下不要用空行,左右不要有空格)

bash 复制代码
2

6、分发到其他服务器上

bash 复制代码
[root@hadoop102 /]# xsync zookeeper-3.5.7

并分别在 hadoop103、hadoop104上修改myid文件中的内容为3、4

7、将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg

bash 复制代码
[root@hadoop102 conf]# mv zoo_sample.cfg zoo.cfg

8、打开zoo.cfg文件,修改 dataDir 路径

bash 复制代码
[root@hadoop102 conf]# vim zoo.cfg
bash 复制代码
# 修改数据存储路径配置
dataDir=/opt/module/zookeeper-3.5.7/zkData
# 增加如下配置
#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

9、同步zoo.cfg配置文件

bash 复制代码
[root@hadoop102 conf]# xsync zoo.cfg

10、分别启动Zookeeper

bash 复制代码
[root@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start
[root@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start
[root@hadoop104 zookeeper-3.5.7]$ bin/zkServer.sh start

11、查看状态

bash 复制代码
[root@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh status
[root@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh status
[root@hadoop104 zookeeper-3.5.7]$ bin/zkServer.sh status

ZK集群启动停止脚本:zk.sh

1、在/usr/bin中添加脚本

bash 复制代码
[root@hadoop102 bin]$ vim zk.sh

在脚本中编写如下内容

bash 复制代码
#!/bin/bash

case $1 in
"start"){
   for i in VM-16-14-centos
   do
      echo ---------- zookeeper $i 启动 ------------
      ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
   done
};;
"stop"){
   for i in VM-16-14-centos
   do
      echo ---------- zookeeper $i 停止 ------------ 
      ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
   done
};;
"status"){
   for i in VM-16-14-centos
   do
      echo ---------- zookeeper $i 状态 ------------ 
      ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
   done
};;
esac

2、增加脚本执行权限

bash 复制代码
[root@hadoop102 bin]$ chmod u+x zk.sh

3、Zookeeper 集群启动脚本

bash 复制代码
[root@hadoop102 /]$ zk.sh start

4、Zookeeper 集群停止脚本

bash 复制代码
[root@hadoop102 /]$ zk.sh stop

6、同步脚本

bash 复制代码
[root@hadoop102 /]# xsync /usr/bin

Kafka 部分

Kafka 安装

1、用XShell传输工具将Zookeeper导入到 opt 目录下的 software 文件夹下面

2、在software目录下解压JDK到/opt/module目录下

bash 复制代码
[root@hadoop102 software]# tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module

3、修改解压的名称

bash 复制代码
[root@hadoop102 module]# mv kafka_2.12-3.0.0/ kafka

4、进入到/opt/module/kafka 目录,修改配置文件

bash 复制代码
[root@hadoop102 kafka]$ cd config/
[root@hadoop102 config]$ vim server.properties

5、修改 dataDir 路径

bash 复制代码
# broker 的全局唯一编号,不能重复,只能是数字。
broker.id=0

# kafka 运行日志(数据)存放的路径,路径不需要提前创建,kafka 自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/opt/module/kafka/datas

# 增加以下内容
# 配置连接 Zookeeper 集群地址(在 zk 根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

6、分发安装包到其他服务器

bash 复制代码
[root@hadoop102 module]$ xsync kafka/

7、分别在 hadoop103 和 hadoop104 上修改配置文件/opt/module/kafka/config/server.properties 中的 broker.id=1、broker.id=2(注:broker.id 不得重复,整个集群中唯一。)

bash 复制代码
[root@hadoop103 module]$ vim kafka/config/server.properties
# 修改:
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
[root@hadoop104 module]$ vim kafka/config/server.properties
# 修改:
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2

8、在/etc/profile.d/my_env.sh 文件中增加 kafka 环境变量配置

bash 复制代码
[root@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh

增加如下内容:

bash 复制代码
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

9、source一下/etc/profile文件,让新的环境变量PATH生效

bash 复制代码
[root@hadoop102 /]# source /etc/profile

10、分发环境变量文件到其他节点,并 source。

bash 复制代码
[root@hadoop102 /]# sudo xsync /etc/profile.d/my_env.sh
[root@hadoop103 module]$ source /etc/profile
[root@hadoop104 module]$ source /etc/profile

11、先启动Zookeeper集群,在启动Kafka

bash 复制代码
[root@hadoop102 kafka]$ zk.sh start 

12、依次在 hadoop102、hadoop103、hadoop104上启动Kafka

bash 复制代码
[root@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[root@hadoop103 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[root@hadoop104 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties

13、关闭集群

bash 复制代码
[root@hadoop102 kafka]$ bin/kafka-server-stop.sh 
[root@hadoop103 kafka]$ bin/kafka-server-stop.sh 
[root@hadoop104 kafka]$ bin/kafka-server-stop.sh 

Kafka集群启动停止脚本:kf.sh

1、在/usr/bin中添加脚本

bash 复制代码
[root@hadoop102 bin]$ vim zk.sh

在脚本中编写以下内容

bash 复制代码
#! /bin/bash
case $1 in
"start"){
 for i in hadoop102 hadoop103 hadoop104
 do
 echo " --------启动 $i Kafka-------"
 ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
 done
};;
"stop"){
 for i in hadoop102 hadoop103 hadoop104
 do
 echo " --------停止 $i Kafka-------"
 ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh "
 done
};;
esac

2、增加脚本执行权限

bash 复制代码
[root@hadoop102 bin]$ chmod u+x kf.sh

3、Kafka 集群启动脚本

bash 复制代码
[root@hadoop102 /]$ kf.sh start 

4、Kafka 集群停止脚本

bash 复制代码
[root@hadoop102 /]$ kf.sh stop

注意:停止 Kafka 集群时,一定要等 Kafka 所有节点进程全部停止后再停止 Zookeeper 集群。因为 Zookeeper 集群当中记录着 Kafka 集群相关信息,Zookeeper 集群一旦先停止, Kafka 集群就没有办法再获取停止进程的信息,只能手动杀死 Kafka 进程了。

总结

以上就是博主总结的 Kafka 搭建的过程了,在此过程中并没有使用SSL免密登录,每次执行脚本的时候需要输入服务器的登录密码,有点麻烦,如果想要实现SSL免密登录,可以看尚硅谷海哥的hadoop视频:尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放

相关推荐
山沐与山2 小时前
【MQ】Kafka与RocketMQ深度对比
分布式·kafka·rocketmq
yumgpkpm3 小时前
Cloudera CDP7、CDH5、CDH6 在华为鲲鹏 ARM 麒麟KylinOS做到无缝切换平缓迁移过程
大数据·arm开发·华为·flink·spark·kafka·cloudera
树下水月4 小时前
Easyoole 使用rdkafka 进行kafka的创建topic创建 删除 以及数据发布 订阅
分布式·kafka
Cat God 0074 小时前
基于Docker搭建kafka集群
docker·容器·kafka
Cat God 0074 小时前
基于 Docker 部署 Kafka(KRaft + SASL/PLAIN 认证)
docker·容器·kafka
KD8 小时前
设计模式——责任链模式实战,优雅处理Kafka消息
后端·设计模式·kafka
原神启动121 小时前
Kafka详解
分布式·kafka
一只懒鱼a1 天前
搭建kafka集群(安装包 + docker方式)
运维·容器·kafka
青春不流名1 天前
如何在Kafka中使用SSL/TLS证书认证
分布式·kafka·ssl
青春不流名1 天前
Kafka 的认证机制
kafka