2020# See kafka.server.KafkaConfig for additional details and defaults
2121#
2222
23+ # -----------------------------------------------------------------------------
24+ # MODE DETERMINATION (Added for Kafka 4.0+ KRaft Support)
25+ # -----------------------------------------------------------------------------
26+ {% set enable_kraft = amq_streams_enable_kraft | default (amq_streams_common_product_version is version ('4.0.0' , '>=' )) | bool %}
27+
2328############################# Server Basics #############################
2429
2530# The id of the broker. This must be set to a unique integer for each broker.
31+ {% if enable_kraft %}
32+ # KRaft uses node.id instead of broker.id
33+ node.id={{ amq_streams_kraft_node_id | default(1) }}
34+ {% else %}
2635broker.id={{ amq_streams_broker_broker_id | default(amq_streams_broker_inventory_group.index(inventory_hostname)) }}
36+ {% endif %}
37+
38+ ############################# KRaft Settings (Kafka 4.0+) #############################
39+ {% if enable_kraft %}
40+ # The roles of this process. broker, controller, or both.
41+ process.roles={{ amq_streams_kraft_process_roles | default('broker,controller') }}
42+
43+ # The connect string for the controller quorum
44+ controller.quorum.voters={{ amq_streams_kraft_controller_quorum_voters }}
45+
46+ # Listener name used for the controller
47+ controller.listener.names={{ amq_streams_kraft_controller_listener_names | default('CONTROLLER') }}
48+
49+ # Listener name used for inter-broker communication
50+ inter.broker.listener.name={{ amq_streams_kraft_inter_broker_listener_name | default('PLAINTEXT') }}
51+ {% endif %}
2752
2853############################# Socket Server Settings #############################
2954
@@ -33,40 +58,57 @@ broker.id={{ amq_streams_broker_broker_id | default(amq_streams_broker_inventory
3358# listeners = listener_name://host_name:port
3459# EXAMPLE:
3560# listeners = PLAINTEXT://your.host.name:9092
36- {% if amq_streams_broker_listeners is defined %}
61+ {% if enable_kraft %}
62+ # KRaft Mode Listeners (Requires Broker + Controller ports)
63+ listeners={{ amq_streams_kraft_listeners | join(",") }}
64+ {% else %}
65+ # Legacy ZK Mode Listeners
66+ {% if amq_streams_broker_listeners is defined %}
3767listeners={{ amq_streams_broker_listeners | join(",") }}
38- {% elif amq_streams_broker_listener_port is defined %}
68+ {% elif amq_streams_broker_listener_port is defined %}
3969listeners=PLAINTEXT://:{{ amq_streams_broker_listener_port }}
40- {% else %}
70+ {% else %}
4171#listeners=PLAINTEXT://:9092
72+ {% endif %}
4273{% endif %}
4374
44- {% if amq_streams_broker_inter_broker_listener is defined %}
45- # Name of listener used for communication between brokers
75+ {% if amq_streams_broker_inter_broker_listener is defined and not enable_kraft %}
76+ # Name of listener used for communication between brokers (Legacy ZK only)
4677inter.broker.listener.name={{ amq_streams_broker_inter_broker_listener }}
4778{% endif %}
4879
4980# Listener name, hostname and port the broker will advertise to clients.
5081# If not set, it uses the value for "listeners".
51- {% if amq_streams_broker_advertised_listeners is defined %}
52- advertised.listeners={{ amq_streams_broker_advertised_listeners | join(",") }}
82+ {% if enable_kraft %}
83+ # KRaft Mode Advertised Listeners (Broker port only)
84+ advertised.listeners={{ amq_streams_kraft_advertised_listeners | join(",") }}
5385{% else %}
86+ # Legacy ZK Mode Advertised Listeners
87+ {% if amq_streams_broker_advertised_listeners is defined %}
88+ advertised.listeners={{ amq_streams_broker_advertised_listeners | join(",") }}
89+ {% else %}
5490#advertised.listeners=PLAINTEXT://your.host.name:9092
91+ {% endif %}
5592{% endif %}
5693
57- {% if amq_streams_broker_auth_enabled and amq_streams_broker_auth_listeners is defined %}
94+ {% if enable_kraft %}
95+ # KRaft Mode Security Map (Must include Controller)
96+ listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
97+ {% else %}
98+ {% if amq_streams_broker_auth_enabled and amq_streams_broker_auth_listeners is defined %}
5899# Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more details
59100listener.security.protocol.map={{ amq_streams_broker_auth_listeners | join(",") }}
60101
61102# The list of SASL mechanisms enabled in the Kafka server
62103sasl.enabled.mechanisms={{ amq_streams_broker_auth_sasl_mechanisms | join(",") }}
63- {% if amq_streams_broker_inter_broker_auth_sasl_mechanisms is defined %}
104+ {% if amq_streams_broker_inter_broker_auth_sasl_mechanisms is defined %}
64105# SASL mechanism used for inter-broker communication
65106sasl.mechanism.inter.broker.protocol={{ amq_streams_broker_inter_broker_auth_sasl_mechanisms }}
66- {% endif %}
67- {% else %}
107+ {% endif %}
108+ {% else %}
68109# Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more details
69110#listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
111+ {% endif %}
70112{% endif %}
71113
72114{% if amq_streams_broker_inter_broker_listener_auth is defined %}
@@ -105,7 +147,11 @@ socket.request.max.bytes={{ amq_streams_broker_socket_request_max_bytes }}
105147############################# Log Basics #############################
106148
107149# A comma separated list of directories under which to store log files
150+ {% if enable_kraft %}
151+ log.dirs={{ amq_streams_kraft_log_dirs }}
152+ {% else %}
108153log.dirs={{ amq_streams_broker_data_dir }}
154+ {% endif %}
109155
110156# The default number of log partitions per topic. More partitions allow greater
111157# parallelism for consumption, but this will also result in more files across
@@ -162,7 +208,7 @@ log.retention.hours={{ amq_streams_broker_log_retention_hours }}
162208log.retention.check.interval.ms={{ amq_streams_broker_log_retention_check_interval_ms }}
163209
164210############################# Zookeeper #############################
165-
211+ {% if not enable_kraft %}
166212# Zookeeper connection string (see zookeeper docs for details).
167213# This is a comma separated host:port pairs, each corresponding to a zk
168214# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
@@ -173,6 +219,7 @@ zookeeper.connect={{ amq_streams_broker_zookeeper_host }}:{{ amq_streams_broker_
173219# Timeout in ms for connecting to zookeeper
174220zookeeper.connection.timeout.ms={{ amq_streams_broker_zookeeper_connection_timeout_ms }}
175221zookeeper.session.timeout.ms={{ amq_streams_broker_zookeeper_session_timeout_ms }}
222+ {% endif %}
176223
177224############################# Group Coordinator Settings #############################
178225
0 commit comments