빈쿵바라기
좌충우돌 개발자의 기록
빈쿵바라기
전체 방문자
오늘
어제
  • 분류 전체보기 (53)
    • Programming (25)
      • JAVA (12)
      • Spring Boot (6)
      • JPA (7)
      • Python (0)
    • Database (12)
      • RDBMS (4)
      • NoSQL (7)
    • Server (11)
    • Elasticsearch (3)
    • ETC (2)

블로그 메뉴

    공지사항

    인기 글

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    빈쿵바라기

    좌충우돌 개발자의 기록

    [Elasticsearch] 클러스터 구성하기
    Elasticsearch

    [Elasticsearch] 클러스터 구성하기

    2023. 3. 9. 19:33

    운영 환경

    • 모든 노드는 동일 private network로 묶여 있습니다.
    • OS : Contos 7 3대
      • master 노드 1대 (172.25.1.10)
      • data 노드 2대 (172.25.1.11, 172.25.1.12)
    • Java 11
    • Elasticsearch 7.17.7

     

    클러스터 구성 전

    $ curl localhost:9200
    {
      "name" : "master",
      "cluster_name" : "my-cluster",
      "cluster_uuid" : "w4dI8ZN8CTO--P52i2Jbqo",
      "version" : {
        "number" : "7.17.7",
        "build_flavor" : "default",
        "build_type" : "rpm",
        "build_hash" : "48dcaba8cee33438b98iqa7f5c7f56a79fec9z80",
        "build_date" : "2022-10-17T15:29:54.167373105Z",
        "build_snapshot" : false,
        "lucene_version" : "8.11.1",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }

     

    클러스터 설정

    * Master Node

    마스터 노드의 elasticsearch.yml 파일을 아래와 같이 수정합니다.

    cluster.name: my-cluster
    
    node.name: master
    node.master: true
    node.data: false
    
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    
    network.host: 172.25.1.10
    http.port: 9200
    
    discovery.seed_hosts: ["172.25.1.10"]
    cluster.initial_master_nodes: []

    설정 후 Elasticsearch를 재시작합니다.

    $ sudo systemctl restart elasticsearch

     

    * Data Node

    데이터 노드 2개도 마찬가지로 elasticsearch.yml 파일을 수정해줍니다. 마스터 노드와 다른 것은 discovery.seed_hosts에서 자신을 포함한 모든 데이터 노드와 마스터 노드의 IP를 작성해줍니다.

    cluster.name: my-cluster
    
    node.name: data-1
    node.master: false
    node.data: true
    
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    
    network.host: 172.25.1.11
    http.port: 9200
    
    discovery.seed_hosts: ["172.25.1.10", "172.25.1.11", "172.25.1.12"]
    cluster.initial_master_nodes: []
    cluster.name: my-cluster
    
    node.name: data-2
    node.master: false
    node.data: true
    
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    
    network.host: 172.25.1.12
    http.port: 9200
    
    discovery.seed_hosts: ["172.25.1.10", "172.25.1.11", "172.25.1.12"]
    cluster.initial_master_nodes: []

    설정 후 Elasticsearch를 재시작합니다.

    $ sudo systemctl restart elasticsearch

     

    클러스터 구성 확인

    $ curl 172.25.1.10:9200/_nodes/process?pretty=true
    {
      "_nodes" : {
        "total" : 3,
        "successful" : 3,
        "failed" : 0
      },
      "cluster_name" : "my-cluster",
      "nodes" : {
        "FKMA7C3pSK2aUcHzSVbcMQ" : {
          "name" : "master",
          "transport_address" : "172.25.1.10:9300",
          "host" : "172.25.1.10",
          "ip" : "172.25.1.10",
          "version" : "7.17.7",
          "build_flavor" : "default",
          "build_type" : "rpm",
          "build_hash" : "48ddaub8cee32438b91eco7f5c7f56a70fec9e89",
          "roles" : [
            "ingest",
            "master",
            "ml",
            "remote_cluster_client"
          ],
          "attributes" : {
            "ml.machine_memory" : "101201008",
            "xpack.installed" : "true",
            "transform.node" : "true",
            "ml.max_open_jobs" : "512",
            "ml.max_jvm_size" : "1073741824"
          },
          "process" : {
            "refresh_interval_in_millis" : 1000,
            "id" : 10136,
            "mlockall" : false
          }
        },
        "5LzVt76ZRbqnnUjxXkdstA" : {
          "name" : "data-1",
          "transport_address" : "172.25.1.11:9300",
          "host" : "172.25.1.11",
          "ip" : "172.25.1.11",
          "version" : "7.17.7",
          "build_flavor" : "default",
          "build_type" : "rpm",
          "build_hash" : "28dcaee8cee38468b91eca8f5c7f56a70fec9e30",
          "roles" : [
            "data",
            "data_cold",
            "data_content",
            "data_frozen",
            "data_hot",
            "data_warm",
            "ingest",
            "ml",
            "remote_cluster_client",
            "transform"
          ],
          "attributes" : {
            "ml.machine_memory" : "101205291008",
            "ml.max_open_jobs" : "512",
            "xpack.installed" : "true",
            "ml.max_jvm_size" : "1073741824",
            "transform.node" : "true"
          },
          "process" : {
            "refresh_interval_in_millis" : 1000,
            "id" : 16590,
            "mlockall" : false
          }
        },
        "9ExVt83ZRbqnnUjdWkdstV" : {
          "name" : "data-2",
          "transport_address" : "172.25.1.12:9300",
          "host" : "172.25.1.12",
          "ip" : "172.25.1.12",
          "version" : "7.17.7",
          "build_flavor" : "default",
          "build_type" : "rpm",
          "build_hash" : "73dcaee8ccd38468b91kca8f5c1f56a70fec9e38",
          "roles" : [
            "data",
            "data_cold",
            "data_content",
            "data_frozen",
            "data_hot",
            "data_warm",
            "ingest",
            "ml",
            "remote_cluster_client",
            "transform"
          ],
          "attributes" : {
            "ml.machine_memory" : "101205291008",
            "ml.max_open_jobs" : "512",
            "xpack.installed" : "true",
            "ml.max_jvm_size" : "1073741824",
            "transform.node" : "true"
          },
          "process" : {
            "refresh_interval_in_millis" : 1000,
            "id" : 16590,
            "mlockall" : false
          }
        }
      }
    }

     

    참고

    • Elasticsearch 공식 문서 - "Configuring Elasticsearch"
    • Elasticsearch 공식 문서 - "Nodes info API"
    저작자표시 (새창열림)

    'Elasticsearch' 카테고리의 다른 글

    [Elasticsearch] maximum shards open 에러  (0) 2022.12.14
    [Elasticsearch] 전체 문서 조회 max_result_window 이슈 (Scroll API)  (0) 2022.10.20
      'Elasticsearch' 카테고리의 다른 글
      • [Elasticsearch] maximum shards open 에러
      • [Elasticsearch] 전체 문서 조회 max_result_window 이슈 (Scroll API)
      빈쿵바라기
      빈쿵바라기
      삽질하는 개발자의 좌충우돌 개발기

      티스토리툴바