ubuntu

ubuntu中kafka配置方法

小樊
45
2025-10-17 07:33:25
栏目: 智能运维

Ubuntu环境下Kafka配置完整步骤

1. 准备工作

2. 安装Java环境(Kafka依赖)

Kafka是用Java开发的,需先安装Java Development Kit (JDK)。推荐使用OpenJDK 8(兼容性最好):

sudo apt update
sudo apt install openjdk-8-jdk -y
# 验证安装
java -version

输出应包含openjdk version "1.8.x",表示安装成功。

3. 安装与配置Zookeeper(Kafka依赖)

Kafka通过Zookeeper管理集群元数据(如broker信息、Topic分区等),需先安装Zookeeper:

# 下载Zookeeper(以3.4.6为例)
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
# 解压到/usr/local目录
tar xvf zookeeper-3.4.6.tar.gz
sudo mv zookeeper-3.4.6 /usr/local/zookeeper
# 创建数据目录(存储Zookeeper数据)
sudo mkdir -p /var/lib/zookeeper
sudo chown -R $(whoami):$(whoami) /usr/local/zookeeper /var/lib/zookeeper
# 配置Zookeeper
sudo cat > /usr/local/zookeeper/conf/zoo.cfg << EOF
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
EOF
# 启动Zookeeper
sudo /usr/local/zookeeper/bin/zkServer.sh start
# 验证启动(检查2181端口是否监听)
sudo netstat -tulnp | grep 2181

若输出包含2181/tcp,说明Zookeeper启动成功。

4. 下载与解压Kafka

从Apache官网下载最新稳定版Kafka(以3.5.2为例),解压到指定目录:

# 下载Kafka
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
# 解压到/usr/local目录
tar -xzf kafka_2.12-3.5.2.tgz
sudo mv kafka_2.12-3.5.2 /usr/local/kafka
# 创建日志目录(存储Kafka消息)
sudo mkdir -p /usr/local/kafka/logs
sudo chown -R $(whoami):$(whoami) /usr/local/kafka

此处将Kafka日志目录设置为/usr/local/kafka/logs(替代默认的/tmp/kafka-logs,避免重启后数据丢失)。

5. 配置Kafka核心参数

编辑Kafka的主配置文件server.properties(位于/usr/local/kafka/config/目录),修改以下关键参数:

sudo vi /usr/local/kafka/config/server.properties

核心配置项说明

6. 启动Kafka服务

使用以下命令启动Kafka(前台模式,便于查看日志):

sudo /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties

若需后台运行(推荐),添加-daemon参数:

sudo /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
# 验证启动(检查9092端口是否监听)
sudo netstat -tulnp | grep 9092

若输出包含9092/tcp,说明Kafka启动成功。

7. 测试Kafka功能

7.1 创建Topic

创建一个名为test的Topic(1个分区、1个副本):

sudo /usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
# 验证Topic是否创建成功
sudo /usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

7.2 生产消息

启动一个生产者,向test Topic发送消息:

sudo /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

输入任意消息(如Hello, Kafka on Ubuntu),按Ctrl+C退出。

7.3 消费消息

启动一个消费者,从test Topic接收消息:

sudo /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

应能看到生产者发送的消息,按Ctrl+C退出。

8. 可选配置(优化体验)

8.1 配置环境变量

将Kafka的bin目录添加到系统PATH,方便全局使用Kafka命令:

# 编辑~/.bashrc文件
echo 'export KAFKA_HOME=/usr/local/kafka' >> ~/.bashrc
echo 'export PATH=$PATH:$KAFKA_HOME/bin' >> ~/.bashrc
# 生效配置
source ~/.bashrc
# 验证(无需路径可直接运行)
kafka-topics --version

8.2 设置开机自启

创建systemd服务文件,实现Kafka和Zookeeper开机自动启动:

# 创建Zookeeper服务文件
sudo vi /etc/systemd/system/zookeeper.service

写入以下内容:

[Unit]
Description=Zookeeper service
After=network.target

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

[Install]
WantedBy=multi-user.target
# 创建Kafka服务文件
sudo vi /etc/systemd/system/kafka.service

写入以下内容:

[Unit]
Description=Apache Kafka server (broker)
After=zookeeper.service network.target

[Service]
Type=simple
User=$(whoami)
Group=$(whoami)
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
# 刷新systemd配置并启用服务
sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl enable kafka
# 启动服务
sudo systemctl start zookeeper
sudo systemctl start kafka
# 检查服务状态
sudo systemctl status zookeeper
sudo systemctl status kafka

若状态显示active (running),说明开机自启配置成功。

9. 防火墙配置(可选)

若服务器开启了防火墙(如ufw),需允许Kafka和Zookeeper的端口:

# 允许Zookeeper端口(2181)
sudo ufw allow 2181
# 允许Kafka端口(9092)
sudo ufw allow 9092
# 重新加载防火墙规则
sudo ufw reload

通过以上步骤,即可在Ubuntu环境下完成Kafka的基本配置与测试。生产环境中还需进一步优化(如集群部署、数据备份、安全认证等)。

0
看了该问题的人还看了