1. master node

   clster-wide 변화를 관리 및 조정 

   (인덱스/맵핑 관리, cluter에 node 추가/삭제, shard reallocating, balancing)


   [elasticsearch.yml]


   node.master: true 

   node.data : false 


   master 역할만 하고 date 노드 역할은 하지 않음


2. data node

   Lucene index로 완전한 기능을 가진 nodes 

   (real indexing and query operations)


   node.maser : false

   node.data : true    (data node 기능만)


3. client node

   http request를 조정하는 load balancer 역할 수행

   각각의 노드들로부터 쿼리 결과를 조합하여 사용자에게 응답


   node.master : false

   node.data : false  (http.enabled : false)


4. tribe node

   여러개의 개별 elasticsearch cluster 사이에 brige 역할 수행

   

   tribe.cluster1.cluster.name : cluster1-name

   tribe.cluster2.cluster.name : cluster2-name


5. node discovery

   같은 cluster.name내에서 추가된 다른노드를 자동으로 발견

   (zen discovery 모듈을 통해서 자동 발견)


   각각 노드들은 ping request를 다른 노드에 보냄

   ( multicast : development dev, multicast로 임의적으로 cluster 조인

     unicast : product dev, 정확한 주소와 port를 가지고 cluster 조인

   )

    

   discovery.zen.ping.multicast.enabled = false (multicase disable)

   discovery.zen.ping.unicast.hosts: [ "node1:9200", "node2:9200", "node3:[10000-10100]"]


6. Data inside clusters

   elasticsearch는 데이터를 데이터 노드에 저장


   1) shards

      전체 indexed Elasticsearch documents의 subset를 포함하는 elasticsearch 

      index의 partition.   

      (shard는 single unit 형태로 single node에 저장)

     

      shard는 unit of parallelism in the query execution이고 기본적으로 5개의

      shard를 가지고 있음


   2) replicas

      shard 데이터 one copy가 primary로 마크되면, 다른거는 replicas로 마크됨

      만약 primary가 dies 되면 같은 shard의 replicas중에 하나가 primary로

      promotion됨


      create index시 shards와 replicas의 default number 변경가능


      curl -XPOST  http://localhost:9200/test -d '{

"settings" : {

"index" : {

"number_of_shards" : 10,

"number_of_replicas" : 2

}

}

      }'


7. shard allocation

   Elasticsearch cluster로부터 node를 add 하거나 삭제할때 마스터 노드는 primary와 

   replica shards를 다른 노드로 재할당함


    shard lifecycle은 4가지 상태를 가짐 (unassigned, initializing, started, relocating)


    1) 시작시

       - cluster 시작시 노드들 shard들을 initialize

       - primary shard 시작

       - replica shard initialize


    2) 노드 추가시

       - 노드가 추가되면 마스터는 replicas를 relocating 결정

       - 새로운 노드에서 replicas 시작


    3) 노드 다운시

       - 해당 노드에 primary와 replica를 새로 만듬



8. elasticsearch 서버 교체


    1) reallocation 방지 설정

 curl -XPUT localhost:9200/_cluster/settings -d '{

                "transient" : {

                    "cluster.routing.allocation.enable" : "none"

          }

  }' 

   

    2) 새 장비에서 elasticsearch 데몬 시작

       bin/elasticsearch -d


    3) 교체 장비 elasticsearch 종료

       curl -XPOST 'http://localhost:9200/_cluster_nodes/_local/_shutdown'


    4) reallocation 수행

    curl -XPUT localhost:9200/_cluster/settings -d '{

                "transient" : {

                    "cluster.routing.allocation.enable" : "all"

          }

   }'    

'NoSQL > Elasticsearch' 카테고리의 다른 글

elasticsearch optimize api  (0) 2016.06.15
elasticsearch warmers  (0) 2016.06.15
elasticsearch cluster 상태확인  (0) 2016.06.14
elasticsearch 사용법  (0) 2016.06.10
es-hadoop  (0) 2016.06.07

+ Recent posts