Kafka本地集群安装配置

Kafka本地集群安装配置

本地环境

三台centos 7, 免密登录安排上。

master-node:192.168.142.129
node1:192.168.142.130
node2: 192.168.142.131

/etc/hosts

192.168.142.129 master-node
192.168.142.130 node1
192.168.142.131 node2

xsync

#!/bin/bash
 
# 1.判断参数个数
if [ $# -lt 1 ]
	then
    echo Arguements Error!
    exit;
fi
 
# 2 获取文件名称
# 分发非绝对路径的文件需要先进入他的父目录下再执行这个命令,即如果需要分发/home/aaa这个文件或文件夹,则需要先进入到/home目录下,再执行xsync aaa
# 分发绝对路径的文件直接执行/home/aaa即可
fname=$1
fname=${fname%/}
echo fname=$fname
 
# 3 获取绝对路径文件目录
pdir=`cd -P $(dirname $1); pwd`
echo pdir=$pdir
 
# 4.遍历集群所有从机IP(也可以将ip换成主机名,但是要配置好hosts文件,让主机可以正确的通过主机访问到正确的IP)
for host in node1 node2
do
	echo =============== $host ==================
	# 判断输入是否为文件夹,文件夹不需要拼接
	if [[ $fname == ./* ]]
		then 
			fname1=${fname#./}
			rsync -rvl $pdir/$fname1 root@$host:$pdir
		else
			if [[ $fname == /* ]]
				then 
					rsync -rvl $fname root@$host:$pdir
				else
					rsync -rvl $pdir/$fname root@$host:$pdir
			fi
	fi
done
 

安装JDK11

jdk8有问题版本过低。

先升级jdk11

安装ZooKeeper

关闭防火墙,关闭防火墙,关闭防火墙
重要的事情说三遍,不关闭到时问题一大堆。

systemctl stop firewalld

下载安装

# 下载
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
# 解压
tar zxvf apache-zookeeper-3.8.0-bin.tar.gz
mv apache-zookeeper-3.8.0-bin /opt/zookeeper

# 自定义一个环境变量文件/etc/myenv
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
# source 导入一下路径
source /etc/myenv
echo $PATH

修改配置文件

进入/opt/zookeeper/conf目录,复制 zoo_sample.cfg修改为zoo.cfg

cp zoo_sample.cfg zoo.cfg

zoo.cfg配置文件

# 服务器心跳时间,单位为msg
tickTime=2000
# 投票选举新loeader的初始化时间
initLimit=10
# leader与follower心跳检测最大容忍时间,响应超过syncLimit*tickTime, leader认为follower死掉从服务器列表中删除 follower
syncLimit=5
# 数据目录
dataDir=/tmp/zookeeper/data
# 日志目录
dataLogDir=/tmp/zookeeper/log
# 对外服务端口
clientPort=2181

数据目录和日志目录,默认是没有的,需要创建 一下。

mkdir -p /tmp/zookeeper/data
mkdir -p /tmp/zookeeper/log

在数据目录下创建一个myid文件,并写入一个数值,比如0

myid存放的是服务 器的编号。

cd /tmp/zookeeper/data
touch myid
# 写入0
启动zookeeper
zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
基础命令
#启动服务
zkServer.sh start

#停止服务
zkServer.sh stop

#重启服务
zkServer.sh restart

#查看服务状态
zkServer.sh status
集群配置

在3台机器的zoo.cfg文件中添加以下配置:

server.0=192.168.142.129:2888:3888
server.1=192.168.142.130:2888:3888
server.2=192.168.142.131:2888:3888

server.0=master-node:2888:3888
server.1=node1:2888:3888
server.2=node2:2888:3888

server.A = B: C: D。

其中A是一个数字(对应myid文件里的值 ,代表服务器编号)。集群中每台服务器的编号必须唯一。

B代表服务器的IP地址。

C表示服务器与集群中的leader服务器交换信息的端口。

D表示选举服务器相互通信的端口。

如果是集群需要把所有都启动,不然通过不了选举,没有leader

把三个都启动,再通过zkServer.sh status 查看状态

分别有follower和leader

zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

// Mode: leader

#### 集群启动/停止/状态脚本

#! /bin/bash

case $1 in
"start"){
    for i in master-node node1 node2
    do
        echo --------------- zookeeper  $i 启动 ----------------
        ssh $i "/opt/zookeeper/bin/zkServer.sh start"
    done
};;
"stop"){
    for i in master-node node1 node2
    do
        echo --------------- zookeeper   $i 停止 ----------------
        ssh $i "/opt/zookeeper/bin/zkServer.sh stop"
    done
};;
"status"){
    for i in master-node node1 node2
    do
        echo --------------- zookeeper  $i 状态 ----------------
        ssh $i "/opt/zookeeper/bin/zkServer.sh status"
    done
};;
esac

脚本启动:
在这里插入图片描述

/opt/shell/zk.sh status

查看一下启动状态,1个leader,2个follower
在这里插入图片描述

到这里zk集群就搞定收工了。

安装Kafka

下载安装

wget https://downloads.apache.org/kafka/3.3.1/kafka_2.12-3.3.1.tgz

解压到 /opt/kafka

将/opt/kafka添加到变量路径 中

编辑/etc/myenv,添加变量

export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin

### 修改配置文件

修改/opt/kafka/conf/server.properties

主要配置几个参数:

# broker编号
broker.id = 0
# 对外提供的服务入口地址
listeners = PLAINTEXT://node1:9092
# 存放消息日志的地址
log.dirs=/tmp/kafka-logs
# Kafka所需的zookeeper集群地址
zookeeper.connect=192.169.142.129:2181,192.169.142.130:2181,192.169.142.131:2181/kafka

如果是单机,修改以上就可以启动了,

集群模式

集群模式下,需要对每 个单机配置做相应修改,确保集群中每 个broker的broker.id配置参数值不一样,以及listeners配置参数也需要修改为与broker对应的IP地址或者域名,之后就可以各自启动服务。

注意:在启动Kafka服务之前同样需要确保zookeeper.connect参数所配置的ZooKeeper服务已经正确启动。

启动

kafka-server-start.sh config/server.properties &
集群启动脚本
#! /bin/bash

case $1 in
"start"){
    for i in master-node node1 node2
    do
        echo --------------- kafka  $i 启动 ----------------
        ssh $i "/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties"
    done
};;
"stop"){
    for i in master-node node1 node2
    do
        echo --------------- zookeeper   $i 停止 ----------------
        ssh $i "/opt/kafka/bin/kafka-server-stop.sh"
    done
};;
esac

测试

创建一个主题

kafka-topics.sh --create --topic topic-test --bootstrap-server node1:9092 --replication-factor 3 --partitions 4

查看

kafka-topics.sh --bootstrap-server node2:9092 --list

任务一台机器都能查看到刚创建的主题 ,说明集群已经搭建成功 了。

// topic-demo
// topic-test

开启生产者和消费者终端进行测试

开启一个消费者监听topic-demo主题

kafka-console-consumer.sh --bootstrap-server node1:9092 --topic topic-demo
# 如果有消息这里将会接收到

开启一个生产者进行消息传递

kafka-console-producer.sh --broker-list node1:9092 --topic topic-demo
# 在终端输入要传递的消息,输入完成后,消费者将收到这条消息

这里看到传递和收取都正常显示。

到此集群搭建完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值