[엘라스틱서치] 노드(node)와 클러스터(cluster)란 무엇인가

    노드(Nodes)


    엘라스틱서치는 분산 시스템이며 노드는 이 분산 시스템에서 작동하는 하나의 엘라스틱서치 엔진(single server)을 의미한다. 이 노드들은 우리가 생각하는 일반적인 엘라스틱서치 엔진이며(내 컴퓨터에 엘라스틱서치를 한개 설치하였다면 하나의 노드를 설치한 것과 동일하다) 데이터의 저장과 색인(Index), 검색(Search) 모두 가능하다.


     


    노드는 엘라스틱서치에서 고유의 아이디값으로 UUID(Universally Unique IDentifier)를 제공하며 원할 경우 노드의 고유의 아이디를 내가 직접 변경할 수 있다. 노드의 값을 변경하기 위해서는 엘라스틱치 설치된 위치에 config 폴더에 들어가면, 다양한 설정값들이 존재한다.


    엘라스틱서치폴더/config

    elasticsearch.keystore

    elasticsearch.yml

    jvm.options

    log4j2.properties

    role_mapping.yml

    roles.yml

    users

    users_roles


    위에 있는 파일 중, elasticsearch.yml을 열어보면


    # ======================== Elasticsearch Configuration =========================

    #

    # NOTE: Elasticsearch comes with reasonable defaults for most settings.

    #       Before you set out to tweak and tune the configuration, make sure you

    #       understand what are you trying to accomplish and the consequences.

    #

    # The primary way of configuring a node is via this file. This template lists

    # the most important settings you may want to configure for a production cluster.

    #

    # Please consult the documentation for further information on configuration options:

    # https://www.elastic.co/guide/en/elasticsearch/reference/index.html

    #

    # ---------------------------------- Cluster -----------------------------------

    #

    # Use a descriptive name for your cluster:

    #

    #cluster.name: my-application

    #

    # ------------------------------------ Node ------------------------------------

    #

    # Use a descriptive name for the node:

    #

    #node.name: node-1

    #

    # Add custom attributes to the node:

    #

    #node.attr.rack: r1


    이와같이 yml 포맷의 설정파일이 있는데 node.name의 위치의 주석을 제거하고 노드 명칭을 직접 설정하면 된다.



    클러스터(Clusters)


    클러스터의 의미에서 풍기는 것처럼 클러스터는 노드들의 집합을 뜻한다. 여기서 집합은 2개 이상이 아니라 단 한개의 노드라고 하더라도 클러스터의 의미로 사용할 수 있다. 


    클러스터는 노드와 마찬가지로 고유의 이름으로 식별할 수 있으며, 기본 이름은 "elasticsearch"이다.


    [2020-07-03T15:27:10,379][INFO ][o.e.e.NodeEnvironment    ] [USER-PC] using [1]

    data paths, mounts [[??蹂쇰ⅷ (E:)]], net usable_space [421.5gb], net total_spac

    e [465.7gb], types [NTFS]

    [2020-07-03T15:27:10,402][INFO ][o.e.e.NodeEnvironment    ] [USER-PC] heap size

    [989.8mb], compressed ordinary object pointers [true]

    [2020-07-03T15:27:10,913][INFO ][o.e.n.Node               ] [USER-PC] node name

    [USER-PC], node ID [1BZmoAgCQtCaW5fAcmZBIQ], cluster name [elasticsearch]

    [2020-07-03T15:27:10,914][INFO ][o.e.n.Node               ] [USER-PC] version[7.

    6.2], pid[23392], build[default/zip/ef48eb35cf30adf4db14086e8aabd07ef6fb113f/202

    0-03-26T06:34:37.794943Z], OS[Windows 7/6.1/amd64], JVM[Oracle Corporation/Java

    HotSpot(TM) 64-Bit Server VM/1.8.0_111/25.111-b14]

    [2020-07-03T15:27:10,914][INFO ][o.e.n.Node               ] [USER-PC] JVM home [

    C:\Program Files\Java\jdk1.8.0_111\jre]

    [2020-07-03T15:27:10,915][INFO ][o.e.n.Node               ] [USER-PC] JVM argume

    nts [-Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10

    , -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8,

    -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio

    .netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -D

    io.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j

    2.disable.jmx=true, -Djava.locale.providers=COMPAT, -Xms1g, -Xmx1g, -XX:+UseConc

    MarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupan

    cyOnly, -Djava.io.tmpdir=C:\Users\user\AppData\Local\Temp\elasticsearch, -XX:+He

    apDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p

    .log, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistributio

    n, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRot

    ation, -XX:NumberOfGCLogFiles=32, -XX:GCLogFileSize=64m, -XX:MaxDirectMemorySize

    =536870912, -Delasticsearch, -Des.path.home=E:\elastic_stack\elasticsearch\elast

    icsearch-7.6.2, -Des.path.conf=E:\elastic_stack\elasticsearch\elasticsearch-7.6.

    2\config, -Des.distribution.flavor=default, -Des.distribution.type=zip, -Des.bun

    dled_jdk=true]


    위 로그는 엘라스틱서치를 실행했을 때 나타난 로그로, node ID는 1BZ로 시작하는 무작위 값이고, cluster name은 elasticsearch라는 것을 확인 할 수 있다. cluster name이 동일할 경우 같은 클러스터로 인식할 수 있기 때문에 다른 목적 혹은 다른 환경일 경우 이름을 변경해야 한다.


    클러스터의 이름을 변경하기 위해서는 위에서 node값을 변경할 때 설명한 elasticsearch.yml에서 cluster name을 변경하면 된다.



    댓글

    Designed by JB FACTORY