Elastic Search 외부 접속을 목적으로 elasticsearch.yml에서 network.host에 0.0.0.0을 추가 후 재시작 결과

다음과 같은 에러가 발생하였다.

 

ERROR: [4] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max number of threads [1024] for user [es] is too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[4]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

 

각 항목의 원인과 해결 방법은 다음과 같다.

[1]. file descriptors가 낮아서 발생한 문제다. 

sudo vi /etc/security/limits.conf 하여 아래 내용 추가

es hard nofile 65536 

# es는 하드세팅(해당 쉘 최대값) 으로 한 번 접속할때 65536번의 파일을 열어 볼 수 있음

 

es soft nofile 65536 

# es는 소프트세팅(해당 설정 값) 으로 한 번 접속할때 65536번의 파일을 열어 볼 수 있음

 

es hard nproc 65536 

# es는 하드세팅으로 한 번 접속할때 65536번의 프로시저를 실행 할 수 있음

 

es sort nproc 65536 

# es는 소프트세팅으로 한 번 접속할때 65536번의 프로시저를 실행 할 수 있음

 

[2]. [1]을 설정하면 자동으로 해결됨, ulimit -u 를 하면 확인 가능

but, 변경해도 일반계정에는 적용이 되지 않을 경우

/etc/security/limits.d/90-nproc.conf 를 열어서 확인해보면 모든계정은 1024로 제한이 되어있다...

순서 상 /etc/security/limits.conf는 부팅시 참조하고 /etc/security/limits.d/90-nproc.conf은

실시간으로 적용 되므로 아무리 뻘짓을 해봐도 1024로 적용이 되는 것이었다....

 

[3]. vm.max_map_count가 현재 65530이므로 262144 이상으로 설정해줘야 한다.

sysctl -n vm.max_map_count를 해보면 65530인것을 확인 할 수 있다.

vi /etc/sysctl.conf 하여

vm.max_map_count=262144 추가한 후 재부팅

 

[4]. discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes 의 항목 중 최소 하나 이상 설정이 되어야 한다. 무난하게 discovery.seed_hosts항목에 0.0.0.0을 추가 해주면 된다.

+ Recent posts