Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
Cloudera CDH/CDP [Active Directory] AD Kerberos보안 설정 변경 방법 (Maximum lifetime for user ticket, Maximum lifetime for user ticket renewal)
Hadoop Cluster의 인증을 위해서 Windows Server의 Active Directory Kerberos를 사용하는 경우 Active Directory GPO(Goup Policy Object) 설정을 변경해야 하는 경우가 있는데 그 방법과 절차를 기술 한다. (AD Kerberos의 경우 Linux에 설정되어 있는 /etc/krb5.conf의 설정을 적용받지 않음)
1. 상황 : 약 30시간 이상 수행되는 HDFS Replication Job이 "ERROR distcp.DelegationTokenRenewer: Ticket Cache renewal failed", "kinit: Ticket expired while renewing credentials"가 발생하면서 HDFS Replication이 실패함.
2. 원인 파악 : hdfs계정으로 kinit을 하고 klist를 수행해보면 TGT Cache유효기간이 10H, Ticket Renewal lieftime이 10H으로 설정되어 있어 장기간(15H이상) 수행시 Ticket Cache renewal이 실패하면서 전체 Job이 실패하게됨(10H에 바로 fail되지 않은것은 Replication job의 내부 로직상 인증되어 처리가 시작된것은 약 15H까지는 처리를 수행하는것 같음, 15H이 넘어가면 불특정한 시간에 fail됨)
3. 조치 방법 : AD kerberos의 설정값중 다음을 추천값으로 변경해준다.
- Maximum lifetime for user ticket : 10H
- Maximum lifetime for user ticket renewal : 7D
4. 변경방법 : Windows 관리 도구 -> "그룹 정책 관리" 바로가기 아이콘에서 shift+우클릭 후 "다른 사용자로 실행" -> Domain Admins권한이 있는 관리자 계정의 id/pw 를 입력하고 실행한다.
-> "그룹 정책 개체"에서 Default Domain Policy 우클릭 하여 편집 클릭
-> 정책->Windows설정->보안설정->계정정책->Kerberos정책 부분의 값을 적절한 값으로 변경해준다.
-> 변경 정책 반영을 위해서 cmd에서 "gpupdate /force"를 반드시 수행해줘야 변경 사항이 반영된다.
5. hdfs계정으로 kinit을 수행후 klist하여 유효 기간이 원하는 기간으로 설정되어 있는지 확인한다.
*변경전(cache lifetime 10H, ticket renewal lifetime 10H)
[hadoop@node10:~]$sudo -u hdfs kinit -kt /run/cloudera-scm-agent/process/1546546453-hdfs-DATANODE/hdfs.keytab hdfs/node10.gooper.com@GOOPER.COM
[hadoop@node10:~]$sudo -u hdfs klist
Ticket cache: FILE:/tmp/krb5cc_39998
Default principal: hdfs/node10.gooper.com@GOOPER.COM
Valid starting Expires Service principal
02/27/2024 13:36:16 02/27/2024 23:36:16 krbtgt/GOOPER.COM@GOOPER.COM
renew until 02/27/2024 23:36:16
[hadoop@node10:~]$date
Tue Feb 27 13:36:40 KST 2024
* 변경후(cache lifetime 10H, ticket renewal lifetime 10H)
[hadoop@gooper01:~]$sudo -u hdfs kinit -kt /run/cloudera-scm-agent/process/1546391195-hdfs-DATANODE/hdfs.keytab hdfs/gooper01.gooper.com
[hadoop@gooper01:~]$sudo -u hdfs klist
Ticket cache: FILE:/tmp/krb5cc_39998
Default principal: hdfs/gooper01.gooper.com@GOOPER.COM
Valid starting Expires Service principal
03/12/2024 11:23:14 03/12/2024 21:23:14 krbtgt/GOOPER.COM@GOOPER.COM
renew until 03/19/2024 11:23:14
*참고
: Maximum lifetime for user ticket renewal이 설정안됨, Maximum lifetime for user ticket이면 kinit수행시 renewal/cache lifetime 10H으로 설정됨.