[Concept] 1-2. Flink 클러스터 배포 방식과 고가용성

y001·2026년 1월 9일

Apache Flink Hands-On

목록 보기
13/17

개요

Flink 클러스터는 실행 환경과 운영 방식에 따라 여러 방식으로 배포할 수 있다. 배포 방식에 따라 JobManager와 TaskManager의 실행 위치, 리소스 관리 주체, 확장 방식이 달라진다. 대표적으로 Standalone 모드와 Kubernetes 기반 배포 방식이 사용된다.

Standalone 모드

Standalone 모드는 관리자가 JobManager와 TaskManager를 미리 실행해 두고 클러스터를 구성하는 방식이다. JobManager와 TaskManager는 고정된 서버나 VM에서 실행되며, 클러스터가 사용할 수 있는 리소스의 크기도 사전에 정해진다. 구조가 단순하고 실행 환경이 고정되어 있어 동작을 추적하거나 디버깅하기가 비교적 쉽다. 외부 리소스 관리 시스템에 의존하지 않기 때문에 설정도 직관적인 편이다. 반면 리소스가 고정되어 있어 작업 부하 변화에 따라 클러스터를 동적으로 확장하기는 어렵다. TaskManager를 추가하려면 관리자가 직접 프로세스를 실행해야 하며, 자동 확장이나 축소 기능은 제공되지 않는다.

Kubernetes 기반 배포

Kubernetes 기반 배포 방식에서는 Flink가 Kubernetes를 통해 클러스터 자원을 관리한다. 이 환경에서 Flink는 Kubernetes API를 사용하여 TaskManager를 Pod 형태로 생성하거나 제거할 수 있다. 처리해야 할 데이터 양이나 작업 부하에 따라 TaskManager Pod를 늘리거나 줄일 수 있으며, 이를 통해 클러스터 자원을 효율적으로 사용할 수 있다. 또한 Kubernetes가 제공하는 스케줄링, 장애 복구, 리소스 격리 기능을 활용할 수 있다.

고가용성(HA, High Availability)

Flink 클러스터에서 JobManager는 작업 실행을 계획하고 제어하는 중심 컴포넌트이다. 기본 구성에서는 JobManager가 단일 인스턴스로 실행되며, 이 경우 JobManager 장애가 클러스터 전체에 영향을 줄 수 있다. 이를 위해 Flink는 설정을 통해 JobManager 고가용성 구성을 활성화할 수 있다.

high-availability: zookeeper
high-availability.storageDir: hdfs:///flink/ha
high-availability.zookeeper.quorum: zk1:2181,zk2:2181,zk3:2181

high-availability.storageDir은 JobManager가 공유하는 실행 메타데이터 저장 경로이며, 모든 JobManager 인스턴스가 접근 가능한 공유 스토리지(HDFS, S3, NFS 등)를 사용한다.

고가용성 구성의 목적은 JobManager 프로세스가 중단되더라도 Job 실행을 복구할 수 있도록 하는 데 있다. 이를 위해 Flink는 JobManager를 다중 인스턴스로 실행하고, 외부 시스템을 활용해 리더 선출과 상태 공유를 수행한다.

HA 구성에서는 여러 JobManager 중 하나만 Active 상태로 동작하며, 나머지는 Standby 상태로 대기한다.

0개의 댓글