Kafka Streams: обновление билета Kerberos - PullRequest
0 голосов
/ 10 сентября 2018

При запуске приложения Kafka stream используется следующий файл jaas. Однако билеты не обновляются автоматически потоковым приложением. Это терпит неудачу с исключением ниже после истечения срока действия билета. Что мы должны сделать, чтобы автоматически обновить билет Kerberos?

KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
useTicketCache=true
principal="astvy@DEV.ACM.COM"
useKeyTab=true
serviceName="kafka"
keyTab="/home/astvy/astvy.headless.keytab"
renewTGT=true
client=true;
};

Error

Abort sending since an error caught with a previous record (key ED1812 value org.cox.model.HourlyUnit@83e6c99 timestamp 1536165112061) to topic dub_hourlyunit_source1 due to org.apache.kafka.common.errors.SaslAuthenticationException: 
An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: 
GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]) occurred when evaluating SASL token received from the Kafka Broker. 
Kafka Client will go to AUTHENTICATION_FAILED state.

После внесения нескольких исправлений, как показано ниже (ключевое изменение - установить значение useTicketCache в false), мы не увидели повторения вышеуказанной проблемы, но поскольку TGT для обновления настроен на 7 дней, мы продолжаем отслеживать, имеет ли проблема были решены. Проверим еще несколько дней и подтвердим это, если следующие изменения навсегда устранят проблему.

KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
useTicketCache=false
principal="astvy@DEV.ACM.COM"
useKeyTab=true
serviceName="kafka"
keyTab="/home/astvy/astvy.headless.keytab"
storeKey=true;
};

1 Ответ

0 голосов
/ 13 сентября 2018

Kafka Streams использует Kerberos и SSL точно так же, как и любые другие клиенты Kafka, такие как производитель и потребитель, в своих конфигурациях, поэтому я не могу думать о каких-либо проблемах внутри самого Streams, которые могут привести к невозможности продления заявки.

Я сделал быстрый поиск в Google, и один из них может быть связан с: https://issues.apache.org/jira/browse/HADOOP-10786,, если вы используете J8.

...