주요 개념
카카오클라우드의 Advanced Managed Search는 OpenSearch 기반 인덱스·데이터를 완전관리형으로 제공하여, 사용자가 복잡한 클러스터 운영 없이 대규모 데이터를 통합·검색·분석할 수 있도록 지원하는 관리형 검색 서비스입니다.
클러스터
클러스터(Cluster) 는 인덱싱 및 분석 작업을 수행하기 위해 여러 노드(Data Node, Cluster Manager Node)로 구성된 OpenSearch 실행 단위입니다. 클러스터는 고성능 검색 처리, 데이터 내구성, 확장성, 보안 구성을 포함하는 통합 검색 및 분석 환경을 제공하며, 다양한 애플리케이션과 시스템에서 발생하는 데이터를 안정적으로 탐색할 수 있도록 지원합니다.
Advanced Managed Search 서비스에서 OpenSearch 클러스터를 생성하고 관리하는 방법은 다음과 같습니다.
클러스터 수명주기 및 상태
클러스터 수명주기
| 상태 | 설명 |
|---|---|
Pending | 클러스터 생성을 위한 리소스 할당 및 초기화 대기 상태 |
Provisioning | 클러스터 구성을 위한 인프라 자원(Opensearch Nodes, Dashboards, Nginx 등)을 배포 중인 상태 |
Initializing | 배포된 인프라에 OpenSearch 엔진, 플러그인 등 실행 환경을 설정하고 데이터 노드 간의 통신을 연결 중인 상태 |
Running | 클러스터 내 모든 노드가 정상 가동되어, 검색 엔진 서비스 및 대시보드 접속이 가능한 상태 |
Scaling Out | 변화하는 워크로드에 대응하기 위해 데이터 노드 수량을 확장 중인 상태 - 만약 데이터 노드 Scaling 중인 상태에서 Provisioning Error 상태가 될 시 Cluster는 Scaling Out 상태로 잔존합니다. |
Volume Resizing | 클러스터 전체 데이터 저장 용량 확보를 위해 각 데이터 노드의 볼륨 크기를 확장 중인 상태 |
Error | 시스템 장애 또는 헬스체크 실패로 인해 검색 서비스 제공이 중단된 상태 - 해당 상태에서는 클러스터 삭제만 가능합니다. |
Deleting | 클러스터 및 관련된 모든 인프라 리소스를 삭제 중인 상태 |
네트워크 설정
Advanced Managed Search의 모든 노드는 사용자가 지정한 VPC 내부에서 생성됩니다. 클러스터가 정상적으로 구성되기 위해서는 보안 그룹을 설정해야 하며, 노드 간 통신 및 관리용 트래픽이 허용되도록 필요한 인바운드 규칙을 구성해야 합니다. 네트워크 설계를 통해 외부 접근을 차단하거나 특정 서브넷·보안 정책을 통해 클러스터 접근 경로를 제어할 수 있습니다. 네트워크와 보안 설정에 대한 자세한 설명은 보안 그룹을 참고하시기 바랍니다.
데이터 노드
데이터 노드는 OpenSearch에서 실제 데이터를 저장하고 인덱스하는 역할을 수행하는 핵심 컴포넌트입니다. 클러스터 생성 시 가용 영역별로 동일한 개수의 데이터 노드가 자동으로 분산 배치되며, 노드 간 균일한 분산은 안정적인 검색 성능과 장애 복구 능력 확보에 기여합니다. 사용자가 지정한 인스턴스 유형과 볼륨 크기가 각 데이터 노드에 동일하게 적용됩니다.
데이터 노드는 다음과 같은 작업을 담당합니다.
- 문서 인덱스 및 저장
- 샤드(Shard) 배치 및 레플리카 유지
- 검색 쿼리 처리 및 데이터 반환
- 클러스터 부하 분산 및 확장 대응
워크로드 증가 시 데이터 노드를 추가하거나 볼륨을 확장하여 클러스터 성능을 손쉽게 높일 수 있습니다.
데이터 노드 수명주기 및 상태
데이터 노드 수명주기
| 상태 | 설명 |
|---|---|
Pending | 초기 상태로서 데이터 노드 생성을 위한 배정 대기 상태 |
Provisioning | 데이터 노드의 리소스(VM, Network, Port, Volume 등)를 배포 중인 상태 |
Provisioning Error | 리소스 부족이나 스토리지 할당 오류 등의 사유로 인프라 구성에 실패한 상태 |
Initializing | 인프라 구성 완료 후, OpenSearch 데이터 엔진 및 모니터링 에이전트 등 데이터 처리에 필요한 파일 설치 및 실행 중인 상태 |
Running | 데이터 노드가 정상 가동 중이며, 데이터 저장(Indexing) 및 검색(Search) 요청을 수행할 수 있는 상태 |
Volume Resizing | 저장 공간 부족 해소 또는 성능 향상을 위해 할당된 볼륨 크기를 확장 중인 상태 |
Error | 헬스체크(Health Check) 실패 또는 하드웨어 장애 등으로 인해 데이터 입출력이 불가능한 상태 - 해당 상태에서는 클러스터 삭제만 가능합니다. |
Deleting | 데이터 노드 및 저장된 데이터를 삭제 중인 상태 |
볼륨
클러스터 생성 시 지정한 볼륨 크기는 모든 데이터 노드에 동일하게 적용되며, 각 노드는 할당된 볼륨을 활용해 데이터를 저장합니다. OpenSearch는 샤드 단위로 데이터를 분산 저장하고 복제하므로, 노드 볼륨 크기는 클러스터의 전체 저장 용량과 성능에 직접적인 영향을 줍니다. 볼륨 크기는 클러스터 운영 중에도 중단 없이 확장할 수 있으며, 대량의 로그 또는 분석 데이터를 저장하는 워크로드에서 유연한 확장성을 제공합니다. 볼륨에 대한 자세한 설명은 볼륨 생성 및 관리 문서를 참고하시기 바랍니다.
클러스터 매니저 노드
클러스터 매니저 노드는 클러스터 상태를 유지하고 메타데이터를 관리하는 역할을 수행하는 노드입니다. Advanced Managed Search에서는 항상 3개의 클러스터 매니저 노드가 자동 생성되며, 가용 영역에 분산 배치되어 장애 상황에서도 안정적인 운영을 보장합니다.
클러스터 매니저 노드는 다음 기능을 수행합니다.
- 클러스터 메타데이터 관리
- 샤드 배치 및 이동 결정
- 노드 상태 모니터링 및 장애 감지
- 마스터 선출 프로세스 관리
사용자는 매니저 노드를 직접 관리하거나 수정할 필요가 없으며, 카카오클라우드가 안정적인 운영을 위해 노드를 항상 3개로 유지합니다.
| 상태 | 설명 |
|---|---|
Pending | 초기 상태로서 클러스터 매니저 노드 생성을 위한 배정 대기 상태 |
Provisioning | 클러스터 매니저 노드의 리소스(VM, Network, Prot, Volume 등)를 배포 중인 상태 |
Provisioning Error | 리소스 부족이나 네트워크 설정 오류 등의 사유로 인프라 구성에 실패한 상태 |
Initializing | 인프라 구성 완료 후, OpenSearch 프로세스 및 클러스터 관리 에이전트 등 필수 소프트웨어를 설치하고 실행 중인 상태 |
Running | 클러스터 매니저 노드가 정상 가동 중이며, 클러스터 메타데이터 관리 및 모니터링이 가능한 상태 |
Error | 헬스체크(Health Check) 실패 또는 마스터 선출 프로세스 오류 등으로 인해 노드 제어 기능을 수행할 수 없는 상태 - 해당 상태에서는 클러스터 삭제만 가능합니다. |
Deleting | 클러스터 매니저 노드 및 관련 리소스를 삭제 중인 상태 |
클러스터 매니저 노드 수명주기 및 상태
클러스터 매니저 노드 수명주기
마스터 사용자
마스터 사용자는 OpenSearch 클러스터의 관리 작업을 수행하기 위한 최상위 권한 계정입니다.
클러스터 생성 시 사용자 이름과 비밀번호를 설정하며, 생성 후 OpenSearch Dashboards 또는 API를 통해 다음과 같은 작업을 수행할 수 있습니다.
- 인덱스 생성·삭제
- 사용자/역할 기반 접근 제어 관리
- 템플릿, ISM(Index State Management) 정책 설정
- 검색·분석 작업을 위한 권한 부여
- 클러스터 상태 조회 및 구성 변경
마스터 사용자 계정은 클러스터 운영에 핵심적인 권한을 갖기 때문에, 안전한 비밀번호 설정 및 접근 관리가 중요합니다.
OpenSearch 버전
- 지원 중인 버전
- 지원하지 않는 API
Advanced Managed Search는 현재 아래 버전을 제공합니다.
| OpenSearch 버전 | 지원 시작일 | 지원 종료일 |
|---|---|---|
| 2.19.2 | 2026-02-26 | - |
OpenSearch 2.19의 경우 Advanced Managed Search는 다음 API를 지원하지 않습니다. 그 외 자세한 API 정보는 OpenSearch API reference를 참고해 주세요.
- Deprecated API를 호출한 경우 410 응답이 내려옵니다.
- 지원하는 API 중
PUT /_snapshot/{repository}를 사용하려면 IAM 액세스 정보가 필요합니다. IAM 액세스 키 발급 문서를 참고하여 액세스 키를 준비해 주세요.
POST /_cluster/voting_config_exclusions/{node_name}
DELETE /_cluster/voting_config_exclusions
POST /_cluster/voting_config_exclusions
DELETE /_cluster/routing/awareness/weights
DELETE /_cluster/routing/awareness/{attribute}/weights
GET /_cluster/routing/awareness/{attribute}/weights
PUT /_cluster/routing/awareness/{attribute}/weights
POST /_cluster/reroute
PUT /_cluster/decommission/awareness/{awareness_attribute_name}/{awareness_attribute_value}
DELETE /_cluster/decommission/awareness
GET /_cluster/decommission/awareness/{awareness_attribute_name}/_status
GET /_script_context
GET /_script_language
GET /_nodes/hot_threads
GET /_nodes/{nodeId}/hot_threads
GET /_remotestore/stats/{index}
GET /_remotestore/stats/{index}/{shard_id}
POST /_remotestore/_restore
POST /_cache/clear
POST /_close
POST /_forcemerge
GET /_settings
GET /_settings/{name}
GET /_segments
POST /_open
PUT /_settings
POST /_upgrade
GET /_upgrade
GET /_cat/nodeattrs
GET /_plugins/_replication/autofollow_stats
GET /_plugins/_replication/follower_stats
GET /_plugins/_replication/leader_stats
GET /_plugins/_replication/{index}/_pause
GET /_plugins/_replication/{index}/_start
GET /_plugins/_replication/{index}/_status
POST /_plugins/_replication/{index}/_resume
POST /_plugins/_replication/{index}/_stop
POST /_plugins/_replication/_autofollow
DELETE /_plugins/_replication/_autofollow
PUT /_plugins/_replication/{index}/_update
커스텀 API
S3 Snapshot
카카오클라우드 Object Storage를 OpenSearch의 장기 스토리지로 활용할 수 있도록 지원하는 커스텀 API입니다. 인덱스의 스냅샷을 생성하여 데이터를 안전하게 보관하고, 필요 시 특정 시점으로 복구할 수 있습니다.
1. Snapshot Repository 등록
스냅샷을 저장할 저장소(Repository)를 먼저 설정해야 합니다. 카카오클라우드의 Object Storage 정보를 입력하여 등록합니다.
PUT _snapshot/my_s3_repository
{
"type": "s3",
"settings": {
"endpoint": "https://objectstorage.kr-central-2.kakaocloud.com",
"path_style_access": true,
"bucket": "test-s3",
"region": "kr-central-2",
"access_key": "YOUR_ACCESS_KEY",
"secret_key": "YOUR_SECRET_KEY",
"base_path": "snapshots"
}
}
- endpoint: Object Storage 접속 주소
- base_path: 버킷 내 스냅샷이 저장될 하위 디렉토리 경로
API 호출을 위해 필요한 IAM 액세스 키 ID와 보안 액세스 키를 발급 절차는 API 사용 준비 문서를 참고하세요.
2. Snapshot 생성 (Backup)
특정 인덱스 혹은 전체 데이터를 스냅샷으로 생성합니다.
POST _snapshot/my_s3_repository/my-first-snapshot
{
"indices": "test-index*",
"ignore_unavailable": true,
"include_global_state": false,
"partial": false
}
- indices: 백업할 인덱스 패턴 (
예: test-index*) - partial:
false설정 시, 일부 샤드가 실패할 경우 스냅샷 생성을 중단하여 데이터 무결성을 보장합니다.
3. Snapshot 상태 조회
생성된 스냅샷의 정보 및 진행 상태(SUCCESS, IN_PROGRESS 등)를 확인합니다.
GET /_snapshot/my_s3_repository/my-first-snapshot
주요 응답 필드
| 필드명 | 설명 |
|---|---|
| state | 스냅샷 결과 (SUCCESS 시 완료) |
| indices | 스냅샷에 포함된 인덱스 목록 |
| duration_in_millis | 스냅샷 생성에 소요된 시간 |
4. Snapshot 복구 (Restore)
저장된 스냅샷을 사용하여 데이터를 복구합니다. 기존 인덱스와 충돌을 방지하기 위해 이름을 변경하여 복구하는 방식을 권장합니다.
POST /_snapshot/my_s3_repository/my-first-snapshot/_restore
{
"indices": "test-index*",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": "(.+)",
"rename_replacement": "$1_restored",
"include_aliases": false
}
- rename_pattern / replacement: 복구된 인덱스 이름 뒤에
_restored를 추가하여 기존 데이터와 구분합니다.
5. 복구 결과 확인
복구된 인덱스가 정상적으로 생성되었고, 상태가 open인지 확인합니다.
GET /_cat/indices/test-index2_restored
- Response 예시:
yellow open test-index2_restored KlLBNIBcReazgKnutWZbXw 1 1 0 0 208b 208b