
ElasticSearch, 오픈 소스로의 귀한!
2025. 2. 20. 13:20
Elasticsearch
작년 2024년 8월30일에 엘라스틱서치 블로그 글을 기반으로 작성을 하였습니다. 그동안 엘라스틱서치는 7.10 버전 이전까지만 오픈소스화 하였고 그 윗 버전은 아니였습니다. 하지만 Elasticsearch를 다시 오픈 소스라고 부르게 되었습니다. 아마도 AWS의 OpenSearch와의 문제때문에 오픈소스로 다시 돌아왔지만, 개발자들에겐 더할 나위없는 좋은 선택인거같습니다. 좋은 소식 : 3년이 지난 지금, Amazon은 자체 포크에 대한 완전한 헌신을 보여주었으며, 초기의 시장 혼란도 대부분 해소되었습니다. 또한, AWS와의 파트너십은 더욱 견고해졌으며, 그 결과 올해의 AWS 파트너로 선정되는 영예를 안았습니다. 저는 시간이 지나면 결국 우리가 다시 오픈 소스 프로젝트로 돌아갈 수 있을 것이라 믿어..

엘라스틱서치의 마스터 후보 노드 및 캐시
2024. 12. 28. 00:17
Elasticsearch
* 마스토 후보 노드는 마스터 노드 선출하는 역할을 하며, 또 자신이 마스터 노드로 선출될 수도 있다. Quorum-based decision making Quorum : 마스터 후보 노드의 부분집합 수, 즉 투표를 위해 필요한 마스터 노드의 최소 개수 (매우 중요해서 시스템이 주로 관리한다.)공식 : Minumim number of master nodes(quorum) = number of master-eligible nodes / 2)+1 * 기본적으로 분산시스템에서도 사용이 되는점 마스터 후보 노드 구성시 주의사항1. 3개 이상의 홀 수로 구성2. 한번에 절반 이상의 노드 제거 금지3. initial_master_nodes 와의 관계 3개 이상의 홀 수로 구성 split brain을 ..
엘라스틱서치 - 장애 복구 작업 도중 새 인덱스 생성될 때
2023. 10. 4. 10:20
Elasticsearch
추석 연휴 동안 서버 3대중 한대가 죽어서 2대로 테스트 데이터를 받고있었습니다. 오늘 회사 서버를 살려서 연결 해 보니, 새로 생성된 데이터의 샤드가 제대로 분배가 되지 않는것을 파악했습니다. 그 해결책으로 밑에 구문을 보시면 될거같습니다. 장애 대응으로 한참 샤드 복구와 샤드 할당 작업 등이 수행 중인 바쁜 상황에서 새 인덱스가 생성 될 때를 조심해야 한다. 엘라스틱서치에 새 샤드가 할당될 때 엘라스틱서치는 해당 노드에 총 몇개의 샤드가 있는지 체크한 뒤 적은 수의 샤드를 들고 있는 노드에 새 샤드를 할당한다. 문제는 장애 복구 작업 중 방금 재시작된 노드는 샤드 복구가 제대로 끝난 상태가 아니라는 것이다. 이 노드는 겉으로 보기에는 적은 샤드를 들고 있는 것으로 판정된다. 이때 새 인덱스가 생성되면..
엘라스틱서치 - 샤드 운영전략
2023. 10. 1. 17:03
Elasticsearch
인덱스의 샤드 개수(number_of_shards) 는 한 번 지정하면 reindex 등의 특별한 작업을 수행하지 않는 한 변경할 수 없다. 그런데 샤드 개수를 어떻게 지정하느냐에 따라 엘라스틱서치 클러스터 전체의 성능이 크게 달라진다. 중요한 설정임에도 불구하고 샤드 개수를 정확히 어떤 값으로 지정하면 되는지 딱 정해주는 알기 쉽고 명확한 기준은 알려진 바가 없다. 이 문제는 굉장히 어려운 문제다. 이번 절에서는 샤드 개수를 어떻게 지정할지 그 전략을 알아보도록 하겠습니다. 샤드 크기와 개수 조정 클러스터에 샤드 숫자가 너무 많아지면 클러스터 성능이 눈에 띄게 떨어지게 됩니다. 샤드 하나당 루씬 인덱스가 하나씩 더 뜨며 힙을 차지 한다. 주 샤드를 하나 더 띄울 때마다 복제본 샤드도 늘어나는 것을 고려..
엘라스틱서치 - 대량 색인이 필요할 때
2023. 10. 1. 15:55
Elasticsearch
서비스 출시를 위한 초기 데이터 세팅이나 마이그레이션, reindex 를 통한 인덱스 재생성 등 대량 색인이 필요할 때가 있습니다. 이런 경우에는 색인 도중 데이터를 조회할 필요가 없다. 따라서 다음과 같은 설정을 통해 색인 속도를 높일 수 있습니다. PUT my_index/_settings { "refresh_interval" : "-1", "number_of_replicas" : 0 } refresh를 끄고 복제본 샤드 개수를 0으로 지정해서 복제본 생성을 중지하는 설정이다. 작업이 끝나면 원래 설정으로 복구하는 것을 잊지 않아야 한다.

엘라스틱서치(Elasticsearch) - 동시성 제어
2023. 9. 19. 16:59
Elasticsearch
개요 Elasticsearch 와 같은 분산형 시스템을 다룰 때 동시성 때문에 문제가 생길수 있습니다. Elasticsearch는 어떻게 동시성 문제를 제어하는지에 대해 알아볼겁니다. 그 이전에 동시성 문제가 무엇인지 알아야합니다. 동시성 제어는 여러 클라이언트나 요청이 동시에 Elasticsearch 클러스터에 접근하거나 쓰기 작업을 수행할 때 데이터 무결성을 유지하고 성능을 최적화하기 위해 사용되는 중요한 개념입니다. 인덱스 동시성 - 여러 클라이언트가 동시에 같은 인덱스에 데이터를 쓰려고 할때, Elasticsearch 는 쓰기 작업을 조정하여 데이터 무결성을 보장합니다. 검색 동시성 - 많은 클라이언트가 동시에 검색을 실행할 때, Elasticsearch 는 검색 요청을 효율적으로 처리하기 위해 ..

엘라스틱서치에서 인덱스 생명주기 (elasticsearch- index_lifeCycle management) 설정
2023. 8. 23. 14:47
Elasticsearch
ES Version : 7.12 kibana : 7.12 요건 : 핫 노드에서 웜 노드로 하루 주기 설정하여 이동 및 read_only 설정했을때와 안했을때의 차이점 현재 핫 노드에서 한달 주기로 저장된 인덱스를 웜 노드로 이동시키고 있습니다. 단지 테스트를 위해서 하루 주기로 변경하였습니다. 대략 한달 된 인덱스 xxxx_2023.08 의 데이터는 하루 대략 2천만건 씩 쌓여서 한달에 대략 6억건 정도가 쌓입니다. 용량으로는 7기가에서 8기가 사이 정도가 됩니다. 요구사항 : 처음 핫웜 아키텍쳐를 도입할때, 고객사에서 한달이 지난 데이터 즉, 웜노드에서도 드물게 읽기 및 검색 외에 업데이트를 원하였습니다. index.lifeCycle management 에서 read_only를 기본설정으로 해놓았기때문..
엘라스틱서치 샤드 재배치 (elasticsearch Shard relocation)
2023. 8. 3. 10:14
Elasticsearch
엘라스틱서치 버전 7.12 입니다. Elasticsearch의 샤드 재배치는 클러스터 내의 한 노드에서 다른 노드로 샤드(인덱스 파티션)를 이동하는 프로세스입니다. 샤드 재배치는 종종 노드 간 데이터 분포의 균형을 맞추거나 클러스터 성능을 최적화하기 위해 수행됩니다. 다음은 Elasticsearch에서 샤드 재배치를 수행하는 단계입니다. 클러스터 상태 확인 : 샤드 재배치를 수행하기 전에 Elasticsearch 클러스터의 상태를 확인하는 것이 중요합니다. 다음 명령을 실행하여 이를 수행할 수 있습니다. curl -X GET "http://localhost:9200/_cluster/health" 샤드 재배치를 진행하기 전에 클러스터 상태가 녹색 또는 노란색인지 확인하십시오. Enable Shard All..

Elasticsearch - node repurpose tool to clean up
2023. 2. 27. 10:11
Elasticsearch
elasticsearch-node repurpose tool to clean up 이라는 문구와 함께 엘라스틱서치가 실행이 안되는 경우도 가끔 있습니다. 일단 elasticsearch.yml 에서 node.roles: ["master"] 로만 구성이 되어있으면 이런 밑에 오류 구문이 나옵니다. java.lang.IllegalStateException: node does not have the data role but has shard data 에러가 발생하게 되는데요. 이를 해석해보면, Data 역할을 받지 않았는데, 샤드 데이터를 가지고 있다는 에러 메시지입니다. 해결방법 ./bin/elasticsearch-node repurpose 명령어를 쳐 주면 이러한 구문 이 나옵니다. 저는 Y를 눌러서 진행해..

elasticsearch 클러스터간 검색
2023. 2. 25. 17:39
Elasticsearch
안녕하세요, 오늘은 엘라스틱서치에서 클러스터간의 검색을 알아보려고합니다. 전제 조건 클러스터간 검색에는 원격 클러스터가 필요합니다. 로컬 조정 노드에서 cluster_remote_client 노드 역할이 필요합니다. cluster_remote_{remote이름}.seeds:["192.168.0.201:9200"] 서버 43번 Elasticsearch.yml 에 추가할 내용 node.roles:[master,remote_cluster_client] search.remote.connect:true Cluster_remote_named.seeds:["192.168.0.201:9200"] 서버 46번 Elasticsearch.yml 에 추가할 내용 search.remote.connect:true Cluster_..