본문 바로가기

Elasticsearch7

[Elasticsearch] 검색엔진 Elasticsearch.yaml 파일 옵션 정리 elasticsearch 옵션 관련 정리elasticsearch.yamlcluster.name같은 Network에서 여러 클러스터가 존재할 경우, 클러스터 이름으로 클러스터 구분동일한 이름을 가진 노드는 자동으로 같은 클러스터에 속한다nodenode.name : 같은 클러스터 내에서, 각 노드를 식별하는 고유 이름node.mastermaster 노드 역할 지정 여부데이터 노드 관제node.data데이터 노드 역할 지정 여부샤드 및 리플리카 저장쿼리 밎 인덱싱 작업 수행node.ingest인제스트 노드 역할 지정 여부색인하기 전에 데이터 전처리(파이프라인 적용)node.mlML 노드 역할 지정 여부머신러닝 작업 수행(로그 분석, 이상 탐지 등에 사용)node.attr.box_type: livebox_typ.. 2025. 1. 7.
[Elasticsearch] 검색엔진 EC2 인스턴스 타입 변경, iostat 명령어 디스크 I/O 확인 01. ES 색인 속도 증대를 위한 EC2 인스턴스 타입 변경 중 사용한 iostat 명령어최근 AWS에 구동되고 있는 검색 엔진 인덱스 노드(node-i: 색인 시 사용되는 노드)의 인스턴스 유형을 변경해야 했다.기존 c6g.8xlarge를 사용하던 EC2 인스턴스 타입을 c6gd.8xlarge로 변경해야 했다. 이유는 c6g.8xlarge의 경우 EBS Only로 EBS의 경우 네트워크로 연결이 되어 있지만내장 스토리지를 사용하는 c6gd.8xlarge 유형을 사용하기에 색인(인덱싱) 속도를 높히기에는 내장 스토리지를 사용하는 것이 좋다고 판단하였기 때문이다.01-1. 현재 AWS EC2 인덱스 노드 아키텍처현재 인덱스 노드에 데이터 색인 후 데이터 노드로 샤드를 분배하는 과정은 아래와 같다.현재 풀.. 2024. 8. 9.
[Elasticsearch] Elastciearch 클러터에서 특정 Node 제외 시키기 01. Elastciearch 클러터에서 특정 Node 제외 시키기상용 클러스터 상에서 18대로 운영중인 데이터 노드의 개수를 12대로 줄여야 하는 작업이 필요했다.하여 해당 노드가 구동되고 있는 서버 상에서 kill -9 {PID}를 통해 프로세를 중지하여도 되지만,이렇게 되면 클러스터 상태가 Yellow가 되는 것은 물론이며 데이터 손실을 가지고 올 수 있다고 한다.하여 이번 시간에는 클러스터의 Green 상태를 유지하면서 특정 노드를 클러스터 상에서 제외시키는 방법에 대해 알아보자.01-1. 클러스터 상에서 노드 제외# 특정 IP를 가진 노드들을 샤드 재배치 대상에서 제외PUT /_cluster/settings{ "transient": { "cluster.routing.allocation.e.. 2024. 8. 9.
[Elasticsearch] ES 운영중인 Live 서비스의 alias 교체 방법 01. ES 운영중인 Live 서비스의 alias 교체 방법실제 Live 서비스 중에 핵심 메타인 인덱스의 alias를 변경해야 하는 순간이 왔다상용 Live 서비스이기에 상당히 부담감이 심했지만, 어떻게든 alias를 교체해야 했다이번에는 alias를 near real time으로 변경한 방법에 대해 기재한다01-1. alias 변경 필요 이유기존 메타 인덱스(alias-xxx-meta)의 경우 shard 개수가 6개 replica 개수가 1개로 지정되 있었다하지만 서비스 이슈로 인하여 데이터 노드를 6개 -> 18개로 증설하는 작업이 있었다여기서 보면 shard가 6개인데 replica가 1개이면6(shard) * (1(replica) + 1) = 12개의 샤드 생성18(데이터 노드 개수) / 12개.. 2024. 8. 9.
[Elasticsearch] ES 클러스터 운영 중 노드 순차적 재시작(Rolling Restart) 01. ES 클러스터 운영 중 노드 순차적 재시작(Rolling Restart)상용 ES를 운영하던 도중 데이터 노드의 CPU가 90%를 넘겨서 재기동을 진행해야 했다또한 Thread 상태를 확인해본 결과 rejected 된 결과가 1,414,844개가 쌓여 있었다❌ 하지만 데이터 노드를 그냥 재기동해버리면 해당 노드의 데이터에 문제가 발생할 수 있다이러한 이유로 인해 서비스를 운영하는 도중에 데이터 노드를 재기동 하는 방법에 대해 기재한다01-1. 이슈 내용 확인특정 data node(2대)의 CPU가 3분간 98% 유지# 현재 ES thread_pool에서 rejected 된 thread 상태 및 원인 내용 확인GET _cat/thread_pool?v&s=rejected:desc# Kibana 상에서.. 2024. 8. 9.
[Elasticsearch] Elasticsearch reindex 방법 01. Elasticsearch 재색인?기존 검색엔진을 운영하는 과정 중에 동의어 관련된 작업을 수행하기 위해 핵심 메타 템플릿을 수정해야 하는 경우가 발생하였다. 하여 STG 환경에서 기존에 생성이 되어있는 2300만건 정도의 데이터를 Logstash + DB 프로시저를 사용하여 색인하는 방식 대신 reindex 명령어를 사용하여 데이터를 복사하는 과정을 적어보았다 😀상용 서비스의 경우 현재 alias를 사용하고 있고 i-node에 신규 인덱스를 생성해서 인덱싱을 수행하고 후에 해당 인덱스의 routing.allication.require.box*type option 이 index로 설정이 되어 있고, python 로직에서routing.allocation.require.boxtype option을 l.. 2024. 4. 12.
[Elasticsearch] 인덱스와 샤드 - Index & Shards 01. 인덱스와 샤드 - Index & Shards01-1. 도큐먼트(document)?{ "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ // n개의 document를 포함 { "_index" : "seed-group", "_type" : "_doc", "_id" : "3W5esI0B0pf4.. 2024. 2. 16.