Kafka集群环境搭建

前言

在搭建 kakfa 集群环境时,可以直接使用 kafka 源码包中 zookeeper 作为注册中心,也可以自行下载 zookeeper 源码包搭建一套单独的 zookeeper 集群。zookeeper 作为分布式注册中心,也建议作为公共服务单独搭建和部署。

源码包:

名称版本官网地址
jdkjdk-8u341-linux-x64.tar.gzhttps://www.oracle.com/java/technologies/downloads/#java8
zookeeperapache-zookeeper-3.8.0-bin.tar.gzhttps://zookeeper.apache.org/releases.html
kafkakafka_2.13-3.2.1.tgzhttps://kafka.apache.org/downloads

将所需源码包下载好后,上传到每台主机中 /usr/local/src 目录,版本可以根据自己需要进行选择。
注:kafka_2.13-3.2.1.tgz 压缩包名中的 2.13 代表 Scala 版本号,3.2.1代表 kafka 版本号。

 

一、主机规划

主机名ip操作系统
node110.0.0.21centos7.9
node210.0.0.22centos7.9
node310.0.0.23centos7.9

以下所有操作在每台主机上都执行,为避免过多重复内容只展示 10.0.0.21 一台主机的操作,在其他机器上执行时注意替换对应的编号。

修改主机名

hostnamectl set-hostname node1

修改host文件

cat >> /etc/hosts << EOF
10.0.0.21 node1
10.0.0.22 node2
10.0.0.23 node3
EOF

关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

 

二、安装java

解压压缩包

cd /usr/local/src/
tar -zxvf jdk-8u341-linux-x64.tar.gz
mv jdk1.8.0_341 ../jdk

设置 java 环境变量

vim /etc/profile

在 /etc/profile 文件末尾写入如下内容:

export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

更新环境变量

source /etc/profile

验证 java 是否安装成功

java -version

 

三、安装zookeeper

解压压缩包

cd /usr/local/src/
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz
mv apache-zookeeper-3.8.0-bin ../zookeeper

创建数据目录

mkdir -p /data/zookeeper

创建 myid 文件
myid 文件中保存 zookeeper 节点的 id,每个节点保证不同,操作其他机器时注意修改,如:node2 则对应写入 “2”。

echo "1" >> /data/zookeeper/myid

修改 zookeeper 配置

cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

修改后的配置文件如下:

# 最小单位时间,用于丈量心跳和超时时间,单位:ms
tickTime=2000

# follower 节点连接 leader 节点的 tick 数,以 tickTime 为单位判断是否超时
initLimit=10

# follower 节点同步 leader 节点的 tick 数,以 tickTime 为单位判断是否超时
syncLimit=5

# 数据目录
dataDir=/data/zookeeper

# 接受客户端请求端口
clientPort=2181

# 节点列表
# server.序号 对应 myid 中值
# 端口 2888 用于 follower 连接 leader
# 端口 3888 用于 leader  选举
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

启动 zookeeper

cd /usr/local/zookeeper
bin/zkServer.sh start

查看 zookeeper 状态

bin/zkServer.sh status

看到如下输出表示启动成功:

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

Mode: leader 表示当前节点为 leader;
Mode: follower 表示当前节点为 follower;

注册 zookeeper 为 linux 系统服务

vim /etc/systemd/system/zookeeper.service

写入以下内容:

[Unit]
Description=zookeeper
After=network.target

[Service]
Type=forking
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/jdk/bin"
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
ExecReload=/usr/local/zookeeper/bin/zkServer.sh restart
Restart=on-failure

[Install]
WantedBy=multi-user.target

zookeeper 开机自启动

systemctl enable zookeeper

 

四、安装kafka

解压压缩包

cd /usr/local/src/
tar -zxvf kafka_2.13-3.2.1.tgz
mv kafka_2.13-3.2.1 ../kafka

创建数据目录

mkdir /data/kafka-logs

修改 kafka 配置

cd /usr/local/kafka/config
vim server.properties

需要修改的参数:

# 节点 id,整个集群中必须保证唯一,其他节点注意修改此值,如:node2 中 broker.id 改为 1
broker.id=0

# 数据目录,kafka 中日志即数据
log.dirs=/data/kafka-logs

# zookeeper 节点
zookeeper.connect=node1:2181,node2:2181,node3:2181

启动 kafka

bin/kafka-server-start.sh -daemon config/server.properties

验证 kafka 集群是否正常

# 创建主题
bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic test --partitions 3 --replication-factor 3

# 查看主题详情
bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test

看到如下输出表示集群正常工作:

Topic: test	TopicId: qOy41xkZQoGAzynPbgFuMg	PartitionCount: 3	ReplicationFactor: 3	Configs: segment.bytes=1073741824,retention.bytes=10737418240
	Topic: test	Partition: 0	Leader: 1	Replicas: 1,0,2	Isr: 1,0,2
	Topic: test	Partition: 1	Leader: 0	Replicas: 0,2,1	Isr: 0,2,1
	Topic: test	Partition: 2	Leader: 2	Replicas: 2,1,0	Isr: 2,1,0

注册 kafka 为 linux 系统服务

vim /etc/systemd/system/kafka.service

写入以下内容:

[Unit]
Description=kafka
After=network.target zookeeper.service

[Service]
Type=simple
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/jdk/bin"
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

kafka 开机自启动

systemctl enable kafka
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值