Hi Vamsee,

> To summarize, if a minimal broker only and controller only config
examples can be added to the Kraft README they would be awesome 👍
Thanks for your suggestion.
Actually, there are 2 example configuration files in Kraft config folder:
https://github.com/apache/kafka/blob/trunk/config/kraft/broker.properties
https://github.com/apache/kafka/blob/trunk/config/kraft/controller.properties

FYR.

Also, I found the description for the `controller.listener.names` in the
example properties file is wrong and misleading. (thanks to your question
:) )
I've submitted a PR to update it. Welcome to provide feedback.
PR: https://github.com/apache/kafka/pull/11616

Thank you.
Luke

On Sun, Dec 19, 2021 at 2:10 AM Vamsee Lakamsani <[email protected]> wrote:

> Hi Luke,
>
> Thanks for your response but I don't understand.
> As this node is not a controller I first tried commenting out the
> 'controller.listener.names' setting altogether. It doesn't like it. So I
> tried setting it to PLAINTEXT in order to match the PLANTEXT:PLAINTEXT that
> I set for `listener.security.protocol.map' in the config I posted in my
> initial email. Sorry the formatting didn't come through well in that one.
> So here they are again better formatted.
>
>
> ###############
>
> process.roles=broker
>
> node.id=6
>
> [email protected]: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
>
> controller.listener.names=PLAINTEXT
>
> listeners=PLAINTEXT://1.2.3.6:9092
>
> inter.broker.listener.name=PLAINTEXT
>
>
> listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
>
> ############
>
> Given that this node's role is only a broker I am wondering why we need to
> set
> 'controller.listener.names' at all in it's config file?  Isn't
> 'controller.quorum.voters' pointing to the other controller nodes not
> sufficient? I tried commenting out 'controller.listener.names' altogether
> on this node but it fails to start with another exception.
>
> To summarize, if a minimal broker only and controller only config examples
> can be added to the Kraft README they would be awesome 👍
>
>
> On Sat, Dec 18, 2021 at 4:59, Luke Chen
> <[email protected]> wrote:
> Hi Vamsee,
>
> From the error stack trace, it is complaining the listener name: set in
> `controller.listener.names` cannot find the mapping security protocol. Ex:
> In
> https://github.com/apache/kafka/blob/trunk/config/kraft/broker.properties,
> we set the `controller.listener.names=CONTROLLER`, and in the `
> listener.security.protocol.map=CONTROLLER:PLAINTEXT`, we know it is
> mapped to `PLAINTEXT`. So it can find the security protocol successfully.
>
> Please try to check and update the 2 settings in the config file.
>
> Hope it helps.
>
> Thank you.
> Luke
>
>
>
>
> On Tue, Dec 14, 2021 at 12:48 PM Vamsee Lakamsani <[email protected]>
> wrote:
>
> 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)[email protected]: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?
>
>

Reply via email to