elasticsearch(이하 es)를 처음 설치하고 기동시킬 때 필수적으로 세팅해두어야할 configuration에 관한 포스팅이다
로컬에서만 돌아가는 develop 버전으로 es를 사용하는거라면 굳이 설정해줄 필요는 없다
아래 공식 문서를 참고하여 Important system configuration 파트 중 필요한 부분만 정리하였다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html
내가 정리했을 때는 7.8 버전인데 현재 포스팅 기준 es는 8.11 버전까지 나왔다. 가장 최신 문서를 보고 싶거나 더 자세한 내용을 알고싶으면 제 포스팅 말고 공식문서를 보는걸 추천합니다!
es는 다른 클라이언트(ex) 키바나, aws s3, 로그스테시 등)과 연결할 수 있다. 이는 es 첫 시작 시 만들어지는 CA certificate를 통해 가능한데 /etc/elasticsearch/certs/http_ca.crt 에 저장된다. (RPM으로 설치했을때 기준으로 OS마다 설치 경로는 다를 수 있다)
이 키를 통해 fingerprint나 CA certificate 방식으로 외부 클라이언트와 연결할 수 있다
es는 JVM에서 돌아가는 툴이다. es를 기동시킬 때 꼭 필요한 파일이지만 JVM이 GC 때 삭제할 수도 있기 때문에 프로덕션 모드로 es를 기동시킬 경우 꼭 비활성화 해주어야 한다.
비횔성화 명령어: sudo swapoff -a
비활성화 제대로 됐는지 확인하는 명령어: sudo swapon -s
위 명령어를 통해 비활성화 가능하다
또한 elasticsearch.yml 파일에서 `
bootstrap.memory_lock: true`
라고 지정해도 된다. 하지만 문서에서 운영체제에 따라 이렇게 지정해도 스왑되는 경우가 있으니 직접 명령어로 비활성화하는 걸 추천한다고 명시되어 있기 때문에 명령어를 통한 비활성화 방식을 추천한다.
rpm 패키지로 설치하면 별다른 설정은 필요 없다. 나는 RPM으로 설치했기 때문에 패스
대부분의 리눅스 배포판에서는 패킷이 손실되면 15번 재전송을 한다. 이는 900초 이상이 걸릴 수 있는데, 클러스터 내 노드가 죽으면 es는 이를 빠르게 감지해야 하는 요구사항과 맞지 않다.
장애를 즉시 감지하고 빨리 회복하여 고가용성을 보장하기 위해 Linux 사용자는 최대 TCP 재전송 횟수를 5번으로 줄여야 한다.
단 이렇게 하면 모든 TCP 연결에 이 설정이 적용되기 때문에 저품질의 네트워크에서 다른 외부 시스템과 tcp로 통신한다면 이 재전송 횟수를 더 늘려야 될지도 모른다고 문서에 명시되어 있다.
파일에 명시하거나 (이 경우엔 영구적으로 적용 가능) 아래 명령어로 설정한다. (일시적)
패킷에 재전송 횟수를 5번으로 지정하는 명령어
sysctl -w net.ipv4.tcp_retries2=5
설정 제대로 되었는지 확인하는 명령어
sysctl net.ipv4.tcp_retries2
피드백은 언제나 환영입니다!