Я тестирую восстановление после отказа серверов Kafka. То есть я перезагружаю серверы Kafka по одному и проверяю, продолжают ли клиенты отправлять и получать сообщения, пока это происходит.
Установка состоит из двух серверов Kafka broker-0
и broker-1
, тестовой темы, настроенной на partitionCount=1
и replicationFactor=2
, и клиентов, которые отправляют сообщения каждую секунду и прослушивают их.
Итак, я перезапускаю лидер test-topic
, то есть broker-0
(я использую kafka-topics.sh
, чтобы проверить, какой экземпляр активен), и broker-1
становится новым лидером раздела; клиенты подключаются к этому экземпляру и продолжают отправлять и получать сообщения.
После этого я перезагружаю broker-1
, с помощью kafka-topics.sh
проверяю, установлен ли этот сервер в наборе ISR
, а затем выключаю broker-1
.
В этот момент я ожидаю, что клиенты переподключатся к broker-0
и продолжат отправлять / получать сообщения; вместо этого отправитель не может найти активного посредника, и в моих журналах у меня есть:
2019-01-25 17:22:04,062 [kafka-producer-network-thread | producer-1] DEBUG org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Node 0 disconnected.
2019-01-25 17:22:04,062 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node 0 (mytesthost001/192.168.1.1:19093) could not be established. Broker may not be available.
2019-01-25 17:22:04,062 [kafka-producer-network-thread | producer-1] DEBUG org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Give up sending metadata request since no node is available
2019-01-25 17:22:04,112 [kafka-producer-network-thread | producer-1] DEBUG org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Give up sending metadata request since no node is available
Кажется, клиент не знает о резервном копировании сервера; как я могу устранить неисправность / исправить это?
(Я использую сервер Kafka и библиотеки версии 2.1)