1. 软件包准备
# 安装JDK 1.8(需自行获取安装包)
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
wget https://archive.apache.org/dist/kafka/3.7.0/kafka_2.13-3.7.0.tgz
2. Java环境配置
tar xf jdk-8u201-linux-x64.tar.gz -C /opt/java
vim /etc/profile.d/java_env.sh
export JAVA_HOME=/opt/java/jdk1.8.0_201
export CLASSPATH=$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile.d/java_env.sh
echo $JAVA_HOME
3. ZooKeeper安装与配置
tar xf apache-zookeeper-3.8.4-bin.tar.gz -C /opt
cd /opt
ln -s apache-zookeeper-3.8.4-bin zookeeper
cd zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper
clientPort=2181
admin.server.port=8888
4. Kafka安装与参数调整
tar xf kafka_2.13-3.7.0.tgz -C /opt
cd /opt
ln -s kafka_2.13-3.7.0 kafka
cd kafka/config
cp server.properties server_bak.properties
vim server.properties
broker.id=0
listeners=INNER://192.168.100.1:9092,OUTER://kafka.example.com:9093
inter.broker.listener.name=INNER
advertised.listeners=INNER://192.168.100.1:9092,OUTER://kafka.example.com:9093
listener.security.protocol.map=INNER:PLAINTEXT,OUTER:PLAINTEXT
log.dirs=/var/lib/kafka
5. 服务启动与权限设置
useradd kafka_user
mkdir -p /var/lib/{kafka,zookeeper}
chown -R kafka_user:kafka_user /var/lib
chown -R kafka_user:kafka_user /opt/kafka
vim /etc/hosts
192.168.100.1 kafka.example.com
# 启动ZooKeeper
su - kafka_user
cd /opt/zookeeper/bin
./zkServer.sh start
./zkServer.sh status
# 启动Kafka
cd /opt/kafka/bin
./kafka-server-start.sh -daemon /opt/kafka/config/server.properties
6. 功能验证
# 本地测试
./kafka-topics.sh --bootstrap-server kafka.example.com:9093 --list
./kafka-topics.sh --bootstrap-server kafka.example.com:9093 --create --replication-factor 1 --partitions 30 --topic example-topic
echo '{"key":"value"}' | ./kafka-console-producer.sh --broker-list kafka.example.com:9093 --topic example-topic
./kafka-console-consumer.sh --bootstrap-server kafka.example.com:9093 --topic example-topic --from-beginning --max-messages 3
# 公网测试
# 配置DNS解析
vim /etc/hosts
47.116.xx.xxx kafka.example.com
# 通过代理测试
echo '{"key1":"value1"}' | ./kafka-console-producer.sh --broker-list kafka.example.com:9093 --topic example-topic
./kafka-console-consumer.sh --bootstrap-server kafka.example.com:9093 --topic example-topic --from-beginning --max-messages 3