ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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키를 활용하여 보안설정을 하는 방법

    보안설정 예시

    오류가 나왔다면 고려해봐야 하는 설정

    • 클러스터 이름이 동일한가?
    • 이름과 노드 역할 설정이 제대로 되어있나?
    • 위치 설정 : 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
Designed by Tistory.