본문 바로가기
반응형

IT Knowledge/ElasticSearch6

Elasticsearch 안정적인 클러스터 운영 노하우 노드 부트스트랩 과정 이해마스터 노드와 데이터 노드 분리하기클러스터 관리 API주요 체크포인트 [노드 부트스트랩 과정 이해]노드 부트스트랩 = 노드가 최초 실행시, 동작할 환경을 체크하는 작업을 스스로 수행한다.  Elasticsearch에서는 운영시 발생 가능한 다양한 문제점을 미연에 방지하기 위해, 엘라스틱서치 노드가 실행될 때 좀 더 강력한 검사를 수행하게 된다. 부트스트랩 체크 과정을 통해 필수 설정이 잘못되어 있을 경우, 사용자에게 알리고 해당 설정이 정상적으로 수정 될때까지 엘라스틱서치를 강제 종료반드시 필수 설정이 완료 되어야만 실행되도록 강제한다.  이러한 노드 부트스트랩 과정이 항상 실행할 필요는 없지만, 운영환경의 경우는 필수로 필요하다. 개발 모드(Development Mode)로컬동.. 2024. 8. 6.
ElasticSearch 대용량 처리를 위한 시스템 최적화. 노드의 실행환경과 JVM옵션ElasticSearch 6버전 이상부터는 JAVA 1.8 이상을 사용하도록 강제하고 있다. ElasticSearch에 적용된 JVM옵션. ElasticSearch도 JVM위에서 실행되는 자바 어플리케이션이기 때문에 실행시 적용될 JVM옵션들을 튜닝해서 기본 설정으로 제공한다. 그리고, 분산 시스템 특성장 Scale-up / Scale-Out 이 빈번하며, 장애복구시 데이터 리밸런싱에 의해 많은 메모리를 사용하기 때문에 전체적인 성능 향상을 위해 JVM튜닝은 필수라 할수있다.  JVM튜닝값은 ElasticSearch에서 기본적으로 제공한다. 수년동안 개발되어 오면서 경험을 바탕으로 분산시스템에 적합한 JVM 옵션이 대부분 최적화 되어서 제공되므로, 기본값에서 크게 수정할 필요는.. 2024. 8. 6.
ElasticSearch Cluster 구성 고려사항 시스템 규모가 커지면, 노드들의 성격에 따라 전용 노드를 구성하고 그에 맞는 하드웨어와 운영방식이 필요하다. 또한 가용성을 높이기 위해 HA 방안도 고민해야 하는데, 마스터 후보 전용 노드는 가능하면 홀수(1,3,5)배열로 구성하며, 나머지 노드들은 하드비트를 통해 주기적으로 상태 검사를 수행해는 것이 중요하다.  성능과 안정성을 위한 운영 클러스터 고려사항엘라스틱서치를 실제 서비스로 운영하기 위해서 가장 신경써야 할 부분은 서비스의 안정성과 지속성일 것이다. 아무리 빠른 성능이라도 요청량을 수용하지 못하거나 검색을 제대로 처리하지 못한다면 운영에서는 사용할 수 없을것이다.  노드 구성 계획마스터 노드 : 최소 3개데이터 노드 : 최소 2대 ~ @이외에 인덱싱 부하량에 따라 : 인제스트 노드 추가검색 부.. 2024. 5. 28.
ElasticSearch 인덱스(Index)란? ElasticSearch에서 인덱스(Index)는 유사한 특성을 가지고 있는 문서를 모아둔 문서 컬렉션이다. (Document를 저장하는 논리적 단위라고 볼 수 있다. ) Ex) 고객정보, 상품정보, 주문정보 등이 각 인덱스가 될 수 있다. 관계형 데이터베이스로 보자면 테이블과 유사한 개념이다.  MySQL엘라스틱서치테이블인덱스레코드도큐먼트컬럼필드스키마매핑 클러스터 내부에 생성되는 모든 인덱스는 클러스터 내에서 유일한 인덱스명을 가져야 한다.  인덱스 명을 이용해서 데이터 생성, 수정, 삭제, 검색(CRUD)이 이뤄지므로 중요한 요소이다. (인덱스명은 모두 소문자)(255 바이트를 넘을 수 없다) 과거에는 인덱스 내부에 여러 개의 타입을 생성하는 것이 가능했지만, 현재 인덱스에는 하나의 타입만 생성해야 .. 2024. 5. 28.
ElasticSearch 샤드의 최적화 클러스터는 인덱스를 최대 몇 개까지 생성할 수 있을까?하나의 샤드 크기는 과연 얼마가 적당한가?ElasticSearch로 서비스를 운영하고 있다면, 모두가 고민해봤을만한 주제이다. 시간이 지날 수록 데이터의 크기는 점점 커지고, 서비스는 살아있는 생물 같아서 관심을 주지 않으면 금방 엉망이 되어 버진다. 현재 서비스가 월활하게 된다고 해서 앞으로도 서비스가 월활하게 될것이라는 보장은 없다. 데이터가 계속 증가할 수 있기 때문에, 항상 최적화를 위해 고민해야 한다는 것이다.  운영 중에 샤드의 개수를 수정해도 되는가?원칙적으로 클러스터를 운영중에 인덱스의 샤드 개수를 수정하는 것은 불가능하다. 하지만, 서비스를 운영하다보면, 데이터의 크기가 점점 더 커지고 너무 많은 데이터가 쌓이면, 샤드의 부하가 발생할.. 2024. 5. 28.
ElasticSearch를 구성하는 개념 ElasticSearch를 구성하는 주요 구성요소로 어떤 것이 있는지 다양한 개념들을 먼저 알아보자 [데이터(Data)]ElasticSearch의 Data는 "인덱스","타입","문서","필드" 구조로 구성된다.  인덱스(Index)데이터 저장 공간이다. 하나의 인덱스는 하나의 타입만 가지며, 하나의 물리적인 노드에 여러 개의 논리적인 인덱스를 생성할 수 있다. 검색시 인덱스 이름으로 문서 데이터를 검색하며, 여러 개의 인덱스를 동기에 검색하는것도 가능하다. (인덱스 이름은 모두 소문자여야 하며, 추가,수정,삭제,검색은 RESTful API로 수행가능하다. 만약 인덱스가 없는데 데이터가 추가되면? 인덱스가 자동생성된다) ES를 분산 환경으로 구성하면, 하나의 인덱스가 여러 노드에 분산 저장되어 관리된다... 2024. 5. 27.
반응형