본문으로 건너뛰기
최종 수정: 에

탄력적 확장 및 축소

Apache Doris는 온라인 탄력적 확장 및 축소를 지원합니다. 서비스 중단 없이 노드를 동적으로 추가하거나 제거하여 비즈니스 성장에 대응하거나 유휴 리소스를 회수할 수 있습니다. BE 노드의 확장 및 축소는 클러스터 가용성에 영향을 주지 않지만 데이터 마이그레이션을 유발하므로, 사용량이 적은 시간대에 수행하세요.

적용 시나리오​

시나리오권장 작업설명
FE 읽기 처리 용량 부족Observer FE 추가Observer는 Master 선출에 참여하지 않으며, 메타데이터 읽기 처리량을 높이는 데 사용됩니다
FE 고가용성 부족Follower FE 추가Master와 Follower의 총수를 홀수로 유지하세요. 3개 또는 5개를 권장합니다
BE 스토리지 또는 컴퓨팅 리소스 부족BE 추가BE를 추가하면 시스템이 자동으로 리밸런싱을 수행하여 데이터를 점진적으로 고르게 분산합니다
특정 BE 노드 제거BE 축소(DECOMMISSION)먼저 데이터를 마이그레이션한 후 노드를 오프라인으로 전환합니다. 프로덕션 환경에서 권장합니다
노드에 장애가 발생하여 즉시 제거해야 함BE 축소(DROP)노드를 즉시 오프라인으로 전환하며 데이터가 손실될 수 있습니다. 비정상 상황에서만 사용하세요

사전 요구 사항​

  • 클러스터 관리자 권한이 있어야 하며, ALTER SYSTEM 작업을 실행할 수 있어야 합니다.
  • 각 노드의 IP, 포트, 역할(Follower / Observer / BE)이 계획되어 있어야 합니다.
  • 새로 추가하는 FE 노드의 http_port는 클러스터 내 모든 기존 FE 노드의 http_port와 같아야 합니다.
  • BE 축소는 사용량이 적은 시간대에 수행하고, 마이그레이션되는 데이터를 수용할 수 있도록 충분한 디스크 공간을 확보해야 합니다.

FE 클러스터 확장 및 축소​

FE 역할 설명​

Doris FE 노드에는 다음 세 가지 역할이 있습니다. 모든 FE 노드는 전체 메타데이터를 보유합니다.

역할Master 선출 참여 여부메타데이터 읽기/쓰기용도
Master예(하나만 존재)읽기 + 쓰기메타데이터 읽기와 쓰기를 처리합니다. Master의 메타데이터 변경 사항은 BDB JE 프로토콜을 통해 다른 노드에 동기화됩니다. 클러스터당 Master는 하나만 허용됩니다
Follower예읽기메타데이터 읽기를 처리합니다. Master에 장애가 발생하면 Follower들이 선출 절차를 시작하여 새 Master를 선출합니다. Master와 Follower의 총수는 홀수로 유지하는 것을 권장합니다
Observer아니요읽기메타데이터 읽기를 처리합니다. Master 선출에 참여하지 않으며, FE 읽기 처리 용량을 확장하는 데 사용됩니다

일반적으로 FE 노드 하나는 BE 노드 10~20개를 지원할 수 있으며, 대부분의 워크로드에서는 FE 노드 3개면 충분합니다.

FE 클러스터 확장​

참고

새 FE 노드를 추가할 때는 다음 사항에 유의하세요.

  • 새 FE의 http_port는 클러스터 내 모든 기존 FE 노드의 http_port와 같아야 합니다.
  • Follower 노드를 추가할 때는 클러스터 내 Master와 Follower 노드의 총수를 홀수로 유지하는 것을 권장합니다.
  • show frontends 명령은 현재 클러스터에 있는 모든 노드의 포트와 역할을 표시합니다.
  1. FE 노드를 시작합니다.

    fe/bin/start_fe.sh --helper <leader_fe_host>:<edit_log_port> --daemon
  2. FE 노드를 등록합니다.

    노드를 Follower FE로 등록합니다.

    ALTER SYSTEM ADD FOLLOWER "<follower_host>:<edit_log_port>";

    또는 노드를 Observer FE로 등록합니다.

    ALTER SYSTEM ADD OBSERVER "<observer_host>:<edit_log_port>";
  3. 새로 추가한 FE 노드의 상태를 확인합니다.

    show frontends;

FE 클러스터 축소​

축소할 때는 클러스터에 남아 있는 Master와 Follower 노드의 총수가 여전히 홀수인지 확인하세요. 다음 명령으로 노드를 제거합니다.

ALTER SYSTEM DROP FOLLOWER[OBSERVER] "<fe_host>:<edit_log_port>";

축소 후에는 제거한 FE 노드의 배포 디렉터리 아래에 있는 파일을 수동으로 삭제하세요.

BE 클러스터 확장 및 축소​

BE 클러스터 확장​

  1. BE 프로세스를 시작합니다.

    be/bin/start_be.sh
  2. BE 노드를 등록합니다.

    ALTER SYSTEM ADD backend '<be_host>:<be_heartbeat_service_port>';

등록이 완료되면 새 BE가 자동으로 클러스터에 합류하고, Doris는 기존 데이터를 새 노드로 점진적으로 재분산합니다.

BE 클러스터 축소​

BE 노드를 축소할 때는 DROP 또는 DECOMMISSION을 선택할 수 있습니다. 두 방식의 차이는 다음과 같습니다.

항목DROPDECOMMISSION
노드 제거 방식노드를 곧바로 오프라인으로 전환하고 BE 노드를 제거합니다명령 실행 후 해당 BE의 데이터를 다른 노드로 마이그레이션하려고 시도합니다. 마이그레이션이 완료되면 BE 노드가 자동으로 오프라인으로 전환됩니다
적용 시점실행 즉시 적용됩니다데이터 마이그레이션이 완료된 후 적용됩니다. 클러스터의 현재 데이터 양에 따라 수 시간에서 하루까지 걸릴 수 있습니다
복제본이 하나인 테이블 처리데이터가 손실될 수 있습니다데이터가 손실되지 않습니다
여러 노드 동시 제거데이터가 손실될 수 있습니다데이터가 손실되지 않습니다
프로덕션 환경 권장 여부프로덕션 환경에서는 권장하지 않습니다프로덕션 환경에서 권장합니다

DROP으로 BE 노드 제거​

노드에 장애가 발생했거나 테스트 환경에서 노드를 즉시 제거해야 할 때 사용합니다.

ALTER SYSTEM DROP backend "<be_host>:<be_heartbeat_service_port>";

DECOMMISSION으로 BE 노드 제거​

프로덕션 환경에서는 DECOMMISSION을 권장합니다. 먼저 데이터를 마이그레이션한 후 노드를 오프라인으로 전환합니다.

ALTER SYSTEM DECOMMISSION backend "<be_host>:<be_heartbeat_service_port>";

DECOMMISSION 명령 사용 시 유의 사항:

  • DECOMMISSION은 비동기 작업입니다. 실행 후 SHOW backends;에서 BE 노드의 SystemDecommissioned 상태가 true로 표시되면 해당 노드의 제거 작업이 진행 중이라는 의미입니다.
  • DECOMMISSION 명령은 실패할 수 있습니다. 예를 들어, 남은 BE의 스토리지 공간이 제거 대상 BE의 데이터를 수용하기에 부족하거나 남은 머신 수가 최소 복제본 수를 충족하지 못하면 명령을 완료할 수 없으며, 해당 BE의 SystemDecommissioned는 true로 유지됩니다.
  • DECOMMISSION 진행 상황은 TabletNum으로 확인할 수 있으며, 이 값은 SHOW PROC '/backends';로 조회합니다. 제거 작업이 진행 중이면 TabletNum이 계속 감소합니다.
  • CANCEL DECOMMISSION BACKEND "<be_host>:<be_heartbeat_service_port>";로 제거 작업을 취소할 수 있습니다. 취소 후에는 해당 BE에 현재 남아 있는 양의 데이터가 그대로 유지되며, Doris가 나중에 리밸런싱을 수행합니다.
  • balance_slot_num_per_path 매개변수를 조정하여 데이터 마이그레이션 속도를 변경할 수 있습니다.

자주 묻는 질문​

질문: 새로 추가한 FE 노드가 시작되지 않으면 어떻게 하나요?​

기존 FE와 http_port가 다르거나, Leader FE를 지정하는 데 --helper를 사용하지 않았기 때문입니다. http_port 설정을 fe.conf에서 확인하세요. 처음 시작할 때는 --helper <leader_fe_host>:<edit_log_port>를 사용하세요.

질문: ALTER SYSTEM ADD FOLLOWER 실행 후에도 클러스터가 새 노드를 인식하지 못하면 어떻게 하나요?​

노드가 시작되지 않았거나, 네트워크에 연결할 수 없거나, 방화벽이 포트를 차단하고 있을 수 있습니다. show frontends로 노드 상태를 확인하고 edit_log_port에 접근할 수 있는지 확인하세요.

질문: DECOMMISSION이 오랫동안 완료되지 않으면 어떻게 하나요?​

남은 BE의 스토리지 공간이 부족하거나, 남은 노드 수가 최소 복제본 수보다 적기 때문입니다. BE 노드를 더 추가하거나, 노드를 제거하기 전에 클러스터를 확장하세요. SHOW PROC '/backends';로 TabletNum이 계속 감소하고 있는지 확인하세요.

질문: 진행 중인 DECOMMISSION을 취소하려면 어떻게 하나요?​

CANCEL DECOMMISSION BACKEND "<be_host>:<be_heartbeat_service_port>";를 실행하세요. 이후 Doris가 리밸런싱을 수행합니다.

질문: 데이터 마이그레이션이 너무 느리면 어떻게 하나요?​

기본 마이그레이션 동시 실행 수가 낮게 설정되어 있습니다. balance_slot_num_per_path 매개변수를 조정하여 마이그레이션 속도를 높이세요.

질문: FE 축소 후 디스크 공간이 확보되지 않으면 어떻게 하나요?​

축소 명령이 성공한 후, 제거한 FE 노드의 배포 디렉터리를 수동으로 삭제하여 정리하세요.