| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 알고리즘
- 맛집
- effective
- elasticsearch
- 인터페이스
- 자바
- RCP
- nodejs
- 스프링
- error
- node
- 이펙티브
- javascript
- 자바스크립트
- boot
- Git
- Spring
- 독후감
- 리뷰
- 후기
- jface
- kibana
- java
- MySQL
- 엘라스틱서치
- Spring Boot
- java8
- Web
- 백준
- JPA
- Today
- Total
wedul
elasticsearch cluster 구성 시 기본으로 생성되는 index확인 본문
elasticsearch cluster를 사용하기 위해서 cluster를 구성하기전에 꼭 추가해야하는 부분이 있는데 기본으로 생성되는 index에 대한 disable처리가 필요하다.
geoip_databases 인덱스
기본적으로 cluster 구성 시 geoip_databases가 인덱스가 추가가 되어있는데 이게 hidden index여서 모르고 지나칠 수 있다. 만약 모르고 클러스터를 구성하고 노드를 조작할 경우 해당 인덱스의 primary shard가 unassigned되면서 cluster 상태가 red가 될 수 있다.

그럼 왜 geoip_databases가 기본적으로 생기는가? 생기지 않도록 할 수 없는가?
해당 인덱스가 생성되는 이유는 ingest.geoip.downloader.enabled 속성 때문에 생성되는데 해당 속성의 기본값이 true이다. 그리고 이게 true인 상태에서 cluster red 상태로 만든 index를 지울 수 없게 되어있어서 서비스 운영시 장애를 유발할 가능성이 있다.
해결방법은 간단하다. 이미 클러스트를 구성하고 있다면 아래 api를 호출하여 ingest.geoip.downloader.enabled를 비활성화 해주면 된다.
PUT _cluster/settings
{
"persistent": {
"ingest.geoip.downloader.enabled": false
}
}
그럼 red상태에 빠졌던 클러스터는 index가 제거되면서 다시 green으로 돌아온다.

만약 클러스터를 구성하기 전이었다면 elasticsearch.yml에 해당 설정을 추가해주고 cluster를 올리는게 좋다.
ingest.geoip.downloader.enabled: false
.ds-ilm-history-*
ilm은 index lifecycle management에 약자로 elasticsearch에서 인덱스에 라이프사이클에 따라서 인덱스의 생명주기를 관리하는 것인데 이 policy에 따라서 진행된 내용을 history index에 생성한다.
하지만 이걸 사용하지 않는다고 하면 해당인덱스를 보유하고 있을 필요가 없다. 레플리카가 한개있기 때문에 만약 두개의 데이터 노드가 이탈된다면 이또한 cluster상태를 red로 만들 수 있다.
cluster 구성 시 indices.lifecycle.history_index_enabled=false를 설정해서 history가 저장되지 않게 한다.
[참고]
클러스터 생성 docker-compose.yml
version: "2"
services:
elasticsearch1:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.5
container_name: elasticsearch1
environment:
- cluster.name=docker-cluster
- node.name=elasticsearch1
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- indices.lifecycle.history_index_enabled=false
- xpack.monitoring.collection.enabled=false
- discovery.seed_hosts=elasticsearch1,elasticsearch2,elasticsearch3
- cluster.initial_master_nodes=elasticsearch1,elasticsearch2,elasticsearch3
- xpack.security.enabled=false
ports:
- "19200:9200"
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.5
container_name: elasticsearch2
environment:
- cluster.name=docker-cluster
- node.name=elasticsearch2
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- xpack.monitoring.collection.enabled=false
- indices.lifecycle.history_index_enabled=false
- discovery.seed_hosts=elasticsearch1,elasticsearch2,elasticsearch3
- cluster.initial_master_nodes=elasticsearch1,elasticsearch2,elasticsearch3
- xpack.security.enabled=false
ports:
- "29200:9200"
elasticsearch3:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.5
container_name: elasticsearch3
environment:
- cluster.name=docker-cluster
- node.name=elasticsearch3
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- xpack.monitoring.collection.enabled=false
- indices.lifecycle.history_index_enabled=false
- discovery.seed_hosts=elasticsearch1,elasticsearch2,elasticsearch3
- cluster.initial_master_nodes=elasticsearch1,elasticsearch2,elasticsearch3
- xpack.security.enabled=false
ports:
- "39200:9200"
결론
위 index들이외에도 언제든지 생성될 수 있다. 어떤 index가 설정에 따라서 기본으로 special 속성으로 생성될지 모르기 때문에 항상 클러스터 운영시 설정을 지켜보고 Index를 주기적으로 체크하는게 좋다.
'데이터베이스 > Elasticsearch' 카테고리의 다른 글
| elasticsearch routing 사용하기 (0) | 2023.07.25 |
|---|---|
| shard reroute api 테스트 (0) | 2023.07.25 |
| Line 세미나. 대규모 음악 데이터 검색 기능을 위한 Elasticsearch 구성 및 속도 개선 방법 - 2. 클러스터 튜닝 (0) | 2021.11.14 |
| Line 세미나. 대규모 음악 데이터 검색 기능을 위한 Elasticsearch 구성 및 속도 개선 방법 - 1. 검색 쿼리 개선 (0) | 2021.11.14 |
| Java Lowlevel client bulk api에서 filter_path 사용하기 (0) | 2021.07.26 |