Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 쿠버네티스
- 백준
- 클라우드 컴퓨팅
- gcp
- Spring
- springboot
- 카프카
- 월미도
- 코드업
- Elasticsearch
- 자료구조
- 클라우드
- Docker
- 스프링 부트
- VPC
- 알고리즘
- 백트래킹
- 스프링부트
- JPA
- 로드밸런서
- 오일러프로젝트
- aws
- Spring Data JPA
- DFS
- 프로그래밍문제
- Apache Kafka
- Kafka
- 인천여행
- Spring Boot
- 스프링
Archives
- Today
- Total
GW LABS
기초부터 다지는 ElasticSearch 운영 노하우 (4) - 클러스터 구축하기 본문
5.1 elasticsearch.yml 설정파일
- ElasticSearch를 구성하기 위해 기본이 되는 환경 설정 파일
- docker image에서는 환경설정값을 주입해서 사용하는 것도 가능
5.1.1 Cluster 영역
- cluster.name: 클러스터 이름
5.1.2 Node 영역
- node.name: 노드 이름
- 변경하려면 노드를 재시작 해야한다.
- node.attr.rack: r1
- 사용자 정의된 rack 값을 통해 HA 구성과 같이 샤드를 분배할 수 있는 기능
5.1.3 Path 영역
- path.data: /var/lib/elasticsearch
- 노드가 가지고 있을 문서들을 저장할 경로 설정 (세그먼트 파일위치)
- 여러 개의 경로를 설정할 수 있음
- path.logs: /var/log/elasticsearch
- 로그 저장 경로
5.1.4 Memory 영역
- bootstrap.memory_lock: true
- 시스템의 스왑 메모리 여영ㄱ을 사용하지 않도록 하는 설정
- 스왑 영역을 사용하지 않으면 성능 보장이 가능하지만, 메모리 부족시 OOM
- 이 설정을 사용하기 위해서는 /etc/security/limits.conf도 수정해야함
- elasticsearch(계정이름) soft memlock unlimited 설정이 필요
- systemd로 프로세스 시작을 했다면 /etc/systemd/system/elasticsearch.service.d를 수정해야 함
- LmitMEMLOCK=infinity
5.1.5 Network 영역
- network.host: 192.168.0.1
- ElasticSearch가 사용하게 될 IP 주소설정
- http.port: 9200
- 포트 설정
- network.bind_host
- 클라이언트 요청 처리 IP
- 0.0.0.0으로 설정하여 요청을 받을 수 있게 한다.
- network.publish_host
- 클러스터 내부의 노드 간 통신 IP
- 노드 자산의 IP로 설정해야 한다.
5.1.6 Discovery 영역
- 노드 간의 클러스터링을 위해 필요한 설정
- discovery.zen.ping.unicast.hosts: [”host1”, “host2”]
- 클러스터링을 위한 다른 노드들의 정보
- discovery.zen.minimum_master_nodes:
- 클러스터를 구축하기 위해 필요한 최소한의 마스터 노드 대수를 설정
- Split brain 현상을 막을 수 있다.
- 노드 간 통신 장애로 인해 서로 다른 마스터 노드를 가진 두 개의 클러스터가 생성되는 현상
- 공식: total number of master-eligible nodes / 2 + 1
5.1.7 Gateway 영역
- gateway.recover_after_nodes: 3
- 클러스터 내의 노드를 전부 재시작 할 때 최소 몇 개의 노드가 정상적인 상태일 대 복구를 시작할 것인가 설정
5.1.8 Various 영역
- action.destructive_requires_name: ture
- 클러스터의 인덱스를 _all이나 wildcard 표현식으로 삭제할 수 없도록 막는 설정
5.1.9 노드의 역할 정의
- node.master
- 마스터 노드로 사용하려면 data,ingest 등은 false로 해둔다.
- node.data
- node.ingest
- 코디네이트 노드의 경우 master, data, ingest를 모두 false로 한다.
- 클라이언트 노드라고도 함
5.2 jvm.options 설정 파일
- Xms, Xmx
- JVM에서 사용하게 될 힙 메모리의 크기 설정
- 두 값을 동일하게 설정하여 메모리 추가할당이 없게 하는게 성능에 더 좋다
- 가능한 32GB를 넘지 않도록 설정
- GC configuration
- -XX:+UseConcMarkSweepGC
- ElasticSearch에서 기본적으로 사용하는 GC 방식
- -XX:CMSInitiatingOccupancyFraction=75
- Old GC를 수행하기 위한 힙 메모리 사용량 (75%)
- -XX:+UseCMSInitiatingOccupancyOnly
- GC 통계 데이터를 근거로 하지 않고 위의 설정만으로만 GC 수행
- -XX:+UseConcMarkSweepGC
- G1GC Configuration
- G1GC의 경우 사용사례가 많지 않은 것 같음
'Book-Review > Programing' 카테고리의 다른 글
기초부터 다지는 ElasticSearch 운영 노하우 (6) - 클러스터 성능 모니터링과 최적화 (0) | 2022.08.28 |
---|---|
기초부터 다지는 ElasticSearch 운영 노하우 (5) - 클러스터 운영하기 (0) | 2022.08.27 |
기초부터 다지는 ElasticSearch 운영 노하우 (3) - ElasticSearch 기본 개념 (0) | 2022.08.24 |
기초부터 다지는 ElasticSearch 운영 노하우 (2) - ElasticSearch 기본 동작 (0) | 2022.08.23 |
기초부터 다지는 ElasticSearch 운영 노하우 (1) - ElasticSearch 훑어보기 (0) | 2022.08.23 |
Comments