Keine Notwendigkeit für Tierpfleger, kafka3.0-Versionscluster-Installation im eigentlichen Kampf

1. Rollenplanung für Kafka-Clusterinstanzen

In kafka3.0 kann der Tierpfleger entfernt werden, und der Kraft-Mechanismus wird verwendet, um die Wahl des Controller-Master-Controllers zu realisieren. Lassen Sie uns also kurz den Unterschied zwischen Kafka 2.0 und 3.0 in dieser Hinsicht verstehen. BildIn der obigen Abbildung steht Schwarz für Broker (Message-Broker-Dienst) und Braun/Blau für Controller (Cluster-Controller-Dienst)

  • Linkes Bild (kafka2.0): Alle Knoten in einem Cluster sind Broker. Kafka wählt einen Controller aus den drei Brokern. Der Controller speichert die Cluster-Metadateninformationen (wie Themenklassifizierung, Verbrauchsfortschritt usw.) in zookeeper. Wird für die Verteilung verwendet Interaktion zwischen Knoten im Cluster.

  • Rechtes Bild (kafka3.0): Angenommen, ein Cluster hat vier Broker, von denen drei als Conreoller-Rollen (blau) bezeichnet werden, ein Controller aus den drei Controllern als Hauptcontroller (braun) ausgewählt wird und die anderen beiden als Ersatz dienen. Tierpfleger wird nicht mehr benötigt! Relevante Metadateninformationen existieren in Form von Kafka-Protokollen (dh: in Form von Nachrichtenwarteschlangennachrichten).

Nachdem wir das rechte Bild oben verstanden haben, ist es für uns nicht schwer zu verstehen, dass wir vor dem Aufbau eines Kafka 3.0-Clusters gute Arbeit bei der Planung der Rolle von Kafka-Instanzen leisten müssen. (Vier Broker, drei müssen durch aktive Konfiguration als Controller bestimmt werden, und Controller benötigen eine ungerade Zahl, die mit zk identisch ist.)

Hostname IP Rolle node.id
zimug1 192.168.1.111 Makler, Kontrolleur 1
zimug2 192.168.1.112 Makler, Kontrolleur 2
zimug3 192.168.1.113 Makler, Kontrolleur 3
zimug4 192.168.1.113 Makler 4

2. Vorbereitungen

  • Erstellen Sie ein neues Verzeichnis unter dem kafka-Benutzer (neuer kafka-Benutzer, verwenden Sie nicht den Root-Benutzer) als kafka3-Installationsverzeichnis und verwenden Sie wget, um ein Installationspaket der Version 3.10 herunterzuladen.
$mkdir kafka3-setup;
$ cd kafka3-setup/;
$ wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz

复制代码
  • Außerdem unterstützt kafka3.0 kein JDK8 mehr, es wird empfohlen JDK11 oder JDK17 zu installieren und vorab zu installieren.

  • 新建1个目录用于保存kafka3的持久化日志数据mkdir -p /home/kafka/data/kafka3;,并保证安装kafka的用户具有该目录的读写权限。

  • (这里需要使用root用户)所有安装kafka3服务器实例防火墙开放9092、9093端口,使用该端口作为controller之间的通信端口。该端口的作用与zk的2181端口类似。

  • 下载完成安装包之后,解压到/home/kafka目录下。也可以修改-C参数自定义解压路径,如果自定义路径,注意路径下的新建的kafka用户的操作权限。

tar -xzvf ./kafka_2.13-3.1.0.tgz -C /home/kafka

复制代码

三、修改Kraft协议配置文件

在kafka3.0版本中,使用Kraft协议代替zookeeper进行集群的Controller选举,所以要针对它进行配置,所以要针对它进行配置,配置文件在kraft目录下,这与kafka2.0版本依赖zookeeper安装方式的配置文件是不同的。

vim /home/kafka/kafka_2.13-3.1.0/config/kraft/server.properties

复制代码

具体的配置参数如下:

node.id=1
process.roles=broker,controller
listeners=PLAINTEXT://zimug1:9092,CONTROLLER://zimug1:9093
advertised.listeners = PLAINTEXT://:9092
controller.quorum.voters=1@zimug1:9093,2@zimug2:9093,3@zimug3:9093
log.dirs=/home/kafka/data/kafka3

复制代码
  • **node.id**:这将作为集群中的节点 ID,唯一标识,按照我们事先规划好的(上文),在不同的服务器上这个值不同。其实就是kafka2.0中的broker.id,只是在3.0版本中kafka实例不再只担任broker角色,也有可能是controller角色,所以改名叫做node节点。

  • process.roles「:一个节点可以充当」broker」「controller」「两者兼而有之」。按照我们事先规划好的(上文),在不同的服务器上这个值不同。多个角色用逗号分开。

  • 「listeners」:broker 将使用 9092 端口,而 kraft controller控制器将使用 9093端口。

  • advertised.listeners:这里指定kafka通过代理暴漏的地址,如果都是局域网使用,就配置PLAINTEXT://:9092即可。

  • controller.quorum.voters「:这个配置用于指定」**controller主控」**选举的投票节点,所有process.roles包含controller角色的规划节点都要参与,即:zimug1、zimug2、zimug3。其配置格式为:node.id1@host1:9093,node.id2@host2:9093

  • 「log.dirs」:kafka 将存储数据的日志目录,在准备工作中创建好的目录。

所有kafka节点都要按照上文中的节点规划进行配置,完成config/kraft/server.properties配置文件的修改。

三、格式化存储目录

生成一个唯一的集群ID(在一台kafka服务器上执行一次即可),这一个步骤是在安装kafka2.0版本的时候不存在的。

$ /home/kafka/kafka_2.13-3.1.0/bin/kafka-storage.sh random-uuid
SzIhECn-QbCLzIuNxk1A2A

复制代码

使用生成的集群ID+配置文件格式化存储目录log.dirs,所以这一步确认配置及路径确实存在,并且kafka用户有访问权限(检查准备工作是否做对)。「每一台主机服务器都要执行这个命令」

 /home/kafka/kafka_2.13-3.1.0/bin/kafka-storage.sh format \
-t SzIhECn-QbCLzIuNxk1A2A \
-c /home/kafka/kafka_2.13-3.1.0/config/kraft/server.properties

复制代码

格式化操作完成之后,你会发现在我们定义的log.dirs目录下多出一个meta.properties文件。meta.properties文件中存储了当前的kafka节点的id(node.id),当前节点属于哪个集群(cluster.id

$ cat /home/kafka/data/kafka3/meta.properties
#
#Tue Apr 12 07:39:07 CST 2022
node.id=1
version=1
cluster.id=SzIhECn-QbCLzIuNxk1A2A

复制代码

四 启动集群,完成基础测试

zimug1 zimug2 zimug3是三台应用服务器的主机名称(参考上文中的角色规划),在linux的/etc/hosts主机名与ip进行关系映射。将下面的命令集合保存为一个shell脚本,并赋予执行权限。执行该脚本即可启动kafka集群所有的节点,使用该脚本前提是:你已经实现了集群各节点之间的ssh免密登录。

#!/bin/bash
kafkaServers='zimug1 zimug2 zimug3'
#启动所有的kafka
for kafka in $kafkaServers
do
    ssh -T $kafka <<EOF
    nohup /home/kafka/kafka_2.13-3.1.0/bin/kafka-server-start.sh /home/kafka/kafka_2.13-3.1.0/config/kraft/server.properties 1>/dev/null 2>&1 &
EOF
echo 从节点 $kafka 启动kafka3.0...[ done ]
sleep 5
done

复制代码

Wenn sich Ihr Installationspfad von meinem unterscheidet, /home/kafka/kafka_2.13-3.1.0müssen Sie ihn entsprechend Ihrer eigenen Situation ändern.

5. Stoppen Sie das Cluster-Skript mit einem Klick

Das Skript zum Stoppen jedes Knotens des Kafka-Clusters mit einem Klick entspricht der Verwendungsmethode und dem Prinzip des Startskripts.

#!/bin/bash
kafkaServers='zimug1 zimug2 zimug3'
#停止所有的kafka
for kafka in $kafkaServers
do
    ssh -T $kafka <<EOF

    cd /home/kafka/kafka_2.13-3.1.0
    bin/kafka-server-stop.sh
EOF
echo 从节点 $kafka 停止kafka...[ done ]
sleep 5
done

复制代码

Code-Text ist nicht einfach, wenn Sie ihn hilfreich finden, helfen Sie bitte beim Klicken, um ihn anzusehen oder zu teilen, ohne Ihre Unterstützung kann ich möglicherweise nicht durchhalten! Willkommen auf dem offiziellen Konto: Antetokounmpo, antworten Sie auf 003 und präsentieren Sie die PDF-Version der Kolumne des Autors "The Way of Docker Cultivation". Antetokounmpo-Blog : zimug.com

Ich denke du magst

Origin juejin.im/post/7133530591039782949
Empfohlen
Rangfolge