CentOS에서 Elasticsearch 운영 환경 설정하기
by 뚜부니00. 실습 환경
- CentOS 7.9
- Elasticsearch 7.10.2
- 서버 사양 : CPU 16 cores RAM 64GB Memory 2TB
Elasticsearch는 rpm을 사용해 설치하였으며, Elasticsearch는 Cluster 구축이 되어 있는 상태입니다.
여기서는 Elasticsearch 설치 및 Cluster 구축 관련 설명은 생략합니다.
01. 힙 메모리 설정 변경
/etc/elasticsearch/jvm.options
파일을 열고 현재 사용 중인 환경에 맞게 Xms
, Xmx
설정을 변경합니다.
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms26g
-Xmx26g
힙 메모리를 설정할 때 아래 세 가지에 주의하여 설정해 주세요.
- Xms와 Xmx 수치는 동일하게 할당한다.
- 힙 크기는 최대 시스템 물리 메모리의 절반으로 설정한다.
- 힙 크기는 최대 30 ~ 31GB 수준을 넘기지 않는다.
Elasticsearch 공식 문서에서는 대부분의 시스템은 26GB가 안전하다고 되어 있어 26GB로 설정하였습니다. 참고로, 자바에는 힙 메모리를 좀 더 빠르고 효율적으로 사용할 수 있도록 Compressed Ordinary Object Pointers 기술이 적용되어 있으며, 일반적으로 힙 크기가 32GB를 넘기면 비활성화됩니다.
02. 메모리 스왑 기능 비활성화
/etc/elasticsearch/elasticsearch.yml
파일을 열고 주석되어 있는 아래 설정에 대해 주석 해제합니다.
bootstrap.memory_lock: true
bootstrap.memory_lock
설정은 노드 실행 시 시스템의 물리 메모리를 미리 할당받아 스왑 영역을 사용하지 않도록 방어하는 설정입니다. 메모리 부족으로 인해 디스크의 스왑 영역을 참조할 경우 심각한 성능 저하가 발생할 수 있기에 필수적으로 설정해주어야 합니다. bootstrap.memory_lock
설정을 하기 위해서는 추가적인 설정이 필요하며, 아래에서 이어 설명하도록 하겠습니다.
먼저, 리눅스의 시스템 수준에서 걸려 있는 제한들을 해제해야 합니다. /etc/security/limits.conf
파일을 다음과 같이 설정해 주세요.
elasticsearch - nofile 65535
elasticsearch - nproc 4096
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
elasticsearch
: 엘라스틱서치를 실행하는 사용자 계정nofile
: 최대 파일 디스크립터 수(최대로 열 수 있는 파일 수). 샤드가 늘어남에 따라 파일 디스크립터 수가 증가하여 문제가 발생하기도 하므로 최소 65536으로 설정할 것을 권장.nproc
: 최대 프로세스 수memlock
: 메모리 내 주소 공간의 최대 크기. 여기서는 무제한으로 설정
그다음 /etc/systemd/system.conf
파일과 /etc/systemd/user.conf
파일의 DefaultLimitNOFILE
값을 변경합니다.
DefaultLimitNOFILE=65536
이제 서버를 재실행해줍니다.
그 다음 아래 명령어를 통해 최대 가상 메모리 개수를 변경합니다.
sudo sysctl -w vm.max_map_count=262144
그 다음 /etc/systemd/system/elasticsearch.service.d/elasticsearch.conf
파일을 열고 아래 설정을 추가합니다.
[Service]
LimitMEMLOCK=infinity
LimitNPROC=4096
LimitNOFILE=65536
설정이 적용될 수 있도록 아래 두 개의 명령어를 실행합니다.
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
설정은 ulimit -a
명령어를 통해 확인할 수 있습니다.
참고
- 엘라스틱 스택 개발부터 운영까지
- https://www.elastic.co/guide/en/elasticsearch/reference/7.10/setup-configuration-memory.html
- https://discuss.elastic.co/t/elasticsearch-is-not-starting-when-bootstrap-memory-lock-is-set-to-true/120962
- https://www.elastic.co/guide/en/elasticsearch/reference/current/advanced-configuration.html#set-jvm-heap-size
'Elastic Stack (ELK)' 카테고리의 다른 글
Elastic Stack 또는 ELK에 OpenDistro Security 적용하기 (0) | 2024.11.13 |
---|---|
Logstash에서 Elasticsearch 인덱스 한국 시간(KST) 추가해서 생성하기 (0) | 2024.11.11 |
Elastic Stack 또는 ELK에 Search Guard 적용하기 (0) | 2024.11.10 |
Elasticsearch Cluster 설정하기 (0) | 2023.06.11 |
CentOS 환경에 Elastic Stack 구축하기 (0) | 2023.05.09 |
블로그의 정보
개발하는 두부
뚜부니