티스토리 뷰
ElasticSearch 설치 하기
- Java 설치
sudo yum install java-1.8.0-openjdk-devel.x86_64 -y
java -version
- ElasticSearch 7.7.0 버전 설치
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.0-x86_64.rpm
rpm -ivh elasticsearch-7.7.0-x86_64.rpm
systemctl enable elasticsearch.service
ElasticSearch Config 설정하기
- JVM 사용 메모리 설정
vi /etc/elasticsearch/jvm.options
#OS 메모리에 따라 조절
Xms8gXmx8g
- ElasticSearch Config 설정
vi /etc/elasticsearch/elasticsearch.yml
# 클러스터
# 지정한 이름으로 노드들이 묶이게 됩니다.
cluster.name: 클러스터 명
# 노드 (master / data / ingest / coordinate 역할에 따라 알맞게 설정)
# master, data, ingest모두 false인경우 coordinate가 됩니다.
node.name: 노드 명
node.master: true
node.data: true
#node.ingest: false
# 메모리 (해당 옵션 사용할 경우 OS설정 변경 필요)
# 메모리 swap 방지를 위한 매우 중요한 옵션입니다.
bootstrap.memory_lock: true
# 네트워크
network.host: 0.0.0.0
# 포트 구성
http.port: 9200
http.cors.allow-origin: "*"
http.cors.enabled: true
transport.tcp.port: 9300
transport.tcp.compress: true
# 마스터 노드 (7.x.x버전 이상일 경우)
cluster.initial_master_nodes: ["노드명1", "노드명2", "노드명3"]
# 클러스터 구성 (7.x.x버전 이상일 경우)
discovery.seed_hosts: ["아이피1:포트", "아이피2:포트", "아이피3:포트"]
#"_all" 모든 인덱스를 삭제하는 것을 막는다.
action.disable_delete_all_indices: true
기본 구성에 필요한 설정 외에도 많이 있으므로, 필요에 따라 추가하여 최적화시켜 주면 좋습니다.
- node.max_local_storage.nodes: 1
- 기본적으로 Elasticsearch 프로세스 수만큼 같은 서버에서 여러 노드를 띄울 수 있습니다. - path.data: /mnt/elasticserach/data
- 각 샤드의 파일들이 저장될 위치를 지정합니다. - path.logs: /mnt/elasticsearch/log
- ElasticSearch 로그파일들이 저장될 위치를 지정합니다. - discovery.zen.ping.multicast.enabled: false
- 멀티캐스트 방식은 하나의 노드가 멀티캐스트 요청을 네트워크 상에 전송하고, 만약 존재하는 노드들이 이 요청을 받으면 이에 대한 응답을 보내는 방식으로 이루어집니다
- false로 끄고 unicast를 사용하는 게 좋습니다. - indices.fielddata.cache.size: 70%
- fielddata cache는 주로 sorting이나 aggregation에 사용됩니다.
- 모든 field value가 메모리에 올라가게 되므로 기본값은 unbounded로 설정되어 있습니다.
- indices.breaker.fielddata.limit 보다 크면 너무 큰 데이터 작업 시에 CircuitBreakingException이 발생하게 됩니다. - indices.breaker.fielddata.limit: 75%
- OutOfMemory Error를 막기 위해 메모리를 얼마큼 사용할지를 정의하는 기능입니다.
- 기본값은 60%이며, indices.fielddata.cache.size 보다 크도록 설정해야 합니다. - cluster.routing.allocation.disk.watermark.low: 85%
- 디스크 용량 기반으로 shard allocation을 도와주는 설정으로 설정값을 넘으면 해당 노드에는 shard를 allocation하지 않습니다.
- 기본값은 85%이며, 절댓값으로 1000mb로 설정할 수도 있는데 이때에는 남은 디스크 용량을 의미합니다. - cluster.routing.allocation.disk.watermark.high: 90%
- 디스크 사용량이 설정값을 넘어가면 해당 노드의 샤드를 다른 노드로 relocation 합니다. - cluster.routing.allocation.balance.index: 0.8
- 값이 클수록 각 인덱스에서 샤드의 개수를 균등하게 분배하려는 경향이 강해진다는 것을 의미합니다.
- 이 값은 cluster.routing.allocation.balance.shard와 합해서 1.0이 되어야 합니다. - cluster.routing.allocation.balance.shard: 0.2
- 값이 클수록 모든 노드에 샤드의 개수를 균등하게 분배하려는 경향이 강해진다는 것을 의미합니다. - index.translog.flush_threshold_size: 1GB
- 설정값 이상으로 쌓이면 flush 됩니다.
- 값을 늘려 flush를 줄인다면 인덱싱 성능에 도움이 됩니다.
- "bootstrap.memory_lock" 옵션 사용할 경우 OS설정 변경 필요
/etc/security/limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
/usr/lib/systemd/system/elasticsearch.service
LimitMEMLOCK=infinity
/etc/sysconfig/elasticsearch
MAX_LOCKED_MEMORY=unlimited
'IT > ElasticSearch' 카테고리의 다른 글
[ElasticSearch] ELK Stack이란 무엇인가? (0) | 2022.09.08 |
---|---|
[ElasticSearch] 클러스터 구성 및 확인 (0) | 2022.08.03 |
[ElasticSearch] 리눅스OS 환경 설정하기 (0) | 2022.08.03 |
[ElasticSearch] 클러스터(Cluster)란? (0) | 2022.08.03 |
댓글