CDP Base + ECS 비프로덕션 환경의 Kerberos/LDAP 인증 서버로 FreeIPA 1대를 내장 DNS(BIND) 와 함께 세우고, 클러스터 노드를 IPA 클라이언트로 조인하는 절차다. 예시 값은 realm HADOOP.COM, 도메인 hadoop.com, 서버 ipa.hadoop.com(192.168.10.10), 노드 cdpm1~3(.11~.13), cdpw1~3(.14~.16), ecsm1~3(.17~.19), ecsw1~3(.20~.22) 다.
외부 DNS 를 따로 운영하는 구성이면 --setup-dns 대신 --no-host-dns 를 쓰고 A/PTR 과 _kerberos._tcp·_ldap._tcp SRV 레코드를 외부 DNS 에 직접 넣는다.
hostnamectl set-hostname ipa.hadoop.com
echo "192.168.10.10 ipa.hadoop.com ipa" >> /etc/hosts
sysctl net.ipv6.conf.lo.disable_ipv6 # 0 이어야 함 (IPv6 loopback 필요)
getenforce # Enforcing 또는 Permissive. Disabled 는 설치 거부
dnf install -y chrony && systemctl enable --now chronyd && chronyc tracking
# RHEL 8 계열
dnf module enable -y idm:DL1 idm:DL1/dns
dnf install -y ipa-server ipa-server-dns bind-dyndb-ldap
# RHEL 9 계열은 모듈 없이 dnf install -y ipa-server ipa-server-dns
firewall-cmd --permanent --add-service={freeipa-4,dns,ntp}
firewall-cmd --reload
ipa-server-install \
--realm=HADOOP.COM --domain=hadoop.com \
--hostname=ipa.hadoop.com --ip-address=192.168.10.10 \
--setup-dns --forwarder=<상위 DNS IP> --auto-reverse \
--ds-password='${DS_PASSWORD}' --admin-password='${ADMIN_PASSWORD}'
상위 DNS 가 없으면 --forwarder 대신 --no-forwarders, 도메인이 기존 DNS 와 겹치면 --allow-zone-overlap 을 붙인다. 설치 후 검증한다.
cat /etc/resolv.conf # nameserver 127.0.0.1
kinit admin && klist
dig @localhost _kerberos._tcp.hadoop.com SRV +short
dig @localhost -x 192.168.10.10 +short
ipactl status
Web UI 는 https://ipa.hadoop.com 이며 admin 으로 로그인해 Identity → Users / Groups 에서 사용자·그룹을 만든다.
노드 12대의 A/PTR 을 한 번에 만든다.
kinit admin
ipa dnsrecord-add hadoop.com cdpm1 --a-rec=192.168.10.11 --a-create-reverse
# ... 나머지 노드 동일
ipa dnsrecord-add hadoop.com '*.apps.ecsm1' --a-rec=192.168.10.17
ECS 의 Data Services UI 는 console-cdp.apps.<APPDOMAIN> 처럼 .apps 하위 호스트 기반 라우팅으로 노출되므로, 인그레스 호스트(ecsm1) 를 APPDOMAIN 으로 잡으면 와일드카드는 *.apps.ecsm1.hadoop.com 이어야 한다. 와일드카드에는 PTR 이 없으며 .17 의 PTR 은 ecsm1.hadoop.com 하나만 둔다.
나머지 노드는 /etc/resolv.conf 가 FreeIPA 를 보게 한다.
nmcli con mod <연결명> ipv4.dns 192.168.10.10 ipv4.dns-search hadoop.com
nmcli con up <연결명>
dnf install -y ipa-client
ipa-client-install --domain=hadoop.com --realm=HADOOP.COM \
--principal=admin --password='${ADMIN_PASSWORD}' --mkhomedir --unattended
resolv.conf 가 FreeIPA 를 가리키면 SRV 자동발견으로 --server 없이 조인된다. 여러 대는 FQDN 을 한 줄에 하나씩 적은 host_hadoop.txt 를 순회하며 SSH 로 실행하고 admin 비밀번호는 read -s 로 한 번만 받는다.
read -s -p "admin password: " ADMIN_PW; echo
while read -r h; do
ssh root@"$h" "dnf install -y ipa-client && ipa-client-install --domain=hadoop.com --realm=HADOOP.COM --principal=admin --password='$ADMIN_PW' --mkhomedir --unattended"
done < host_hadoop.txt
unset ADMIN_PW
조인한 노드에서 SSSD·Kerberos 를 검증한다.
id <ipa-user>
getent passwd <ipa-user>
kinit <ipa-user> && klist
CM LDAP 연동과 ldapsearch 검증용으로 조회 전용 계정을 만들고 비밀번호 만료로 조회가 끊기지 않도록 minlife=0 을 둔다.
ipa user-add cdpadmin --first=CDP --last=Admin --password
ipa pwpolicy-mod --minlife=0
ldapsearch -x -H ldap://ipa.hadoop.com -D "uid=cdpadmin,cn=users,cn=accounts,dc=hadoop,dc=com" -W \
-b "cn=users,cn=accounts,dc=hadoop,dc=com" "(uid=*)" uid
기본 DN 구조는 사용자 cn=users,cn=accounts,dc=hadoop,dc=com, 그룹 cn=groups,cn=accounts,dc=hadoop,dc=com 이다.