TTransportException: Could not start SASL: Error in sasl_client_start (-1)
SASL(-1): generic failure: GSSAPI Error: ... Server not found in Kerberos database
클라이언트가 만들어 낸 서비스 principal 이 KDC 에 없다는 뜻이다. Impala 의 SPN 은 impala/<FQDN>@REALM 형식이므로, 접속 주소가 FQDN 이 아니면 어긋난다.
짧은 이름이나 IP 로 접속하지 않는다. 이것이 가장 흔한 원인이다.
impala-shell -k --ssl -i coord01.example.com:21050
역방향 DNS 가 엉뚱한 이름을 돌려줘도 같은 증상이 난다. /etc/krb5.conf 에서 정규화 동작을 확인한다.
[libdefaults]
rdns = false
dns_canonicalize_hostname = false
default_realm = EXAMPLE.COM
KDC 에 principal 이 실제로 있는지 본다.
kvno impala/coord01.example.com@EXAMPLE.COM
klist -kt /var/run/cloudera-scm-agent/process/*-impala-IMPALAD/impala.keytab
로드밸런서를 거친다면 LB 이름의 SPN 이 별도로 필요하다. Cloudera 환경에서는 Impala 서비스의 로드밸런서 설정에 그 이름을 등록해 CM 이 principal 을 만들게 한다.
GSSAPI Error: Unspecified GSS failure. Minor code may provide more information
메시지 자체는 아무것도 알려 주지 않는다. 순서대로 좁힌다.
티켓이 있는지 본다.
klist
kinit user@EXAMPLE.COM
시계가 맞는지 본다. Kerberos 는 기본적으로 5분 이상 어긋나면 거부한다.
timedatectl status
chronyc tracking
keytab 으로 붙는 배치라면 keytab 의 principal 과 요청하는 principal 이 같은지, 암호화 방식(enctype)이 KDC 정책과 맞는지 확인한다.
자세한 원인은 디버그 출력을 켜면 드러난다.
KRB5_TRACE=/dev/stderr impala-shell -k --ssl -i coord01.example.com:21050
impalad could not instantiate ... 처럼 기동 단계에서 실패하면 클라이언트 문제가 아니다. impalad 로그를 본다.
tail -200 /var/log/impala/impalad.ERROR
keytab 파일 권한, principal 불일치, 포트 충돌, 그리고 --scratch_dirs 경로 부재가 흔한 원인이다.