主机名称 主机IP 角色 node.id
KAFKA001 10.999.888.54 broker,controller 1
KAFKA002 10.999.888.233 broker, controller 2
KAFKA003 10.999.888.56 broker, controller 3
KAFKA004 10.999.888.170 broker 4
sudo hostnamectl set-hostname KAFKA001
sudo hostnamectl set-hostname KAFKA002
sudo hostnamectl set-hostname KAFKA003
sudo hostnamectl set-hostname KAFKA004
#vim /etc/hosts
10.999.888.54 KAFKA001
10.999.888.233 KAFKA002
10.999.888.56 KAFKA003
10.999.888.170 KAFKA004
略。。。
如果不配置,则会报以下错误:
/opt/softwares/kafka_2.12-3.2.0/bin/kafka-run-class.sh: line 342: exec: java
原因是:Kafka的默认/usr/bin/java
路径与我们实际的$JAVA_HOME/bin/java
路径不一致导致的
配置命令:
sudo rm -fr /usr/bin/java
sudo ln -s /opt/softwares/jdk-11.0.16.1/bin/java /usr/bin/java
sudo tar –zxvf kafka_2.12-3.2.0.tgz –C /opt/softwares
并修改权限:
sudo chown user:user -R jdk-11.0.16.1
sudo chown user:user -R kafka_2.12-3.2.0
先在/data目录下创建data文件夹和logs文件夹
sudo mkdir -p /data/kafka/data
sudo mkdir -p /data/kafka/logs
修改文件权限:
sudo chmod 777 -R /data
之后配置server.properties文件
vim /opt/softwares/kafka_2.12-3.2.0/config/kraft/server.properties
#kafka的角色(controller相当于主机、broker节点相当于从机,主机类似zk功能)
process.roles=broker, controller
#节点ID(不同节点配置不同)
node.id=1
#controller服务协议别名
controller.listener.names=CONTROLLER
#全Controller列表
controller.quorum.voters=1@KAFKA001:9093
#不同服务器绑定的端口
listeners=PLAINTEXT://KAFKA001:19092,CONTROLLER://KAFKA001:9093
#broker服务协议别名
inter.broker.listener.name=PLAINTEXT
#broker对外暴露的地址(不同节点配置不同)
advertised.Listeners=PLAINTEXT://KAFKA001:19092
#协议别名到安全协议的映射
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
#kafka数据存储目录
log.dirs=/opt/softwares/kafka_2.12-3.2.0/data
#不允许自动创建topic,只通过命令创建
auto.create.topics.enable=false
delete.topic.enable=true
#kafka的角色(controller相当于主机、broker节点相当于从机,主机类似zk功能)
process.roles=broker, controller
#节点ID(不同节点配置不同)
node.id=2
#controller服务协议别名
controller.listener.names=CONTROLLER
#全Controller列表
controller.quorum.voters=1@KAFKA001:9093,2@KAFKA002:9093
#不同服务器绑定的端口
listeners=PLAINTEXT://KAFKA002:19092,CONTROLLER://KAFKA002:9093
#broker服务协议别名
inter.broker.listener.name=PLAINTEXT
#broker对外暴露的地址(不同节点配置不同)
advertised.Listeners=PLAINTEXT://KAFKA002:19092
#协议别名到安全协议的映射
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
#kafka数据存储目录
log.dirs=/opt/softwares/kafka_2.12-3.2.0/data
#不允许自动创建topic,只通过命令创建
auto.create.topics.enable=false
delete.topic.enable=true
#kafka的角色(controller相当于主机、broker节点相当于从机,主机类似zk功能)
process.roles=broker, controller
#节点ID(不同节点配置不同)
node.id=3
#controller服务协议别名
controller.listener.names=CONTROLLER
#全Controller列表
controller.quorum.voters=1@KAFKA001:9093,2@KAFKA002:9093,3@KAFKA003:9093
#不同服务器绑定的端口
listeners=PLAINTEXT://KAFKA003:19092,CONTROLLER://KAFKA003:9093
#broker服务协议别名
inter.broker.listener.name=PLAINTEXT
#broker对外暴露的地址(不同节点配置不同)
advertised.Listeners=PLAINTEXT://KAFKA003:19092
#协议别名到安全协议的映射
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
#kafka数据存储目录
log.dirs=/opt/softwares/kafka_2.12-3.2.0/data
#不允许自动创建topic,只通过命令创建
auto.create.topics.enable=false
delete.topic.enable=true
#kafka的角色(controller相当于主机、broker节点相当于从机,主机类似zk功能)
process.roles=broker
#节点ID(不同节点配置不同)
node.id=4
#controller服务协议别名
controller.listener.names=CONTROLLER
#全Controller列表
controller.quorum.voters=1@KAFKA001:9093,2@KAFKA002:9093,3@KAFKA003:9093
#不同服务器绑定的端口
listeners=PLAINTEXT://KAFKA004:19092
#broker服务协议别名
inter.broker.listener.name=PLAINTEXT
#broker对外暴露的地址(不同节点配置不同)
advertised.Listeners=PLAINTEXT://KAFKA004:19092
#协议别名到安全协议的映射
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
#kafka数据存储目录
log.dirs=/opt/softwares/kafka_2.12-3.2.0/data
#不允许自动创建topic,只通过命令创建
auto.create.topics.enable=false
delete.topic.enable=true
(1) 在KAFKA001机器上执行
./bin/kafka-storage.sh random-uuid
可以看到生成ID:_nOVlsByS8qnh4sFJEKvgg
(2) 用该ID格式化Kafka存储目录(4台节点)
[user@KAFKA001 kafka_2.12-3.2.0]# ./bin/kafka-storage.sh format -t _nOVlsByS8qnh4sFJEKvgg -c /opt/module/kafka/config/kraft/server.properties
[user@KAFKA002 kafka_2.12-3.2.0]# ./bin/kafka-storage.sh format -t _nOVlsByS8qnh4sFJEKvgg -c /opt/module/kafka/config/kraft/server.properties
[user@KAFKA003 kafka_2.12-3.2.0]# ./bin/kafka-storage.sh format -t _nOVlsByS8qnh4sFJEKvgg -c /opt/module/kafka/config/kraft/server.properties
[user@KAFKA004 kafka_2.12-3.2.0]# ./bin/kafka-storage.sh format -t _nOVlsByS8qnh4sFJEKvgg -c /opt/module/kafka/config/kraft/server.properties
a.启动:sudo ./bin/kafka-server-start.sh -daemon ./config/kraft/server.properties
b.关闭:sudo ./bin/kafka-server-stop.sh ./config/kraft/server.properties
c.创建topic:
./bin/kafka-topics.sh --create --topic aa --partitions 3 --replication-factor 2 --bootstrap-server KAFKA001:19092,KAFKA002:19092,KAFKA003:19092,KAFKA004:19092
d.创建生产者:
./kafka-console-producer.sh --broker-list KAFKA001:19092,KAFKA002:19092,KAFKA003:19092,KAFKA004:19092 --topic aa
e.创建消费者:
./kafka-console-consumer.sh --bootstrap-server KAFKA001:19092,KAFKA002:19092,KAFKA003:19092,KAFKA004:19092 --topic aa --from-beginning
f.查看topic:
./bin/kafka-topics.sh --list --bootstrap-server KAFKA001:19092,KAFKA002:19092,KAFKA003:19092,KAFKA004:19092
g.删除topic:
./bin/kafka-topics.sh --delete --topic aa --bootstrap-server KAFKA001:19092,KAFKA002:19092,KAFKA003:19092,KAFKA004:19092
h.查看topic详细信息:
./bin/kafka-topics.sh --bootstrap-server KAFKA001:19092,KAFKA002:19092,KAFKA003:19092,KAFKA004:19092 --describe --topic aa
sudo lsof -i :19092
(1)配置映射
到windows机器的C:\Windows\System32\drivers\etc\hosts
10.999.888.54 KAFKA001
10.999.888.233 KAFKA002
10.999.888.56 KAFKA003
10.999.888.170 KAFKA004
(2)安装Offest Explorer 工具 (一直点next即可)
(3)打开Offest Explorer工具,点击左上角File—Add New Connection
选择Properties配置以下内容:
配置成功!!!