У меня проблемы с чтением из Kafka в наших одно-узловых средах разработки
Мы работаем с одноузловым экземпляром kafka и одноузловым Zookeeper - так как это dev env, нам на самом деле нет дела до репликации.
Мы используем Kafka в качестве хранилища событий для сохранения Akka. Когда мы пытаемся читать сообщения (даже из пустой темы), мы получаем NotEnoughReplicasException
поднял:
[2018-05-03 16:57:00,880] ERROR [ReplicaManager broker=0] Error processing append operation on partition __transaction_state-7 (kafka.server.ReplicaManager)
org.apache.kafka.common.errors.NotEnoughReplicasException: Number of insync replicas for partition __transaction_state-7 is [1], below required minimum [2]
[2018-05-03 16:57:00,889] INFO [Transaction State Manager 0]: TransactionalId akka-journal-message-AkkaJavaSpring-4 append transaction log for TxnTransitMetadata(producerId=6000, producerEpoch=0, txnTimeoutMs=60000, txnState=Empty, topicPartitions=Set(), txnStartTimestamp=-1, txnLastUpdateTimestamp=1525366620855) transition failed due to COORDINATOR_NOT_AVAILABLE, resetting pending state from Some(Empty), aborting state transition and returning COORDINATOR_NOT_AVAILABLE in the callback (kafka.coordinator.transaction.TransactionStateManager)
Я настроил следующие параметры:
"min.insync.replicas": 1
"offsets.topic.replication.factor": 1
"transaction.state.log.replication.factor": 1
"transaction.state.log.min.isr" : 1
, что подтверждается в выходных данных конфигурации, зарегистрированных при запуске:
[2018-05-03 16:33:34,381] INFO KafkaConfig values:
...snip...
min.insync.replicas = 1
num.io.threads = 8
num.network.threads = 3
num.partitions = 1
...snip...
transaction.state.log.load.buffer.size = 5242880
transaction.state.log.min.isr = 1
transaction.state.log.num.partitions = 50
transaction.state.log.replication.factor = 1
transaction.state.log.segment.bytes = 104857600
Однако при запросе к теме __transactionLog
кажется, что для min.insync.replicas
установлено значение 2:
/usr/bin/kafka-topics --zookeeper zookeeper:2181 --describe
Topic:__transaction_state PartitionCount:50 ReplicationFactor:1 Configs:segment.bytes=104857600,unclean.leader.election.enable=false,compression.type=uncompressed,cleanup.policy=compact,min.insync.replicas=2
Topic: __transaction_state Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: __transaction_state Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: __transaction_state Partition: 2 Leader: 0 Replicas: 0 Isr: 0
Topic: __transaction_state Partition: 3 Leader: 0 Replicas: 0 Isr: 0
Я использую Kafka 1.0.0, как показано в журналах:
INFO Kafka version : 1.0.0-cp1 (org.apache.kafka.common.utils.AppInfoParser)
Что является причиной этого и какова правильная конфигурация для предотвращения возникновения этих исключений?