配置Ubuntu Kafka以确保安全涉及多个步骤,包括安装必要的软件、配置环境变量、设置认证和加密、以及进行一些高级优化。以下是一个详细的指南:
首先,确保你的系统上安装了Java和Zookeeper。
sudo apt update
sudo apt install openjdk-8-jdk
java -version
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.15/zookeeper-3.4.15.tar.gz
tar -xzf zookeeper-3.4.15.tar.gz
sudo mv zookeeper-3.4.15 /usr/local/zookeeper
配置并启动Zookeeper:
sudo cp /usr/local/zookeeper/conf/zoo.cfg /usr/local/zookeeper/conf/zoo.cfg.samples
sudo vi /usr/local/zookeeper/conf/zoo.cfg
# 编辑zoo.cfg文件中的配置,例如:
tickTime=2000
dataDir=/usr/local/zookeeper/data
clientPort=2181
sudo /usr/local/zookeeper/bin/zkServer.sh start
下载并解压Kafka:
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
tar -xzf kafka_2.12-3.5.2.tgz
sudo mv kafka_2.12-3.5.2 /usr/local/kafka
server.properties
文件sudo vi /usr/local/kafka/config/server.properties
主要修改以下几项配置:
broker.id=0
listeners=SASL_SSL://your_server_ip:9093
log.dirs=/usr/local/kafka/data
zookeeper.connect=localhost:2181
# SSL配置
security.protocol=SSL
ssl.keystore.location=/path/to/keystore.jks
ssl.keystore.password=your_keystore_password
ssl.key.password=your_key_password
ssl.truststore.location=/path/to/truststore.jks
ssl.truststore.password=your_truststore_password
在Kafka的配置目录下创建kafka_server_jaas.conf
文件:
sudo vi /usr/local/kafka/conf/kafka_server_jaas.conf
添加以下内容:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
}
创建kafka-start.sh
脚本并添加以下内容:
#!/bin/bash
# Start Zookeeper
/usr/local/zookeeper/bin/zookeeper-server-start.sh /usr/local/zookeeper/config/zoo.cfg &
sleep 3
# Start Kafka
/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &
赋予脚本执行权限:
chmod +x /usr/local/kafka/bin/kafka-start.sh
/usr/local/kafka/bin/kafka-start.sh
sudo /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
确保打开Kafka使用的端口,例如9093:
sudo ufw allow 9093
调整num.network.threads
和num.io.threads
参数。
配置产生审计日志,记录关键操作和变更。
通过以上步骤,你可以在Ubuntu上成功配置并优化Kafka,确保其安全性。