项目需要使用kafka 集群,使用了sasl_plain认证机制,zk集群搭建成功,kafka集群也启动成功,在创建主题时报错
Error while executing topic command : Timed out waiting for a node assignment. Call: createTopics
######详细配置如下:zoo.cfg文件中添加
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
zookeeper.sasl.client=true
创建 zookeeper_jaas.conf文件 内容:
Server {
org.apache.kafka.common.security.plain.PlainLoginModule required
user_zkClient="wjpay1!=1" ;
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="zkClient"
password="wjpay1!=1";
};
在zkEnv.sh文件中添加
export SERVER_JVMFLAGS=" -Djava.security.auth.login.config=/opt/zookeeper/apache-zookeeper-3.6.4/conf/zookeeper_jaas.conf "
三台服务器依次启动 ./zkServer.sh start
使用 ./zkServer.sh status 查看集群状态 1leader 2follower
修改kafka 的server.properties文件:
listeners=SASL_PLAINTEXT://192.168.51.233:9092 //对应服务器ip
advertised.listeners=SASL_PLAINTEXT://192.168.51.233:9092 //对应服务器ip
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin
创建了kafka_server_jaas.conf文件,内容
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin";
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="zkClient"
password="wjpay1!=1";
};
创建kafka_client_jaas.conf文件:内容
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin";
};
创建 sasl_client.conf文件,内容
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
修改 kafka-server-start.sh最后一行
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/opt/kafka/kafka_2.12-3.5.0/config/kafka_server_jaas.conf kafka.Kafka "$@"
修改kafka-topics.sh 最后一行
exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/opt/kafka/kafka_2.12-3.5.0/config/kafka_client_jaas.conf kafka.admin.TopicCommand "$@"
三台服务器依次启动./kafka-server-start.sh -daemon ../config/server.properties
使用 ./zkCli.sh 连接其中一台zookeeper 服务
使用ls /brokers/ids 显示0,1,2 共3个kafka节点
证明kafka集群定成功了