从 https://kafka.apache.org/downloads 下载 kafka 2.8.0
wget https://apachemirror.wuchna.com/kafka/2.8.0/kafka_2.12-2.8.0.tgz
解压:
tar xzf kafka_2.12-2.8.0.tgz
打开kafka目录,所有 kafka 命令都应在 kafka 文件夹中运行
cd kafka_2.12-2.8.0
在不适用zookeeper的情况下,在config/kraft server.properties
从 server.properties 创建 3 个新文件。这是因为我们将创建一个 3 节点群集
cd config/kraft cp server.properties server1.properties cp server.properties server2.properties cp server.properties server3.properties
在 server1.properties 中,修改以下属性。请保持其他属性不变。
node.id=1 process.roles=broker,controller inter.broker.listener.name=PLAINTEXT controller.listener.names=CONTROLLER listeners=PLAINTEXT://:9092,CONTROLLER://:19092 log.dirs=/tmp/server1/kraft-combined-logs listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL [email protected]:19092,[email protected]:19093,[email protected]:19094
node.id:这将充当群集中的节点 ID。这将有助于我们确定这是哪个经纪人。它还将帮助我们确定这是哪个牛皮纸控制器节点。
process.roles:节点可以充当代理和/或控制器。在这里,我们指示此节点既可以是 kafka 代理,也可以是牛皮纸控制器节点。
inter.broker.listener.name:此处代理侦听器名称设置为纯文本
controller.listener.names:此处的控制器侦听器名称设置为 CONTROLLER
侦听器:在这里,我们指示代理将使用端口 9092,牛皮纸控制器将使用端口 19092
log.dirs:这是 kafka 存储数据的日志目录
listener.security.protocol.map:此处添加了连接安全详细信息
controller.quorum.voters:这用于指示所有可用的牛皮纸控制器。在这里,我们指示我们将在端口 19092、19093 和 19094 上运行 3 个牛皮纸控制器节点
对于 server2.属性,请修改以下属性。请保持其他属性不变。
node.id=2 process.roles=broker,controller [email protected]:19092,[email protected]:19093,[email protected]:19094 listeners=PLAINTEXT://:9093,CONTROLLER://:19093 inter.broker.listener.name=PLAINTEXT controller.listener.names=CONTROLLER log.dirs=/tmp/server2/kraft-combined-logs listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
在服务器 2 中,代理端口为 9093,控制器端口为 19093。此外,log.dirs也不同
对于 server3.属性,请修改以下属性。请保持其他属性不变。
node.id=3 process.roles=broker,controller controller.quo[email protected]:19092,[email protected]:19093,[email protected]:19094 listeners=PLAINTEXT://:9094,CONTROLLER://:19094 inter.broker.listener.name=PLAINTEXT controller.listener.names=CONTROLLER log.dirs=/tmp/server3/kraft-combined-logs listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
在服务器 3 中,代理端口为 9094,控制器端口为 19094。此外,log.dirs也不同
Kafka 集群 ID 创建和日志目录设置
首先,我们需要在启动服务器之前创建 kafka 集群 ID。这可以使用以下命令完成:
./bin/kafka-storage.sh random-uuid
记下运行上述语句后出现的 uuid。在我的情况下,我得到了以下uuid
./bin/kafka-storage.sh random-uuid 9dJzdGvfTPaCY4e8klXaDQ
接下来,我们需要格式化所有存储目录。这基本上是我们放在log.dirs属性中的目录。
这可以通过以下命令完成
./bin/kafka-storage.sh format -t <uuid> -c <server_config_location>
替换为您在上一步中获得的 uuid。替换为服务器属性文件<uuid>
<server_config_location>
这是运行 3 个命令时得到的结果
$ ./bin/kafka-storage.sh format -t 9dJzdGvfTPaCY4e8klXaDQ -c ./config/kraft/server1.properties Formatting /tmp/server1/kraft-combined-logs $ ./bin/kafka-storage.sh format -t 9dJzdGvfTPaCY4e8klXaDQ -c ./config/kraft/server2.properties Formatting /tmp/server2/kraft-combined-logs $ ./bin/kafka-storage.sh format -t 9dJzdGvfTPaCY4e8klXaDQ -c ./config/kraft/server3.properties Formatting /tmp/server3/kraft-combined-logs
启动 kafka 服务器
可以使用以下命令在守护程序模式下启动 kafka 服务器:
首先设置堆属性
export KAFKA_HEAP_OPTS="-Xmx200M –Xms100M"
在这里,我们给出了一个非常小的最大堆200M,因为我们在一台本地机器上运行所有服务器。如果您有更大的服务器,则可以提供1GB或以上的堆大小。
启动服务器 1:
./bin/kafka-server-start.sh -daemon ./config/kraft/server1.properties
启动服务器 2/3类似
创建卡夫卡主题
让我们在此集群中创建一个主题牛皮纸测试
可以使用以下命令创建该主题:
./bin/kafka-topics.sh --create --topic kraft-test --partitions 3 --replication-factor 3 --bootstrap-server localhost:9092
我们正在创建一个包含 3 个分区和 3 个副本的主题,因为我们有 3 个节点。
我们可以使用以下命令列出集群中存在的主题:
bin/kafka-topics.sh --bootstrap-server localhost:9093 --list
运行上述命令可得到以下结果
$ bin/kafka-topics.sh --bootstrap-server localhost:9093 --list kraft-test
我们可以使用以下命令描述集群中存在的主题:
bin/kafka-topics.sh --bootstrap-server localhost:9093 --describe --topic kraft-test
从 kafka 生成和使用数据
使用以下命令在终端中启动 kafka 生产者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic kraft-test
在另一个终端中,使用以下命令启动 kafka 使用者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kraft-test
source:如何在没有动物园管理员的情况下轻松安装卡夫卡|阿迪亚的博客 (adityasridhar.com)