-
Elasticsearch 8.12 설치 + 클러스터링 (리눅스)Elasticsearch 2024. 5. 4. 09:50
임시저장을 놓쳐 다시 쓰는 글.
티스토리가 익숙치 않은지라 쓰던 글을 다 날렸네요 ㅎ ㅎ ㅎ
! 제정신이 아닐 수 있습니다.
안녕하세요!
오늘은 elasticsearch를 설치 및 클러스터링을 구성했던것을 적어 보도록 하겠습니다.
먼저 Elasticsearch 설치 과정에 대해 설명하고..!
그 다음 환경설정(yml 파일)에 대해 알아보며 클러스터링 과정을 적어보도록 하겠습니다.
후 한번 더 간다
Elasticsearch 설치
설치 환경 : Ubuntu
설치 폴더 : 원하는 위치에 설정 (mkdir /elastic)
설치(바이너리 파일)
* elasticsearch-8.12.0 버전으로 tar.gz 파일 다운
(바이너리 파일 : 아이콘 우클릭 후 링크 주소 복사!)

설치 명령어 : wget https://artifacts.elastic.co/downloads/elasticsearch-8.12.0-linux-x86_64.tar.gz
해당 파일을 다운 받은 후 -> tar -xvf 를 통해 압축을 풀어줍니다.
* 압축 해제 한 후 해당 설치파일 삭제
Elasticsearch 환경 설정
노드 하나에 elasticsearch를 설치하고 운용할 경우 이는 개발모드라고 합니다.
이는 클러스터링을 하지 않으므로 따로 보안설정에 대해 설명하지 않겠습니다. (내맘임.)
elasticsearch는 yml 파일을 활용해 환경설정을 합니다.
이 파일은 config 폴더에 elasticsearch.yml에 있으며 vi 에디터를 활용하여 설정합니다.
이제 single node, clustering 시 위 파일을 어떻게 설정했는지 약간의 설명과 함께 적어보도록 하겠습니다.
single node
- cluster.name : 클러스터 이름 지정 (ex. cluster.name : node-1)
- node.name : node 이름 지정
- node.roles : node 권한 지정 -> 하나만 사용하므로 master와 data 노드 권한 모두 준다.
- path.data : master 노드에서 관리하는 메타 데이터의 데이터 파일 경로
- path.logs : log 파일 경로
- bootstrap.memory_lock : elasticsearch는 jvm 환경에서 동작하므로 고정된 heap 메모리를 두어 다른 프로세스가 침범하지 못하게 막아준다. (boolean)
- network.host : node의 ip 설정
- http.port : elastiscsearch는 http 프로토콜을 통해 통신하므로 9200 ~ 9299 포트로 설정
- transport.port : elasticsearch는 tcp를 통해 노드끼리 통신하므로 9300 ~ 9299 포트로 설정
security 설정 (개발모드이므로 꺼놓을게요)
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
xpack.security.http.ssl:
enabled : false
xpack.security.transport.ssl:
enabled : false
실행 시 유의사항
실행 : bin 폴더의 elasticsearch
-> bin/elasticsearch
Elasticsearch는 관리자 계정으로 실행하면 실행이 안되므로 새로운 user를 만들어 실행시킨다.(useradd 명령어를 통해 사용자 추가)
* 로그 확인 *
[2024-05-01T10:59:47,966][INFO ][o.e.n.Node ] [single-node] initialized
[2024-05-01T10:59:47,966][INFO ][o.e.n.Node ] [single-node] starting ...이제 클러스터링에 대해 설명해보도록 하겠습니다.
키보드를 바꿨더니 키감이 아주 좋군요계속 타자를치고 싶습니다.
Elasticsearch Clustering + Security 설정
설치환경 : 서버 3대
이제 clustering 시 elasticsearch.yml 파일 설정 방법에 대해 알아보도록 하겠습니다.
똑같은 elasticsearch.yml 파일 설정이라 크게 달라진 것은 없습니다만
클러스터링 시 오류를 유발할 수 있거나 부가적인 설명이 필요하다고 생각되는 필드만 다시 적어보도록 하겠습니다.
Clustering - elasticsearch.yml
- cluster.name : 클러스터 이름 설정 -> 이름이 같지 않다면 같은 클러스터라고 인식하지 않는다.
- node.roles : 노드 역할 지정 -> 클러스터링 시 데이터 노드, 마스터 노드 등 역할을 지정해준다.
- discovery.type : 다중 노드 클러스터를 형성할 지 여부를 지정 한다.
- discovery.type : multi-node -> 다른 노드가 클러스터에 join 할 수 있도록 허용
- discovery.type : single-node -> 개발모드
- node.attr.<rack_id> : 샤드를 여러 rack에 거쳐 분배하고 싶을 때 rack_id를 설정하여 분배
- discovery.seed_hosts : 연결할 노드들의 ip, 클러스터 명(cluster.name)도 확인하므로 이름이 일치하는지 확인
- cluster.initial_master_nodes : 마스터 후보 노드 지정
- 보안설정
- security (bin/elasticsearch-certutil) 활성화
- elasticsearch-certutil ca : 해당 명령어를 실행 후 받은 p12 파일을 모든 노드에 배포
- elasticsearch-certutil cert --ca <ca.p12경로> : 모든 노드는 분배받은 ca.p12파일로 certificates.p12 파일을 생성
- certificates.p12를 config 폴더에 놓기 (필수)
- xpack.security.enabled=true로 security 홝성화
- xpack.security.transport.ssl.verification_mode : certificate
- xpack.security.transport.ssl.keystore.path : certificates.p12
- xpack.security.transport.ssl.trustore.path : certificates.p12
- xpack.security.enrollment.enabled : true
- xpack.security.authc.api__key.enabled : false -> API키를 활용하여 보안설정을 하는 방법
- security (bin/elasticsearch-certutil) 활성화

보안설정 예시 오류가 나왔다면 고려해봐야 하는 설정
- 클러스터 이름이 동일한가?
- 이름과 노드 역할 설정이 제대로 되어있나?
- 위치 설정 : path, logs 파일 위치
- 다른 프로세스가 elasticsearch 메모리에 접근 못하도록 방지 되어있나 ? : bootstrap.memory_lock
- discovery.seed_hosts에 연결되어야 할 노드의 ip가 제대로 작성되어 있는지
- vm 설정이 되어있는지 -> config/jvm.conf 에서 확인
- 방화벽에 elasticseach가 사용하는 포트가 열려있는지
다음 글은 보안설정에 대해 조금 더 자세히 알아보도록 하겠습니다.
(keystore이 뭔지 truststore이 뭔지,,)
Elasticsearch_security 설정
파일 전송 방법scp : ssh 원격 접속 프로토콜을 기반으로 한 파일 전송 프로토놀 > 모든 노드에 배포해야 하기 때문사용 방법scp [option] [filename] [remote id]@[remote ip]:[remote path] > 단일 파일을 원격지로
baektothefuture.tistory.com
'Elasticsearch' 카테고리의 다른 글
Curator를 활용한 Snapshot 테스트 (4) 2025.01.08 docker-compose.yml 활용하여 Elasticsearch Cluster 만들기 (4) 2024.10.25 Curator에 대해 (5) 2024.10.09 Elasticsearch ILM 탐색기 (2) 2024.06.29 Elasticsearch_security 설정 (6) 2024.05.05