ES 클러스터링 해야함 (도커로 설치시 클러스터링 해볼 것)
- 설치
------------------------------- ELK --------------------------------------
#<https://github.com/jakubhajek/elasticsearch-docker-swarm/blob/master/stack-elastic.yml>
# elasticsearch coordinating node
nano /etc/security/limits.conf
* hard memlock unlimited
* soft memlock unlimited
* hard nofile 65536
* soft nofile 65536
* hard nproc 65536
* soft nproc 65536
vim /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
exit 0
nano /etc/sysctl.conf
vm.max_map_count=262144
vm.overcommit_memory=1
net.core.somaxconn=1024
nano /lib/systemd/system/docker.service
LimitMEMLOCK=infinity
Elasticsearch를 Docker Swarm 환경에서 실행하기 위한 시스템 설정
- /etc/security/limits.conf 수정:
- 메모리 잠금, 파일 디스크립터, 프로세스 수에 대한 제한을 늘립니다.
- Elasticsearch가 많은 리소스를 사용할 수 있도록 합니다.
- /etc/rc.local 수정:
- 투명한 대용량 페이지(Transparent Hugepage)를 비활성화합니다.
- Elasticsearch 성능 향상을 위한 설정입니다.
- /etc/sysctl.conf 수정:
- vm.max_map_count: 프로세스가 사용할 수 있는 메모리 맵 영역의 최대 수를 증가시킵니다.
- vm.overcommit_memory: 메모리 오버커밋 처리 방식을 변경합니다.
- net.core.somaxconn: 네트워크 연결 대기열의 최대 길이를 늘립니다.
- /lib/systemd/system/docker.service 수정:
- LimitMEMLOCK=infinity: Docker 서비스에 대해 메모리 잠금 제한을 무제한으로 설정합니다.
이러한 설정들은 Elasticsearch가 고성능으로 작동하도록 시스템 리소스 제한을 조정하는 것이 목적입니다. 메모리 사용, 파일 처리, 네트워크 연결 등에 대한 제한을 완화하여 Elasticsearch가 대규모 데이터를 효율적으로 처리할 수 있도록 합니다.
- /etc/security/limits.conf 수정:
원인: Elasticsearch는 대량의 데이터를 처리하고 인덱싱하는 과정에서 많은 시스템 리소스를 필요로 합니다.
- memlock unlimited: 메모리 잠금 제한을 없애 Elasticsearch가 필요한 만큼 메모리를 잠글 수 있게 합니다. 이는 성능 향상에 도움이 됩니다.
- nofile 65536: 열 수 있는 파일 수를 늘려 많은 인덱스와 샤드를 다룰 수 있게 합니다.
- nproc 65536: 생성할 수 있는 프로세스 수를 늘려 Elasticsearch의 병렬 처리 능력을 향상시킵니다.
- /etc/rc.local 수정 (Transparent Hugepage 비활성화):
원인: Transparent Hugepage는 일반적인 애플리케이션에는 유용할 수 있지만, Elasticsearch와 같은 메모리 집약적 애플리케이션에는 성능 저하를 일으킬 수 있습니다.
- Elasticsearch는 자체적으로 메모리 관리를 최적화하기 때문에, 시스템의 자동 메모리 관리가 오히려 방해가 될 수 있습니다.
- /etc/sysctl.conf 수정:
- vm.max_map_count=262144: Elasticsearch는 많은 메모리 맵 영역을 사용합니다. 이 값을 늘리면 더 많은 인덱스와 필드를 처리할 수 있습니다.
- vm.overcommit_memory=1: 메모리 오버커밋을 허용하여 Elasticsearch가 더 유연하게 메모리를 사용할 수 있게 합니다.
- net.core.somaxconn=1024: 네트워크 연결 대기열을 늘려 높은 부하 상황에서도 더 많은 동시 연결을 처리할 수 있게 합니다.
- /lib/systemd/system/docker.service 수정 (LimitMEMLOCK=infinity):
원인: Docker 컨테이너 내에서 실행되는 Elasticsearch도 충분한 메모리 잠금 권한이 필요합니다.
- 이 설정은 Docker 서비스 자체에 메모리 잠금 제한을 없애, 컨테이너 내의 Elasticsearch가 필요한 만큼 메모리를 잠글 수 있게 합니다.
이러한 설정들은 모두 Elasticsearch의 성능을 최적화하고, 대규모 데이터 처리 시 발생할 수 있는 시스템 제한을 완화하기 위한 것입니다. Elasticsearch가 고성능으로 작동하려면 이런 시스템 수준의 조정이 필요합니다.
2. 프리뷰
ES는 트렌젝션을 보장하지 않으니 (NOSQL 베이스) 삽입후 바로 조회 했을경우 조회 안됨
샤딩후 인덱싱이 되어야 조회 가능하다