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 |