728x90
반응형
SMALL
[Elasticsearch] ILM - Cluster 성능 개선
인덱스 수명 주기(Index Lifecycle Management, ILM)
- 데이터의 수명 주기를 관리하고 정의하는 기능
- 이를 사용하면 데이터를 적절한 시점에 생성, 업데이트, 삭제하고, 디스크 공간을 효과적으로 활용이 가능
- 주로 로그 데이터와 같이 시간이 지남에 따라 더 이상 필요하지 않는 데이터를 자동으로 삭제하는 데 사용
인덱스 수명 주기 구성
- Hot Phase (핫 페이즈): 데이터가 활발하게 쓰이는 단계로, 최근 데이터를 저장하는데 사용
- Warm Phase (웜 페이즈): Hot Phase에서 더 이상 업데이트되지 않은 데이터를 따로 보관하는 단계,
이 단계에서는 검색 성능을 향상시키기 위해 인덱스를 최적화 할 수 있다 - Cold Phase (콜드 페이즈): 데이터가 거의 검색되지 않는 단계로, 저장 공간을 최적화하고 비용을 절감하기 위해 사용
- Delete Phase (삭제 페이즈): 데이터가 완전히 삭제되는 단계로, 더 이상 보관할 필요가 없는 데이터를 삭제

인덱스 수명 주기를 설정
- 정책 생성: ILM 정책을 생성하여 각 단계의 조건과 설정을 정의
- 인덱스에 정책 할당: 각 인덱스에 적절한 정책을 할당하여 수명 주기를 적용
- 인덱스 관리: Elasticsearch는 설정된 조건에 따라 데이터를 이동하고 삭제
ㄴ Hot-Warm-Cold를 구현하는데 필요한 최소 노드는 2개 (Cold 노드는 선택사항)
ㄴ hot-warm-cold 순으로 중요도가 높음
application.yml
Hot Node (핫 노드):
node.name: hot-node
node.roles: ["hot_data"]
Warm Node (웜 노드):
node.name: warm-node
node.roles: ["warm_data"]
Cold Node (콜드 노드):
node.name: cold-node
node.roles: ["cold_data"]
ILM 설정
PUT /_ilm/policy/my_policy
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_size": "50GB",
"max_age": "30d"
},
"set_priority": {
"priority": 100
}
}
},
"warm": {
"min_age": "7d",
"actions": {
"allocate": {
"require": {
"box_type": "warm_data"
}
},
"set_priority": {
"priority": 50
}
}
},
"cold": {
"min_age": "14d",
"actions": {
"allocate": {
"require": {
"box_type": "cold_data"
}
},
"freeze": {},
"set_priority": {
"priority": 0
}
}
}
}
}
}
- phases: 수명 주기의 각 단계를 정의. 일반적으로 hot, warm, cold, delete와 같은 단계를 설정
- min_age: 각 단계의 시작 조건으로, 해당 단계가 적용되기 전에 인덱스가 설정된 최소 기간을 지정. 예를 들어, hot 단계가 7일 이내의 인덱스만 처리하도록 설정
- actions: 각 단계에서 수행되어야 하는 작업을 정의
- rollover: 인덱스가 일정 크기 또는 나이에 도달하면 새로운 인덱스로 롤오버되도록 설정
- max_size: 새로운 인덱스로 롤오버할 때 지정된 최대 크기
- max_age: 새로운 인덱스로 롤오버할 때 지정된 최대 나이
- allocate: 특정한 조건에 따라 샤드를 할당
- require: 할당을 위한 조건을 지정. 예제에서는 box_type으로 노드의 역할을 기준으로 할당
- freeze: 해당 단계에 도달하면 인덱스를 읽기 전용 상태로 변경하여 추가적인 쓰기를 막음
- set_priority: 해당 단계에서의 우선 순위를 지정. 높은 우선 순위는 더 높은 성능을 의미하며, 낮은 우선 순위는 저장 공간을 최적화하는 데 사용
- rollover: 인덱스가 일정 크기 또는 나이에 도달하면 새로운 인덱스로 롤오버되도록 설정
인덱스 템플릿 연결
PUT _template/my_template
{
"index_patterns": [
"test-*"
],
"settings": {
"index.lifecycle.name": "my_policy",
"index.lifecycle.rollover_alias": "test-alias"
}
}
PUT test-000001
{
"aliases": {
"test-alias": {
"is_write_index": true
}
}
}
728x90
반응형
LIST
'IT > Elasticsearch' 카테고리의 다른 글
[Elasticsearch] 쿠버네티스 워커노드 CPU 100% 장애 복기 (8) | 2024.07.24 |
---|---|
[Elasticsearch] Elastic Contributor Program 이란? (0) | 2024.07.10 |
[Elasticsearch] 백엔드 장애 감지 알림 시스템 구축 (ELK 기반 준실시간 서버 로그 모니터링) (0) | 2024.07.06 |
[Elasticsearch] 회사 내부 첨부파일의 내용을 통합 검색할 수 있다면? (feat. Fasoo DRM, Tika, Confluence) (0) | 2024.07.05 |
[Elasticsearch] 벡터서치 구현시 텍스트 데이터 벡터화 방법 고민 (0) | 2024.07.03 |