데이터 레이크하우스 구축 시 Hue, HiveServer2, Impala, NiFi 를 L4 장비 뒤에 두어 이중화할 때 인프라팀에 요청할 VIP·포트·분산 방식·세션 유지 조건을 정리한 것이다. 마스터 3대(HiveServer2·Hue), 워커 6대(Impala Daemon), NiFi 3대 규모를 기준으로 하며, 개발 클러스터는 대수만 줄어들고 방식은 같다.
| 서비스 | VIP Port | Real Server | Real Port | LB Method | 세션 유지 | Idle Timeout | 용도 |
|---|---|---|---|---|---|---|---|
| Hive | 10000 | Master ×3 | 10000 | RoundRobin | 불필요 | 3600s 이상 | HiveServer2 JDBC/ODBC (TCP) |
| Hive | 10001 | Master ×3 | 10001 | RoundRobin | 불필요 | 3600s 이상 | HiveServer2 HTTP Transport (선택) |
| Hue | 8889 | Master ×3 | 8889 | Source IP Hash | 필요 | — | Hue Web UI |
| Impala | 21050 | Coordinator 노드 | 21050 | LeastConn | 불필요 | 3600s 이상 | Impala JDBC/ODBC, BI 툴 |
| Impala | 21055 | Coordinator 노드 | 21050 | Source IP Hash | 필요 | 43200s (12h) | Hue → Impala 전용 |
| NiFi | 8443 | NiFi ×3 | 8443 | Source IP Hash | 필요 | — | NiFi Web UI (HTTPS, TCP Passthrough) |
HiveServer2·Hue 설치 노드가 확정되지 않았으면 마스터 3대 전체를 Real Server 로 등록하고 미설치 노드는 헬스체크로 자동 제외되게 한다. 헬스체크는 전 서비스 TCP 체크(Hue 는 HTTP GET / 가능), 간격 5초·실패 3회 제외로 요청한다.
21000(Beeswax) 은 impala-shell 과 구형 ODBC 만 쓰고, Impala 4.x(CDP 7.1.9 이상) 부터 impala-shell 기본 프로토콜이 hs2(21050) 로 바뀌어 신규 구축이면 생략할 수 있다. 구버전 impala-shell 사용자는 --protocol=hs2 를 명시해야 한다.
21050 하나로는 안 된다. Hue 의 thrift 라이브러리는 TCP 커넥션 풀을 재사용하므로 한 사용자 세션이 같은 커넥션을 쓴다는 보장이 없고, 커넥션이 다른 impalad 로 분산되면 세션과 실행 중인 쿼리를 잃어 "Results have expired" 오류가 난다. Cloudera 는 Hue 전용 포트에만 Source IP Persistence 와 6~12시간의 긴 타임아웃을 걸고, 나머지 클라이언트는 LeastConn 으로 분산하도록 포트별 프로파일을 나누라고 안내한다. 같은 포트에 Source IP Hash 를 걸면 JDBC 사용자까지 특정 코디네이터로 쏠린다.
Dedicated Coordinator 구성(is_executor=false) 에서는 Executor 전용 노드가 클라이언트 연결을 받지 않으므로 L4 Real Server 는 코디네이터 노드만 등록한다. 워커 6대를 모두 묶으면 Executor 노드는 헬스체크에 실패하거나 붙어도 쿼리가 되지 않는다.
코디네이터를 마스터에 올리는 안은 권장하기 어렵다. Cloudera 가이드는 Dedicated Coordinator 가 Executor 와 같거나 더 큰 메모리를 요구하고(메타데이터 캐시), 다른 서비스가 없는 노드에 두라고 하며, 10노드 미만 클러스터는 DataNode 위에 코디네이터 1대를 권장한다. 마스터가 128GB, 워커가 512GB 인 구성이라면 요건과 반대다.
| 구분 | A. 마스터 코디네이터 | B. 워커 2대 코디네이터 전용 | C. 특화 없음 |
|---|---|---|---|
| Impala Daemon 배치 | Master ×3 (Coord only) + Worker ×6 (Exec only) | Worker ×2 (Coord only) + Worker ×4 (Exec only) | Worker ×6 (Coord+Exec) |
| L4 Real Server | Master ×3 | Worker ×2 | Worker ×6 |
| 메모리 적합성 | 부적합 | 적합 | 적합 |
| 서비스 경합 | NN/HS2/Hue 와 경합 | 없음 | 일부 |
| 실 연산 노드 | 6대 | 4대 | 6대 |
6워커 규모에서는 B 또는 C 가 합리적이다. CM 에서는 Role Group 을 Coordinators / Executors 로 나누고 노드를 이동시킨 뒤 Impala Daemon Specialization 을 지정한다.
CM 관리 CFM 기준 NiFi 포트는 8443(nifi.web.https.port, L4 대상), 9088(클러스터 노드 프로토콜), 6342(nifi.cluster.load.balance.port, 노드 간 FlowFile 재분배), 10443(Site-to-Site) 이다. 6342 는 이름에 load balance 가 들어가지만 노드 간 직통 포트라 L4 요청서에 섞이면 안 된다. 순수 바이너리 설치는 기본값이 다르다(HTTPS 9443, Node Protocol 11443).
NiFi 는 JWT 서명 키가 노드별로 분리돼 있어 로그인 후 다음 요청이 다른 노드로 가면 Signed JWT rejected: Another algorithm expected, or no matching key(s) found 로 거부된다. Source IP Hash 는 옵션이 아니라 필수 조건이다. NiFi 쪽에서는 nifi.web.proxy.host 에 각 노드 FQDN:8443 과 LB FQDN:8443 을 모두 나열해야 하며(없으면 로그인 후 흰 화면 또는 System Error), LB FQDN 이 각 노드 인증서 SAN 에 포함돼야 한다. 클라이언트 인증서(mTLS) 인증이면 L4 TCP Passthrough 여야 하고, L7 SSL Termination 을 하면 클라이언트 인증서가 백엔드로 전달되지 않는다. LDAP/Kerberos 로그인이면 L7 도 가능하나 X-ProxyScheme / X-ProxyHost / X-ProxyPort 헤더 전달이 필요하다. 개발 NiFi 가 1대여도 접속 URL 체계를 맞추기 위해 VIP 를 만들고 nifi.web.proxy.host 에 개발 VIP 를 넣어 둔다.
| 확인 항목 | 내용 | 우선순위 |
|---|---|---|
| HA 구성 방식 | Active-Standby 또는 Active-Active | 필수 |
| Floating VIP | 전 VIP 가 장비 2대에 공유되는 Floating VIP 여야 한다 | 필수 |
| 퍼시스턴스 테이블 동기화 | Source IP Persistence 테이블이 장비 간 동기화되지 않으면 페일오버 순간 Hue 세션과 실행 중 쿼리가 전량 유실된다 | 필수 |
| 세션 테이블 동기화 | Hive/Impala 장시간 커넥션의 미러링 지원 여부 | 권장 |
| HA 인터커넥트 | 장비 간 HA 통신용 회선/VLAN | 필수 |
| 전환 테스트 | 오픈 전 강제 페일오버 시 Hue 로그인 세션 유지 검증 | 필수 |
전 클러스터 노드 → AD 방향으로 389(LDAP/StartTLS), 636(LDAPS, 권장), 3268/3269(Global Catalog, 다중 도메인 시), 88 TCP+UDP(Kerberos), 464 TCP+UDP(kpasswd), 53 TCP+UDP(DNS) 를 연다. DC 인증서 SAN 에 VIP FQDN 이 포함돼야 LDAPS hostname 검증이 통과하고, 사내 Root CA 는 전 노드 truststore 에 등록한다. AD 티켓은 PAC 때문에 커서 UDP 단편화로 간헐 실패할 수 있으니 krb5.conf 에 udp_preference_limit = 1 로 TCP 를 강제하고 88 TCP 를 반드시 연다. Kerberos 는 5분 이상 시각 차이가 나면 실패하므로 AD 서버를 NTP 동기화 대상에 포함한다. Bind 전용 서비스 계정, Base DN, Object Class, Kerberos 전용 OU 와 위임 계정은 별도 협의하고 인증정보는 메일에 넣지 않는다.