cd config/kraft/
vi server.properties
# 节点角色
process.roles=broker,controller
#节点ID,和节点所承担的角色想关联
node.id=1
# 集群地址
controller.quorum.voters=1@192.168.0.113:9093,2@192.168.0.114:9093,3@192.168.0.115:9093
#本机节点
listeners=PLAINTEXT://192.168.0.113:9092,CONTROLLER://192.168.0.113:9093
# 这里我修改了日志文件的路径,默认是在/tmp目录下的
log.dirs=/home/guohao/kafka_2.13-3.1.0/kraftlog/kraft-combined-logs
Process.Roles
每个Kafka服务器现在都有一个新的配置项,叫做Process.Roles, 这个参数可以有以下值:
如果Process.Roles = Broker, 服务器在KRaft模式中充当 Broker。
如果Process.Roles = Controller, 服务器在KRaft模式下充当 Controller。
如果Process.Roles = Broker,Controller,服务器在KRaft模式中同时充当 Broker 和Controller。
如果process.roles 没有设置。那么集群就假定是运行在ZooKeeper模式下。
如前所述,目前不能在不重新格式化目录的情况下在ZooKeeper模式和KRaft模式之间来回转换。同时充当Broker和Controller的节点称为“组合”节点。
对于简单的场景,组合节点更容易运行和部署,可以避免多进程运行时,JVM带来的相关的固定内存开销。关键的缺点是,控制器将较少地与系统的其余部分隔离。例如,如果代理上的活动导致内存不足,则服务器的控制器部分不会与该OOM条件隔离。
Quorum Voters
系统中的所有节点都必须设置 `controller.quorum.voters` 配置。这个配置标识有哪些节点是 Quorum 的投票者节点。所有想成为控制器的节点都需要包含在这个配置里面。这类似于在使用ZooKeeper时,使用ZooKeeper.connect配置时必须包含所有的ZooKeeper服务器。
然而,与ZooKeeper配置不同的是,`controller.quorum.voters` 配置需要包含每个节点的id。格式为: id1@host1:port1,id2@host2:port2。