高新能KAfKA之安装篇(集群搭建)02

Kafka集群搭建(需要有zookeeper集群搭建),我这里准备了三台服务器节点,每台上安装了zookeeper和kafka。zookeeper已经完成了集群搭建。

如果不会搭建zookeeper,请看这里如何搭建并使用zookeeper集群

一、下载安装包

下载地址:Apache Kafka

好了废话不多说,直接下载安装

1. 安装kafka:
  • 下载对应版本,我这里使用3.1.0版本

  •  如果找不着地方下,直接使用wget下载也可
    1、选择所需版本下载

    [root@ywxtdb opt]# wget https://archive.apache.org/dist/kafka/2.1.0/kafka_2.12-2.1.0.tgz


    2、解压安装包

    [root@ywxtdb opt]# tar -xvf kafka_2.12-2.1.0.tgz 

  • 下载后上传到Linux中,这里我使用的是xftp工具

  • 解压,将tgz文件解压到/opt/module/kafka_2.12-3.0.0
# 解压压缩包
[root@node1-zookeeper /]# tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/
kafka_2.12-3.0.0/
kafka_2.12-3.0.0/LICENSE
kafka_2.12-3.0.0/NOTICE
kafka_2.12-3.0.0/bin/
kafka_2.12-3.0.0/bin/kafka-delete-records.sh
kafka_2.12-3.0.0/bin/trogdor.sh
...
  • 查看kafka解压目录(进入/opt/module/kafka_2.12-3.0.0目录)
[root@node1-zookeeper kafka_2.12-3.0.0]# ll
总用量 64
drwxr-xr-x 3 root root  4096 9月   9 2021 bin
drwxr-xr-x 3 root root  4096 9月   9 2021 config
drwxr-xr-x 2 root root  8192 9月  27 18:37 libs
-rw-r--r-- 1 root root 14521 9月   9 2021 LICENSE
drwxr-xr-x 2 root root   262 9月   9 2021 licenses
-rw-r--r-- 1 root root 28184 9月   9 2021 NOTICE
drwxr-xr-x 2 root root    44 9月   9 2021 site-docs
2. 编辑配置文件server.properties
# 编辑配置文件
 vim config/server.properties
 
# 1.代理ID,这里必须是一个唯一的整数值(第一台的节点为0,第二台为1,第三台为2)
broker.id=0

# 2.配置kafka实例监听的地址,如果不配置,可能会出现找不到IP,分区分配等待超时的问题:
advertised.listeners=PLAINTEXT://当前服务器的IP地址:9092

# 3.配置日志目录,kafuka存储数据(不能放在原来的默认目录下,为了方便管理使用,一般放在kafka的解压目录下)
log.dirs=/opt/module/kafka_2.12-3.0.0/datas

# 4.配置连接的zookeeper的主机名或IP地址加上端口号。
# /kafka:指定zookeeper中kafka的根节点,节点名称自由定义,用来统一存放kafka相关信息,如果不配置,kafuka的信息在zookeeper中就会自由打散到zookeeper中各个节点,不利于后续管理
zookeeper.connect=node01_zookeeper:2181,node2-zookeeper:2181,node3-zookeeper:2181/kafka

# 如果没有配置IP映射名称,就直接使用每个服务器节点的IP
zookeeper.connect=192.168.xxx.xxx:2181,192.168.xxx.xxx:2181,192.168.xxx.xxx:2181/kafka
  • 以上配置完成之后,使用xsync将kafka_2.12-3.0.0目录分发到剩余的两个节点
[root@node1-zookeeper module]# xsync kafka_2.12-3.0.0/
==================== node1-zookeeper ====================
root@node1-zookeeper's password: 
root@node1-zookeeper's password: 
sending incremental file list

sent 5,868 bytes  received 24 bytes  1,309.33 bytes/sec
total size is 90,160,028  speedup is 15,302.11
==================== node2-zookeeper ====================
sending incremental file list
kafka_2.12-3.0.0/config/
kafka_2.12-3.0.0/config/server.properties
kafka_2.12-3.0.0/libs/

sent 8,498 bytes  received 113 bytes  5,740.67 bytes/sec
total size is 90,160,028  speedup is 10,470.33
==================== node3-zookeeper ====================
sending incremental file list
kafka_2.12-3.0.0/config/
kafka_2.12-3.0.0/config/server.properties
kafka_2.12-3.0.0/libs/
  • 分发过去之后记得将server.properties文件中的broker.id改掉,第一台中的broker.id为0,第二台为1,第三台为2,注意不要有空格
  • 如果你没有配置xsync脚本,那么直接将/opt/module/kafka_2.12-3.0.0/config/server.properties文件复制到另外两台节点(你可以使用各种文件传输工具,如 scp、rsync 或 sftp,或者使用xftp连接上手动粘贴过去都可以),或者你可以看一下如何使用rsync
  • 如果以上都不会,那就按照上述步骤将剩余两台节点中的kafka配置文件再配置一遍(记得该broker.id)

    image.png

     

    image.png

     
    # 比如使用scp命令
    scp [要复制的文件目录]  [用户名]@[远程IP]:[目标文件目录]
    3.配置kafka环境变量
    [root@node1-zookeeper module]# vim /etc/profile
    
    # 在profile文件最末尾添加一下配置(这里的目录根据自己的实际kafka解压安装来)
    export KAFKA_HOME=/opt/module/kafka_2.12-3.0.0
    export PATH=$PATH:$KAFKA_HOME/bin

    image.png

  • 刷新配置文件
[root@node1-zookeeper module]# source /etc/profile
[root@node1-zookeeper module]# 
4.启动kafka
  • 正常我们启动kafka直接启动脚本即可,但是我们修改该过配置文件,所以启动是会报错
[root@node1-zookeeper kafka_2.12-3.0.0]# bin/kafka-server-start.sh 
USAGE: bin/kafka-server-start.sh [-daemon] server.properties [--override property=value]*
  • 所以要进入kafka目录内,执行以下命令来启动kafka服务器(带着配置文件启动),相当于对默认的配置进行一个覆盖,三台都要启动
# 指定配置文件启动kafka
[root@node1-zookeeper kafka_2.12-3.0.0]# bin/kafka-server-start.sh -daemon config/server.properties 
# 查看进程
[root@node1-zookeeper kafka_2.12-3.0.0]# jps
6419 Kafka
6438 Jps
1644 QuorumPeerMain
  • 注意在启动之前一定要把9092端口开放!!!
# 查看防火墙状态
sudo firewall-cmd --state
# 查看所有开放端口
sudo firewall-cmd --list-ports

# 开放指定端口
sudo firewall-cmd --add-port=端口号/协议
# 例如
sudo firewall-cmd --add-port=9092/tcp

# 永久开放端口
sudo firewall-cmd --add-port=端口号/协议 --permanent
# 移除开放端口
sudo firewall-cmd --remove-prot=端口号/协议
# 永久移除
sudo firewall-cmd --remove-port=端口号/协议 --permanent
5. 编写kafka启停脚本(在生产环境中不可能手动一台一台启动,所以我们编写一个简单的启停止脚本)
# 1.进入/usr/local/bin目录
[root@node1-zookeeper kafka_2.12-3.0.0]# cd /usr/local/bin/
# 2.创建并编辑kafka.sh文件
[root@node1-zookeeper bin]# vim kafka.sh
  • 在kafka.sh文件中添加如下内容
#!/bin/bash

case $1 in
"start")
	for i in node1-zookeeper node2-zookeeper node3-zookeeper
	do
		echo "---------------------- start $i kafka ---------------------"
		ssh $i /opt/module/kafka_2.12-3.0.0/bin/kafka-server-start.sh -daemon /opt/module/kafka_2.12-3.0.0/config/server.properties
	done
;;
"stop")
	for i in node1-zookeeper node2-zookeeper node3-zookeeper
  do
    echo "---------------------- stop $i kafka ---------------------"
    ssh $i /opt/module/kafka_2.12-3.0.0/bin/kafka-server-stop.sh
  done
;;
esac
  • 退出并保存之后,给文件添加可执行权限
[root@node1-zookeeper bin]# chmod 777 kafka.sh 
  • 查看并测试,注意执行脚本的时候可能需要输入用户密码,直接输入自己的用户密码即可, 至于免密登录方式自行百度,这里不在赘述,启动kafka之前请确保自己的zookeeper集群启动并运行正常!
[root@node1-zookeeper bin]# ll
总用量 12
-rwxrwxrwx  1 root root 552 9月  28 00:09 kafka.sh

# 测试停止kafka
[root@node1-zookeeper /]# kafka.sh stop
----------------------stop node1-zookeeper kafka---------------------
----------------------stop node2-zookeeper kafka---------------------
----------------------stop node3-zookeeper kafka---------------------
# 在节点1上查看
[root@node1-zookeeper bin]# jps
6603 Jps
1644 QuorumPeerMain


# 测试启动kafka
[root@node1-zookeeper bin]# kafka.sh start
----------------------start node1-zookeeper kafka---------------------
----------------------start node2-zookeeper kafka---------------------
----------------------start node3-zookeeper kafka---------------------
# 在节点1上查看
[root@node1-zookeeper bin]# jps
6966 Jps
1644 QuorumPeerMain
6941 Kafka
  • 注意一些小问题:
    • 在停止kafka的时候立即查看kafka状态并不会消失,因为kafka停止需要一些时间,所以可以稍微等待一会儿再去查看。
    • 在集群中必须先关闭kafka,等待kafka关闭结束后才能继续关闭zookeeper,如果还有kafka没有关掉,就将zookeeper停止,那么此时kafka进程将永远无法关闭,只能使用kill将其进程杀掉,因为在zookeeper存储着kafka的信息,在kafka停止前,会先跟zookeeper通信查看kafka状态,但是此时zookeeper已经关闭,无法获取状态,所以就无法关闭。

示例:查看一下zookeeper中保存的kafka信息

至此,kafka集群搭建结束,下一章将介绍kafka的相关操作和Java API的使用等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值