Elasticsearch Log-Cluster ILM

JunMyung Lee·2023년 11월 23일
0

Elasticsearch

목록 보기
30/37

인덱스 수명 주기(Index Lifecycle Management, ILM)

데이터의 수명 주기를 관리하고 정의하는 기능, 이를 사용하면 데이터를 적절한 시점에 생성, 업데이트, 삭제하고, 디스크 공간을 효과적으로 활용이 가능. 주로 로그 데이터와 같이 시간이 지남에 따라 더 이상 필요하지 않는 데이터를 자동으로 삭제하는 데 사용.

인덱스 수명 주기 구성

  • Hot Phase (핫 페이즈): 데이터가 활발하게 쓰이는 단계로, 최근 데이터를 저장하는데 사용
  • Warm Phase (웜 페이즈): Hot Phase에서 더 이상 업데이트되지 않은 데이터를 따로 보관하는 단계,
    이 단계에서는 검색 성능을 향상시키기 위해 인덱스를 최적화 할 수 있다
  • Cold Phase (콜드 페이즈): 데이터가 거의 검색되지 않는 단계로, 저장 공간을 최적화하고 비용을 절감하기 위해 사용
  • Delete Phase (삭제 페이즈): 데이터가 완전히 삭제되는 단계로, 더 이상 보관할 필요가 없는 데이터를 삭제

인덱스 수명 주기를 설정

  • 정책 생성: ILM 정책을 생성하여 각 단계의 조건과 설정을 정의
  • 인덱스에 정책 할당: 각 인덱스에 적절한 정책을 할당하여 수명 주기를 적용
  • 인덱스 관리: Elasticsearch는 설정된 조건에 따라 데이터를 이동하고 삭제

Hot-Warm-Cold를 구현하는데 필요한 최소 노드는 2개 (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
          }
        }
      }
    }
  }
}
  1. phases: 수명 주기의 각 단계를 정의. 일반적으로 hot, warm, cold, delete와 같은 단계를 설정
  2. min_age: 각 단계의 시작 조건으로, 해당 단계가 적용되기 전에 인덱스가 설정된 최소 기간을 지정. 예를 들어, hot 단계가 7일 이내의 인덱스만 처리하도록 설정
  3. actions: 각 단계에서 수행되어야 하는 작업을 정의
    • rollover: 인덱스가 일정 크기 또는 나이에 도달하면 새로운 인덱스로 롤오버되도록 설정
      • max_size: 새로운 인덱스로 롤오버할 때 지정된 최대 크기
      • max_age: 새로운 인덱스로 롤오버할 때 지정된 최대 나이
    • allocate: 특정한 조건에 따라 샤드를 할당
      • require: 할당을 위한 조건을 지정. 예제에서는 box_type으로 노드의 역할을 기준으로 할당
    • freeze: 해당 단계에 도달하면 인덱스를 읽기 전용 상태로 변경하여 추가적인 쓰기를 막음
    • set_priority: 해당 단계에서의 우선 순위를 지정. 높은 우선 순위는 더 높은 성능을 의미하며, 낮은 우선 순위는 저장 공간을 최적화하는 데 사용

인덱스 템플릿 연결

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
    }
  }
}

0개의 댓글