Hi Kafka Users,
I am trying to setup a Simple Authentication Mechanism for my Kafka Instance running on my Virtual Box VM.
I am facing a lot of difficulty in starting the Zookeeper 3.4.10.
The scenario is like this...
I have a single admin User called sharjosh who's starting both the Zookeeper and Kafka processes on the VM.
I tried to use the following command to start the zookeeper
~/zookeeper-3.4.10$ export JVMFLAGS='-Djava.security.auth.login.config=/home/sharjosh/kafka_2.10-0.10.2.1/config/zk_server_jaas.conf'; bin/zkServer.sh start-foreground conf/zoo.cfg
and get
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78) at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116) at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:53) at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:87) at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:117) at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:82) at org.apache.zookeeper.server.ServerCnxnFactory.configureSaslLogin(ServerCnxnFactory.java:200)java.io.IOException: No JAAS configuration section named 'Server' was foundin '/home/sharjosh/kafka_2.10-0.10.2.1/config/zk_server_jaas.conf'.2017-06-04 22:43:31,324 [myid:] - ERROR [main:ZooKeeperServerMain@64] - Unexpected exception, exiting abnormally2017-06-04 22:43:31,323 [myid:] - ERROR [main:ServerCnxnFactory@199] - No JAAS configuration section named 'Server' was foundin '/home/sharjosh/kafka_2.10-0.10.2.1/config/zk_server_jaas.conf'.
My JAAS Config file for Zookeeper is
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
useTicketCache=true
keyTab="/home/sharjosh/kafkaSecurity/sharjosh.keytab"
principal="sharjosh@localhost"
};
My zoo.cfg file is
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/sharjosh/zookeeper-3.4.10/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
maxClientCnxns=500
# Purge task interval in hours
# Set to "0" to disable auto purge feature
autopurge.purgeInterval=1
My Kafka startup command is
export KAFKA_OPTS='-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/home/sharjosh/kafka_2.10-0.10.2.1/config/kafka_server_jaas.conf -Dzookeeper.sasl.client=zKClient'; ./kafka-server-start.sh /home/sharjosh/kafka-0.10.2.1-src/config/server.properties
My Kafka server's JAAS file is
KafkaServer {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
serviceName=kafka
useTicketCache=true
keyTab="/home/sharjosh/kafkaSecurity/sharjosh.keytab"
principal="sharjosh@localhost"
};
zKClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
serviceName=zookeeper
useTicketCache=true
keyTab="/home/sharjosh/kafkaSecurity/sharjosh.keytab"
principal="sharjosh@localhost"
};
My security settings in kafka's server.properties
listeners=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=GSSAPI,PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
zookeeper.connect=localhost:2181
On the other hand in Kafka Broker startup also I get errors as there's no Zookeeper available.
org.apache.kafka.common.KafkaException: Exception while loading Zookeeper JAAS login context 'Client'
at org.apache.kafka.common.security.JaasUtils.isZkSecurityEnabled(JaasUtils.java:154)
at kafka.server.KafkaServer.initZk(KafkaServer.scala:310)
at kafka.server.KafkaServer.startup(KafkaServer.scala:187)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:39)
at kafka.Kafka$.main(Kafka.scala:67)
at kafka.Kafka.main(Kafka.scala)
Caused by: java.lang.SecurityException: java.io.IOException: Configuration Error:
Line 9: expected [option key]
at sun.security.provider.ConfigFile$Spi.<init>(ConfigFile.java:137)
at sun.security.provider.ConfigFile.<init>(ConfigFile.java:102)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at java.lang.Class.newInstance(Class.java:442)
at javax.security.auth.login.Configuration$2.run(Configuration.java:255)
at javax.security.auth.login.Configuration$2.run(Configuration.java:247)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.Configuration.getConfiguration(Configuration.java:246)
at org.apache.kafka.common.security.JaasUtils.isZkSecurityEnabled(JaasUtils.java:151)
... 5 more
Caused by: java.io.IOException: Configuration Error:
Line 9: expected [option key]
...
So please advice me on what I am missing in the Configs to properly start Zookeeper to move forward. I have put in many days of investigation leading to pretty much the same result.
I am eagerly hoping the group and its users might have already conquered it and would help me. Waiting to hear back from you.
Thanks a lot,
Sharat