롤링 업데이트(Rolling updates)

롤링 업데이트(Rolling updates)

Apache Druid 클러스터를 다운타임 없이 롤링 업데이트하려면 프로세스를 특정 순서로 업데이트하는 것이 좋아요. 이 문서에서는 권장 업데이트 순서와 노드별 롤링 방식, 그리고 다운그레이드 순서를 설명드릴게요.

출처: 문서

본문

다운타임 없는 Apache Druid 클러스터 롤링 업데이트를 위해서는 Druid 프로세스를 다음 순서로 업데이트할 것을 권장해요:

  • Historical
  • Middle Manager와 Indexer (있다면)
  • Broker
  • Router
  • Overlord (참고: autoscaling 기반 교체를 사용한다면 Middle Manager 프로세스보다 먼저 Overlord를 업그레이드할 수 있어요.)
  • Coordinator (또는 통합된 Coordinator+Overlord)

롤링 다운그레이드가 필요하다면 순서를 반대로 하고 Coordinator 프로세스부터 시작하세요. 최신 릴리스에 대한 정보는 Druid releases 문서를 참고하세요.

Historical

Historical 프로세스는 한 번에 하나씩 업데이트할 수 있어요. 각 Historical 프로세스는 업데이트 전에 서빙하던 모든 세그먼트를 메모리 맵핑(memory map)하기 위한 시작 시간이 있습니다. 이 시작 시간은 호스트 하드웨어에 따라 보통 몇 초에서 몇 분 정도 걸려요. 각 Historical 프로세스를 충분한 지연 간격(단일 프로세스 시작에 필요한 시간보다 큰 간격)을 두고 업데이트하기만 하면, 전체 Historical 클러스터를 롤링 업데이트할 수 있어요.

Overlord

Overlord 프로세스는 손쉽게 한 번에 하나씩 롤링 방식으로 업데이트할 수 있어요.

Middle Managers/Indexers

Middle Manager나 Indexer 노드는 배치(batch)와 실시간(realtime) 인덱싱 태스크를 모두 실행해요. 일반적으로 실시간 인덱싱 태스크가 실패하지 않도록 Middle Manager를 업데이트하기를 원할 겁니다. 이를 위한 전략은 세 가지가 있어요.

롤링 재시작 (restore 기반)

druid.indexer.task.restoreTasksOnRestart=true로 설정하면 Middle Manager를 한 번에 하나씩 롤링 방식으로 업데이트할 수 있어요. 이 경우 restoring을 지원하는 인덱싱 태스크는 Middle Manager 재시작 시 상태를 복원하며 실패하지 않습니다. 현재는 실시간(realtime) 태스크만 restoring을 지원하므로, 실시간이 아닌 인덱싱 태스크는 실패하고 다시 제출해야 합니다.

롤링 재시작 (graceful-termination 기반)

Middle Manager는 "disable" API를 사용해 정상 종료(gracefully terminated)시킬 수 있어요. 이 방식은 복원 가능하지 않은 태스크를 포함한 모든 태스크 타입에 동작합니다. Middle Manager를 업데이트할 준비를 하려면 <Middle_Manager_IP:PORT>/druid/worker/v1/disable로 POST 요청을 보내세요. 그러면 Overlord는 더 이상 이 Middle Manager에 태스크를 보내지 않습니다. 이미 시작된 태스크는 완료될 때까지 실행됩니다. 현재 상태는 <Middle_Manager_IP:PORT>/druid/worker/v1/enabled로 확인할 수 있어요. 기존의 모든 태스크를 보려면 <Middle_Manager_IP:PORT>/druid/worker/v1/tasks로 GET 요청을 보내세요. 이 목록이 비면 Middle Manager를 안전하게 업데이트할 수 있습니다. Middle Manager가 다시 시작되면 자동으로 다시 enabled 됩니다. <Middle_Manager_IP:PORT>/druid/worker/v1/enable로 POST를 보내 수동으로 Middle Manager를 enable할 수도 있어요.

Autoscaling 기반 교체

Overlord에서 autoscaling이 활성화되어 있다면, Overlord 프로세스가 새로운 Middle Manager 프로세스들을 대량으로 실행하고 태스크가 끝나면 오래된 것을 정상 종료시킬 수 있어요. 이 과정은 druid.indexer.runner.minWorkerVersion=#{VERSION}을 설정해 구성합니다. Overlord 프로세스를 업데이트할 때마다 VERSION 값을 증가시켜야 하며, 그러면 새 Middle Manager의 대량 실행이 트리거됩니다. druid.indexer.autoscale.workerVersion=#{VERSION} 설정도 함께 해야 해요.

Standalone Real-time

Standalone real-time 프로세스는 한 번에 하나씩 롤링 방식으로 업데이트할 수 있어요.

Broker

Broker 프로세스는 한 번에 하나씩 롤링 방식으로 업데이트할 수 있어요. Broker는 유효한 결과를 반환하기 전에 클러스터의 전체 상태를 로드해야 하므로 각 프로세스 업데이트 사이에 약간의 지연이 필요합니다.

Coordinator

Coordinator 프로세스는 한 번에 하나씩 롤링 방식으로 업데이트할 수 있어요.

더 알아보기 (Learn more)

  • Druid releases: 최신 릴리스 및 업그레이드 정보.