在CentOS上稳定运行Kafka需要经过一系列步骤,包括安装必要的软件、配置Kafka和Zookeeper、启动服务以及进行性能调优。以下是一个详细的指南:
首先,确保你的CentOS系统上安装了JDK。你可以从Oracle官网下载并安装JDK 8。
# 卸载旧版本JDK
yum list java-1.8*
yum remove java-1.8*
# 安装JDK 8
yum install java-1.8.0-openjdk-devel
Kafka依赖于Zookeeper,因此需要先安装Zookeeper。
# 下载Zookeeper
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
# 解压Zookeeper
tar -zxvf apache-zookeeper-3.8.1-bin.tar.gz
mv apache-zookeeper-3.8.1-bin zookeeper
# 配置Zookeeper
mkdir -p /data/zookeeper/data
mkdir -p /data/zookeeper/logs
# 修改Zookeeper配置文件
cp conf/zoo_sample.cfg conf/zoo.cfg
vi conf/zoo.cfg
# 修改以下配置
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
# 启动Zookeeper
./bin/zkServer.sh start
下载并解压Kafka安装包。
# 下载Kafka
wget https://downloads.apache.org/kafka/2.1.0/kafka_2.11-2.1.0.tgz
# 解压Kafka
tar -zxvf kafka_2.11-2.1.0.tgz
mv kafka_2.11-2.1.0 kafka
# 创建Kafka日志目录
mkdir -p /data/kafka/logs
编辑Kafka的配置文件server.properties
。
# 复制配置文件
cp kafka/config/server.properties kafka/config/server.properties.bak
# 修改配置文件
vi kafka/config/server.properties
# 修改以下配置
broker.id=0
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://your_server_ip:9092
log.dirs=/data/kafka/logs
zookeeper.connect=localhost:2181
启动Kafka服务并设置为后台运行。
# 启动Kafka
./bin/kafka-server-start.sh -daemon kafka/config/server.properties
使用以下命令检查Kafka是否启动成功。
# 查看Kafka进程
ps -ef | grep kafka
# 创建测试Topic
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
# 生产消息
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
# 消费消息
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
为了确保Kafka在系统重启后自动启动,需要创建systemd服务。
# 创建Kafka服务文件
vi /etc/systemd/system/kafka.service
# 添加以下内容
[Unit]
Description=Apache Kafka server (broker)
After=network.target zookeeper.target
[Service]
Type=simple
User=kafka
Group=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
ExecReload=/bin/kill -HUP $MAINPID
KillMode=none
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
# 重新加载systemd配置
systemctl daemon-reload
# 启用并启动Kafka服务
systemctl enable kafka
systemctl start kafka
为了确保Kafka的高性能和稳定性,可以进行一些性能调优。
batch.size
、linger.ms
、fetch.max.bytes
等参数。通过以上步骤,你可以在CentOS上稳定运行Kafka,并根据需要进行性能调优。