Categories: Camel프레임워크

[Camel in Action] 16-1. Camel 클러스터링 – 고가용성과 부하 분산 구현

왜 Camel 클러스터링이 필요한가?

단일 Camel 인스턴스는 장애 발생 시 서비스가 중단됩니다. 클러스터링을 통해 여러 인스턴스를 동시에 실행하면 하나가 다운돼도 나머지가 계속 처리합니다. 하지만 모든 인스턴스가 같은 메시지를 처리하면 안 되므로 조정(coordination)이 필요합니다.

Master/Slave 패턴 – 파일 처리에서의 활용

파일 폴러처럼 오직 하나의 인스턴스만 실행해야 하는 라우트에 Master/Slave 패턴을 적용합니다. Camel의 camel-zookeeper 컴포넌트를 사용합니다.

// Master 라우트 - Zookeeper 리더 선출 통해 하나만 활성화
from("zookeeper:localhost:2181/camel/master?delay=5000&shouldReconnect=true")
  .routeId("file-poller-master")
  .to("direct:startFilePolling");

from("direct:startFilePolling")
  .from("file:incoming?move=.done")
  .to("bean:fileProcessor");

Zookeeper가 리더 선출을 관리합니다. 현재 리더가 다운되면 자동으로 다른 인스턴스가 리더가 됩니다.

여러 인스턴스 간 JMS 기반 부하 분산

JMS 큐는 본질적으로 부하 분산을 제공합니다. 여러 Camel 인스턴스가 같은 큐를 소비하면 자동으로 메시지가 분배됩니다.

// 인스턴스1과 인스턴스2가 동일한 라우트 실행
// JMS 큐가 자동으로 부하 분산
from("activemq:queue:orders?concurrentConsumers=5")
  .to("bean:orderProcessor");

concurrentConsumers를 높이면 단일 인스턴스에서 멀티스레드로 처리합니다.

Camel Cluster Service – 추상화된 클러스터링

Camel 3.x부터는 ClusterService 추상화를 통해 Zookeeper, Infinispan, Kubernetes 등 여러 클러스터 백엔드를 동일한 API로 사용합니다.

// Spring Boot에서 Kubernetes 클러스터 서비스 사용
camel.cluster.kubernetes.enabled=true
camel.cluster.kubernetes.cluster-labels[app]=camel-app

// 라우트에서 클러스터 인식 적용
from("master:file-cluster:file:incoming")
  .to("bean:fileProcessor");

master: 접두사를 붙이면 클러스터에서 한 인스턴스만 해당 from을 활성화합니다.

세션 스티키니스와 상태 공유

여러 인스턴스 간 상태를 공유해야 할 때는 Redis나 Infinispan 같은 분산 캐시를 활용합니다.

// Redis를 Aggregation 저장소로 사용 (클러스터 전체 공유)
from("activemq:queue:parts")
  .aggregate(header("correlationId"), new MyAggregator())
    .completionSize(10)
    .aggregationRepository(
      new RedisAggregationRepository("agg-repo", jedisPool))
  .to("bean:assemblyService");

어떤 인스턴스가 다음 조각을 받아도 Redis에서 상태를 찾아 집계를 계속할 수 있습니다.

zerg96

Share
Published by
zerg96

Recent Posts

충격! 코스피 8% 폭락에 SK텔레콤 AI 차단까지 – 한국의 AI 도박이 터졌다

코스피 8% 폭락, 서킷브레이커 발동, SK텔레콤 Claude AI 차단까지. 한국의 AI 레버리지 버블이 단 하루…

3주 ago

당신 얼굴이 이미 쓰이고 있다… AI 딥페이크 범죄, 생각보다 훨씬 심각합니다

SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…

4주 ago

당신 얼굴이 이미 쓰이고 있다 — AI 딥페이크 범죄, 생각보다 훨씬 심각합니다

SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…

4주 ago

달러·원 환율 급등, 지금 당신이 꼭 알아야 할 것들

달러/원 환율이 급등하는 이유와 실생활 영향을 정리했습니다. 지금 당장 활용할 수 있는 환전·투자 대응 전략까지…

4주 ago

미래에셋·미래에셋벤처투자·미래에셋생명 동반 급등, 스페이스X와 무슨 관계?

미래에셋·미래에셋벤처투자·미래에셋생명이 동반 급등한 이유는 스페이스X 상장 기대감입니다. 세 회사가 스페이스X와 어떻게 연결되어 있는지 상세히 분석했습니다.

4주 ago

스페이스X 상장 D-데이? 일론 머스크가 절대 말 안 하는 진짜 이유

스페이스X 상장이 계속 미뤄지는 진짜 이유를 파헤쳤습니다. 화성 계획, 스타링크 분리, 국방 계약... 머스크가 절대…

4주 ago