on
Elasticsearch network.host설정과 bootstrap체크
Elasticsearch network.host설정과 bootstrap체크
이번 글에서는 3가지를 정리해 보려고 합니다.
elasticsearch 클러스터 구성을 위한 network.host설정
설정값을 변경하는 과정에서 나타나는 bootstrap체크
외부에서 elasticsearch서버에 접근
network.host설정
일단 network.host는 elasticsearch가 실행되는 서버의 ip주소입니다.
network.host는 config/elasticsearch.yml파일에서 설정 할 수 있는데 평소에는 주석처리가 되어있어서 Elasticsearch노드가 개발 모드로 실행이 됩니다. 만약에 이 설정을 Elasticsearch의 실제 IP주소로 변경하게 된다면, 운영 모드로 실행이 되어 부트스트랩 체크를 하게 됩니다.
elasticsearch.yml파일에 network.host값을 설정하였습니다.
설정에 사용되는 특별한 변수값은 다음과 같습니다.
_local_ : 루프백 주소 127.0.0.1 과 같습니다. 디폴트로 설정되어 있습니다.
_site_ : 로컬 네트워크 주소로 설정됩니다. 실제로 클러스터링 구성 시 주로 설정하는 값입니다.
_global_ : 네트워크 외부에서 바라보는 주소로 설정합니다.
이제 network.host설정을 마치고 elasticsearch를 실행해 보겠습니다.
결과는??????????????????? 실행되지 않습니다.ㅠㅠ
위에서 말한것과 같이 network.host를 설정하게되면 운영모드로 동작하게되어 부트스트랩체크가 되기 때문입니다.
3가지 에러가 있는데 이 부분은 bootstrap체크 부분을 알아보면서 설명하겠습니다.
bootstrap체크
"[1]: max file descriptors" 에러의 원인은 Elasticsearch는 동시에 많은 파일에 접근을 하는 방식이지만, 대부분의 OS는 하나의 프로세스가 많은 파일을 관리하지 않게합니다. 그래서 그 값을 65535로 수정해야 합니다.
이 문제에대한 해결방안은 문서를 보면 해결할 수 있습니다.
etc/security/limits.conf파일 맨 아래 줄에 "elasticsearch - nofile 65535"를 추가해주면 해결이 됩니다.
"[2]: max virtual memory"에러의 원인은 문서를 살펴보면
etc/sysctl.conf파일 맨 아래 줄에 "sysctl -w vm.max_map_count=262144"를 추가해주면 해결이 됩니다.
"[3]: the default discovery"에러의 원인은 discovery를 설정하지 않았다는 의미입니다.
discovery.seed_hosts: ["elastic-1"], cluster.initial_master_nodes: ["node-1"] 설정을 완료하고 Elasticsearch를 실행하면 정상적으로 실행이 됨을 볼 수 있습니다.
그리고 Elasticsearch를 예전과 같이 "curl localhost:9200"으로 실행하면 접속이 되지 않음을 볼 수 있는데
이건 network.host를 "_site_"값으로 변경해두었기 때문입니다. 앞으로는 "curl 10.178.0.2:9200"으로 접속을 진행 할 수 있습니다.
외부에서 Elasticsearch 접근
이번에는 내부에서 elasticsearch를 접근하는게 아니라 외부에서 접근하는 방법에대해 알아보려 합니다.
이 부분은 저는 GCP플랫폼에서 인스턴스를 발급받아 방화벽세팅을 통해 외부에서 Elasticsearch에 접근이 가능하지만,
정리는 하지않으려고 합니다. 필요하신 분들은 개인적으로 알아보면 좋을 것 같습니다.
from http://gong-story.tistory.com/6 by ccl(A) rewrite - 2021-09-24 17:26:00