CDP Public Cloud(AWS) 환경에서 FreeIPA 업그레이드와 HA 업스케일이 시작 단계에서 다음 오류로 실패했다.
Duplicate key i-xxxxxxxxxxxxxxxxx (attempted merging values CloudResource[type=AWS_INSTANCE, name='...-master-1', ...] and CloudResource[type=AWS_INSTANCE, name='...-master-2', ...])
제어 플레인이 FreeIPA 노드 목록을 instanceId 를 키로 Map 으로 만드는데, master-1 과 master-2 의 CloudResource 레코드가 같은 EC2 인스턴스 ID 를 가리켜 Collectors.toMap 이 예외를 던진 것이다. 이전 repair/scale 작업이 중간에 실패하면서 stale 레코드가 남은 경우다.
CDP CLI 로 실제 노드 상태를 본다. 설치는 CDP CLI 설치 참고.
cdp environments get-freeipa-status --environment-name <환경이름>
cdp environments describe-environment --environment-name <환경이름>
이 사례에서는 get-freeipa-status 가 두 노드를 서로 다른 인스턴스 ID 로, 상태 CREATED·이슈 없음으로 보여줬다. 즉 인스턴스 메타데이터는 정상이고 CloudResource 추적 테이블의 master-1 항목만 stale 했다. AWS 콘솔에서 두 인스턴스의 ID·AZ·Name 태그를 캡처해 둔다.
이 메타데이터는 Cloudera 가 운영하는 제어 플레인 DB 에 있어 고객이 수정할 수 없다. 두 노드가 모두 정상으로 보이는 상태에서 repair-freeipa --repair-type REBUILD --force 를 하면 삭제 단계가 instanceId 기준으로 리소스 레코드를 지우므로 멀쩡한 노드 쪽 레코드를 건드릴 위험이 있다. 따라서 repair 없이 Support 케이스를 연다.
케이스에는 환경 CRN, 오류 전문, get-freeipa-status 출력, AWS 콘솔 캡처를 첨부하고 "master-1 의 CloudResource 레코드가 잘못된 instanceId 를 가리키므로 수정 또는 삭제해 달라" 고 요청한다. 진단 번들은 다음으로 보낸다.
cdp environments collect-freeipa-diagnostics --environment-name <환경이름> \
--description "FreeIPA upgrade duplicate key" --destination SUPPORT --case-number <케이스번호>
한쪽 노드가 실제로 죽어 있는 경우에만 stale 노드를 지정해 repair 를 1회 시도한다. REBOOT 는 같은 EC2 를 재사용하므로 중복이 풀리지 않고, REBUILD 가 인스턴스를 재생성한다. 같은 오류가 나면 반복하지 않는다.
cdp environments repair-freeipa --environment-name <환경이름> --instances <instanceId> --repair-type REBUILD --force
cdp environments get-repair-freeipa-status --operation-id <operationId>