티스토리 뷰

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

 


 

 

댓글
최근에 올라온 글
TAG
more
글 보관함
«   2024/04   »
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