当前位置:   article > 正文

Kafka 实战 - Linux部署Kafka集群

linux部署kafka集群

部署一个 Apache Kafka 集群在 Linux 环境中通常涉及以下几个关键步骤。这里以 CentOS 7 为例,假设您已经准备好了多台 Linux 服务器(至少三台以保证高可用性),并且已经安装了必要的依赖(如 Java)。以下是详细的部署流程:

1. 准备环境

  • 操作系统:确保所有节点的操作系统均为 CentOS 7 或类似版本,并保持系统更新。
  • Java:安装 JDK(推荐使用 OpenJDK 或 Oracle JDK),确保版本与 Kafka 兼容。例如,通过以下命令安装 OpenJDK:
sudo yum install java-1.8.0-openjdk-devel
  • 1
  • 防火墙:开启所需端口(如 ZooKeeper 的 2181 端口和 Kafka 的 9092 端口),或者配置防火墙规则允许相应通信。
sudo firewall-cmd --permanent --add-port=2181/tcp
sudo firewall-cmd --permanent --add-port=9092/tcp
sudo firewall-cmd --reload
  • 1
  • 2
  • 3

2. 安装 ZooKeeper 集群

Kafka 通常依赖 ZooKeeper 存储集群元数据。按照以下步骤部署 ZooKeeper 集群:

wget https://downloads.apache.org/zookeeper/stable/apache-zookeeper-<version>-bin.tar.gz
tar xzf apache-zookeeper-<version>-bin.tar.gz
mv apache-zookeeper-<version>-bin /usr/local/zookeeper
  • 1
  • 2
  • 3
  • 配置 ZooKeeper:编辑 /usr/local/zookeeper/conf/zoo.cfg 文件,设置如下内容:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/lib/zookeeper
clientPort=2181

# 添加集群节点信息
server.1=<node1_ip>:2888:3888
server.2=<node2_ip>:2888:3888
server.3=<node3_ip>:2888:3888
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 创建 myid 文件:在每个节点的 dataDir 目录下创建一个名为 myid 的文件,内容分别为 123,对应 zoo.cfg 中的 server.X
echo 1 > /var/lib/zookeeper/myid
  • 1
  • 启动 ZooKeeper:在每个节点上启动 ZooKeeper 服务。
cd /usr/local/zookeeper/bin
./zkServer.sh start
  • 1
  • 2

3. 安装 Kafka 集群

wget https://downloads.apache.org/kafka/<version>/kafka_<scala_version>-<version>.tgz
tar xzf kafka_<scala_version>-<version>.tgz
mv kafka_<scala_version>-<version> /usr/local/kafka
  • 1
  • 2
  • 3
  • 配置 Kafka:编辑 /usr/local/kafka/config/server.properties 文件,设置如下内容:
broker.id=<unique_broker_id>
listeners=PLAINTEXT://:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/var/log/kafka
zookeeper.connect=<node1_ip>:2181,<node2_ip>:2181,<node3_ip>:2181
group.initial.rebalance.delay.ms=0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

确保为每个 Kafka 节点分配一个唯一的 broker.id

  • 创建日志目录:在每个节点上创建 Kafka 日志目录。
mkdir -p /var/log/kafka
chown -R kafka:kafka /var/log/kafka
  • 1
  • 2
  • 启动 Kafka:在每个节点上启动 Kafka 服务。
cd /usr/local/kafka/bin
./kafka-server-start.sh ../config/server.properties &
  • 1
  • 2

4. 验证集群

  • 创建测试主题:在任意一个 Kafka 节点上创建一个测试主题。
./kafka-topics.sh --create --bootstrap-server <any_node_ip>:9092 --replication-factor 3 --partitions 3 --topic test-topic
  • 1
  • 验证主题分布:检查主题在集群中的分布情况。
./kafka-topics.sh --describe --bootstrap-server <any_node_ip>:9092 --topic test-topic
  • 1
  • 发布与消费消息:在一台服务器上发布消息,另一台服务器上消费消息,验证消息传递正常。
# 发布消息
./kafka-console-producer.sh --bootstrap-server <any_node_ip>:9092 --topic test-topic

# 在另一个终端窗口中消费消息
./kafka-console-consumer.sh --bootstrap-server <another_node_ip>:9092 --topic test-topic --from-beginning
  • 1
  • 2
  • 3
  • 4
  • 5

至此,您已在 Linux 环境中成功部署了一个基于 ZooKeeper 的 Kafka 集群,并进行了初步的验证。在实际生产环境中,还需要考虑更多因素,如配置文件的持久化、服务自动启动、日志管理、监控报警、安全设置(如 SASL 或 SSL 加密)等。如果您计划使用 Kafka 3.5.1 及以上版本,可以考虑使用内置的 KRaft 模式替代 ZooKeeper 进行集群部署。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/724410
推荐阅读
相关标签
  

闽ICP备14008679号