이번 글에서는 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에 접근이 가능하지만,
정리는 하지않으려고 합니다. 필요하신 분들은 개인적으로 알아보면 좋을 것 같습니다.
'ELK스택' 카테고리의 다른 글
[Elasticsearch] CRUD(입력, 조회, 수정, 삭제, 검색) (0) | 2021.10.11 |
---|---|
[Elasticsearch] Kibana 설정 및 실행 (0) | 2021.10.07 |
[Elasticsearch] 클러스터 구성 (0) | 2021.09.27 |
[Elasticsearch] 클러스터와 노드 바인딩 (1) | 2021.09.19 |
[Elasticsearch] Elasticsearch 다운로드 및 실행 (0) | 2021.09.15 |