@@ -4082,42 +4082,32 @@ <h5 class="anchor-heading"><a id="static_versus_dynamic_kraft_quorums" class="an
4082
4082
If you are not sure whether you are using static or dynamic quorums, you can determine this by
4083
4083
running something like the following:< p >
4084
4084
4085
- < pre > < code class = "language-bash" >
4086
- $ bin/kafka-features.sh --bootstrap-controller localhost:9093 describe
4087
- </ code > </ pre > < p >
4088
-
4089
- If the < code > kraft.version</ code > field is level 0 or absent, you are using a static quorum. If
4090
- it is 1 or above, you are using a dynamic quorum. For example, here is an example of a static
4091
- quorum:< p />
4092
- < pre > < code class = "language-bash" >
4093
- Feature: kraft.version SupportedMinVersion: 0 SupportedMaxVersion: 1 FinalizedVersionLevel: 0 Epoch: 5
4094
- Feature: metadata.version SupportedMinVersion: 3.3-IV3 SupportedMaxVersion: 3.9-IV0 FinalizedVersionLevel: 3.9-IV0 Epoch: 5
4095
- </ code > </ pre > < p />
4096
-
4097
- Here is another example of a static quorum:< p />
4098
- < pre > < code class = "language-bash" >
4099
- Feature: metadata.version SupportedMinVersion: 3.3-IV3 SupportedMaxVersion: 3.8-IV0 FinalizedVersionLevel: 3.8-IV0 Epoch: 5
4100
- </ code > </ pre > < p />
4101
-
4102
- Here is an example of a dynamic quorum:< p />
4103
- < pre > < code class = "language-bash" >
4104
- Feature: kraft.version SupportedMinVersion: 0 SupportedMaxVersion: 1 FinalizedVersionLevel: 1 Epoch: 5
4105
- Feature: metadata.version SupportedMinVersion: 3.3-IV3 SupportedMaxVersion: 3.9-IV0 FinalizedVersionLevel: 3.9-IV0 Epoch: 5
4106
- </ code > </ pre > < p />
4107
-
4108
- The static versus dynamic nature of the quorum is determined at the time of formatting.
4109
- Specifically, the quorum will be formatted as dynamic if < code > controller.quorum.voters</ code > is
4110
- < b > not</ b > present, and if the software version is Apache Kafka 3.9 or newer. If you have
4111
- followed the instructions earlier in this document, you will get a dynamic quorum.< p >
4112
-
4113
- If you would like the formatting process to fail if a dynamic quorum cannot be achieved, format your
4114
- controllers using the < code > --feature kraft.version=1</ code > . (Note that you should not supply
4115
- this flag when formatting brokers -- only when formatting controllers.)< p >
4116
-
4117
- < pre > < code class = "language-bash" >
4118
- $ bin/kafka-storage.sh format -t KAFKA_CLUSTER_ID --feature kraft.version=1 -c controller.properties
4119
- </ code > </ pre > < p >
4085
+ < pre > < code class = "language-bash" > $ bin/kafka-features.sh --bootstrap-controller localhost:9093 describe</ code > </ pre >
4086
+ < p >
4087
+ If the < code > kraft.version</ code > field is level 0 or absent, you are using a static quorum. If
4088
+ it is 1 or above, you are using a dynamic quorum. For example, here is an example of a static
4089
+ quorum:< p >
4090
+ < pre > < code class = "language-bash" > Feature: kraft.version SupportedMinVersion: 0 SupportedMaxVersion: 1 FinalizedVersionLevel: 0 Epoch: 5
4091
+ Feature: metadata.version SupportedMinVersion: 3.3-IV3 SupportedMaxVersion: 3.9-IV0 FinalizedVersionLevel: 3.9-IV0 Epoch: 5</ code > </ pre >
4092
+ < p >
4093
+ Here is another example of a static quorum:< p >
4094
+ < pre > < code class = "language-bash" > Feature: metadata.version SupportedMinVersion: 3.3-IV3 SupportedMaxVersion: 3.8-IV0 FinalizedVersionLevel: 3.8-IV0 Epoch: 5</ code > </ pre >
4095
+ < p >
4096
+ Here is an example of a dynamic quorum:< p >
4097
+ < pre > < code class = "language-bash" > Feature: kraft.version SupportedMinVersion: 0 SupportedMaxVersion: 1 FinalizedVersionLevel: 1 Epoch: 5
4098
+ Feature: metadata.version SupportedMinVersion: 3.3-IV3 SupportedMaxVersion: 3.9-IV0 FinalizedVersionLevel: 3.9-IV0 Epoch: 5</ code > </ pre >
4099
+ < p >
4100
+ The static versus dynamic nature of the quorum is determined at the time of formatting.
4101
+ Specifically, the quorum will be formatted as dynamic if < code > controller.quorum.voters</ code > is
4102
+ < b > not</ b > present, and if the software version is Apache Kafka 3.9 or newer. If you have
4103
+ followed the instructions earlier in this document, you will get a dynamic quorum.< p >
4104
+
4105
+ If you would like the formatting process to fail if a dynamic quorum cannot be achieved, format your
4106
+ controllers using the < code > --feature kraft.version=1</ code > . (Note that you should not supply
4107
+ this flag when formatting brokers -- only when formatting controllers.)< p >
4120
4108
4109
+ < pre > < code class = "language-bash" > $ bin/kafka-storage.sh format -t KAFKA_CLUSTER_ID --feature kraft.version=1 -c controller.properties</ code > </ pre >
4110
+ < p >
4121
4111
Note: To migrate from static voter set to dynamic voter set, please refer to the < a href = "#kraft_upgrade" > Upgrade</ a > section.
4122
4112
4123
4113
< h5 class = "anchor-heading" > < a id = "kraft_reconfig_add" class = "anchor-link" > </ a > < a href = "#kraft_reconfig_add" > Add New Controller</ a > </ h5 >
@@ -4169,7 +4159,7 @@ <h5 class="anchor-heading"><a id="kraft_dump_log" class="anchor-link"></a><a hre
4169
4159
4170
4160
< pre > < code class = "language-bash" > $ bin/kafka-dump-log.sh --cluster-metadata-decoder --files metadata_log_dir/__cluster_metadata-0/00000000000000000000.log</ code > </ pre >
4171
4161
4172
- < p > This command decodes and prints the records in the a cluster metadata snapshot:</ p >
4162
+ < p > This command decodes and prints the records in a cluster metadata snapshot:</ p >
4173
4163
4174
4164
< pre > < code class = "language-bash" > $ bin/kafka-dump-log.sh --cluster-metadata-decoder --files metadata_log_dir/__cluster_metadata-0/00000000000000000100-0000000001.checkpoint</ code > </ pre >
4175
4165
@@ -4199,7 +4189,7 @@ <h5 class="anchor-heading"><a id="kraft_shell_tool" class="anchor-link"></a><a h
4199
4189
< h4 class = "anchor-heading" > < a id = "kraft_deployment" class = "anchor-link" > </ a > < a href = "#kraft_deployment" > Deploying Considerations</ a > </ h4 >
4200
4190
4201
4191
< ul >
4202
- < li > Kafka server's < code > process.role </ code > should be set to either < code > broker</ code > or < code > controller</ code > but not both. Combined mode can be used in development environments, but it should be avoided in critical deployment environments.</ li >
4192
+ < li > Kafka server's < code > process.roles </ code > should be set to either < code > broker</ code > or < code > controller</ code > but not both. Combined mode can be used in development environments, but it should be avoided in critical deployment environments.</ li >
4203
4193
< li > For redundancy, a Kafka cluster should use 3 or more controllers, depending on factors like cost and the number of concurrent failures your system should withstand without availability impact. For the KRaft controller cluster to withstand < code > N</ code > concurrent failures the controller cluster must include < code > 2N + 1</ code > controllers.</ li >
4204
4194
< li > The Kafka controllers store all the metadata for the cluster in memory and on disk. We believe that for a typical Kafka cluster 5GB of main memory and 5GB of disk space on the metadata log director is sufficient.</ li >
4205
4195
</ ul >
0 commit comments