Hi, I have a 6 node cluster with Kafka 3.0.0 with 5 nodes running in dual mode (controller and broker) using instructions from here: https://github.com/apache/kafka/blob/3.0/config/kraft/README.md. They are running fine. I set up the 6th one as just a broker to experiment. It fails to startup with the error.
[2021-12-14 04:38:16,085] ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)java.lang.IllegalArgumentException: No enum constant org.apache.kafka.common.security.auth.SecurityProtocol. at java.base/java.lang.Enum.valueOf(Enum.java:240) at org.apache.kafka.common.security.auth.SecurityProtocol.valueOf(SecurityProtocol.java:26) at org.apache.kafka.common.security.auth.SecurityProtocol.forName(SecurityProtocol.java:72) at kafka.raft.KafkaRaftManager.$anonfun$buildNetworkClient$1(RaftManager.scala:230) at scala.collection.immutable.Map$Map4.getOrElse(Map.scala:530) at kafka.raft.KafkaRaftManager.buildNetworkClient(RaftManager.scala:230) at kafka.raft.KafkaRaftManager.buildNetworkChannel(RaftManager.scala:208) at kafka.raft.KafkaRaftManager.<init>(RaftManager.scala:124) at kafka.server.KafkaRaftServer.<init>(KafkaRaftServer.scala:73) at kafka.Kafka$.buildServer(Kafka.scala:79) at kafka.Kafka$.main(Kafka.scala:87) at kafka.Kafka.main(Kafka.scala) Its config/kraft/server.properties has relevant config like this: === # The role of this server. Setting this puts us in KRaft modeprocess.roles=broker # The node id associated with this instance's rolesnode.id=6 # The connect string for the controller quorum (these IPs are annymized for privacy)controller.quorum.voters=1@1.2.3.1:9093,2@ 1.2.3.2:9093,3@ 1.2.3.3:9093,4@ 1.2.3.4:9093,5@ 1.2.3.5:9093 ############################# Socket Server Settings ############################# # The address the socket server listens on. It will get the value returned from# java.net.InetAddress.getCanonicalHostName() if not configured.# FORMAT:# listeners = listener_name://host_name:port# EXAMPLE:# listeners = PLAINTEXT://your.host.name:9092listeners=PLAINTEXT://1.2.3.6:9092inter.broker.listener.name=PLAINTEXT # Hostname and port the broker will advertise to producers and consumers. If not set,# it uses the value for "listeners" if configured. Otherwise, it will use the value# returned from java.net.InetAddress.getCanonicalHostName().#advertised.listeners=PLAINTEXT://1.2.3.6:9092 # Listener, host name, and port for the controller to advertise to the brokers. If# this server is a controller, this listener must be configured.#controller.listener.names=PLAINTEXT # Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more detailslistener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL ======Thoughts?