[Cluster Health]

기본적인 cluster health check부터 시작해 보자. 이를 통해 우리는 cluster 어떻게 작업을 수행하고 있는지 있다. Curl 사용하여 health check하겠지만, HTTP/REST call 수행할 있는 어떤 tool 사용해도 된다. Elasticsearch 실행한 node 있다고 가정하고, 다른 command shell window open하자.

Cluster health check하기 위해서, _cat API 사용할 것이다. 이전에 node endpoint 주소를 기억해보면 9200 포트를 사용했다.


curl 'localhost:9200/_cat/health?v'



응답 결과는 다음과 같다.


epoch      timestamp cluster       status node.total node.data shards pri relo init unassign
1394735289 14:28:09  elasticsearch green           1         1      0   0    0    0        0


Cluster name elasticsearch임을 있다. 현재 cluser 상태는 green status이다.

Cluster health 대해 언제든지 질의하면, green/yellow/red 한가지 상태를 있다. Green 모든 것이 좋은 상태 (cluster 모든 기능을 정상적으로 수행)임을 의미하고, yellow 모든 data 이용할 수는 있지만, 몇몇 replicas 아직 할당되지 않은 상태(cluster 모든 기능을 정상적으로 수행)임을 의미하고, red 몇몇 데이터를 이용할 없는 상태임을 의미한다. Cluster red 상태일지라도 부분적으로 동작한다. (이용 가능한 shard 있는 데이터에 대한 검색 요청을 지속적으로 수행) 하지만, 유실한 데이터가 있기 때문에 ASAP(As Soon As Possible) 문제 상황을 fix해야 한다.


위의 응답 결과로부터 우리는 전체 1개의 node 있고, 0개의 shard 있음을 있다. 왜냐하면 아직 데이터가 없기 때문이다. Default cluster name (elasticsearch) 사용했고, 다른 node discover하기 위해서 elasticsearch multicase 사용하므로 네트워크 상에서 하나 이상의 node 우연하게 실행하면 모두 cluster join하게 된다. 시나리오에서는 응답 결과로 1 이상의 node 있을 것이다.


다음과 같이 cluster 있는 node list 있다.


curl 'localhost:9200/_cat/nodes?v'


응답은 다음과 같다.


curl 'localhost:9200/_cat/nodes?v'
host         ip        heap
.percent ram.percent load node.role master name
mwubuntu1   
127.0.1.1            8           4 0.00 d         *      New Goblin


여기서 우리는 현재 cluster 있는 단일 node name "New Goblin"임을 있다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/689

[The REST API]

이제 우리는 실행된 node (cluster) 가지고 있다. 다음 단계는 실행중인 node(cluster) 어떻게 communicate하는지를 이해하는 것이다. 운이 좋게도, elasticsearch 이해하기 쉽고 강력한 REST API 제공한다. 여러분은 REST API 통해서 cluster interact 있다. API 이용해서 있는 작업들은 다음과 같다.


  • Cluster, node, index health, status, statistics 체크
  • Cluster, node, index data, metadata 관리
  • Index 대한 CRUD(Create, Read, Update, Delete) 검색 작업 수행
  • Paging, sorting, filtering, scripting, faceting, aggregation 등의 많은 advanced search 작업 실행
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/688

Elasticsearch java 7 필요로 한다. 특히 이글을 쓰는 시점에서, Oracle J 1.8.0_25 버전을 사용할 것을 추천한다. Java 설치는 platform 따라 다르다. 따라서 여기서 Java 설치에 대해서 깊이 들어가지는 않을 것이다.

여러분이 elasticsearch 설치하기 전에 java version 체크하라는 것을 말하는 것으로 충분하다. (필요하다면 java 설치하거나 업그레이드 하라)


java -version

echo $JAVA_HOME


Java 셋업하고 나서, elasticsearch 다운로드하고 실행한다. www.elasticsearch.org/download 에서 과거에 릴리즈된 모든 버전의 바이너리를 이용할 있다. 릴리즈별로 zip/tar 압축 파일을 선택하거나 DEB/RPM package 선택할 있다. 간단하게 말하자면, 그냥 tar 파일을 사용하자.


Elasticsearch 1.5.1 tar 파일을 다음과 같이 다운로드 하자. (윈도우 사용자는 zip package 다운로드 해야 한다.)


curl -L -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.5.1.tar.gz


그리고 다음과 같이 압축을 푼다. (윈도우 사용자는 zip package unzip 해야 한다.)


tar -xvf elasticsearch-1.5.1.tar.gz


현재 directory 뭉텡이의 file/folder들을 생성할 것이다. 다음과 같이 bin directory 이동하자.


cd elasticsearch-1.5.1/bin


이제 여러분은 지금 node에서 단일 cluster 실행할 준비가 되었다. (윈도우 사용자는 elasticsearch.bat 파일을 실행하라)


./elasticsearch


모든 것이 제대로 되었다면, 아래와 같은 메시지들을 확인할 있을 것이다.


./elasticsearch
[2014-03-13 13:42:17,218][INFO ][node           ] [New Goblin] version[1.5.1], pid[2085], build[5c03844/2014-02-25T15:52:53Z]
[2014-03-13 13:42:17,219][INFO ][node           ] [New Goblin] initializing ...
[2014-03-13 13:42:17,223][INFO ][plugins        ] [New Goblin] loaded [], sites []
[2014-03-13 13:42:19,831][INFO ][node           ] [New Goblin] initialized
[2014-03-13 13:42:19,832][INFO ][node           ] [New Goblin] starting ...
[2014-03-13 13:42:19,958][INFO ][transport      ] [New Goblin] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.8.112:9300]}
[2014-03-13 13:42:23,030][INFO ][cluster.service] [New Goblin] new_master [New Goblin][rWMtGj3dQouz2r6ZFL9v4g][mwubuntu1][inet[/192.168.8.112:9300]], reason: zen-disco-join (elected_as_master)
[2014-03-13 13:42:23,100][INFO ][discovery      ] [New Goblin] elasticsearch/rWMtGj3dQouz2r6ZFL9v4g
[2014-03-13 13:42:23,125][INFO ][http           ] [New Goblin] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.8.112:9200]}
[2014-03-13 13:42:23,629][INFO ][gateway        ] [New Goblin] recovered [1] indices into cluster_state
[2014-03-13 13:42:23,630][INFO ][node           ] [New Goblin] started


너무 상세히 들어가지 말고, "New Goblin"이라고 이름 붙여진 node name 있을 것이다. 단일 cluster에서 master로서 선출되고 실행된 node이다. 지금 순간에 master 무엇을 의미하는지에 대해서 걱정하지 말라. 여기서 중요한 것은 하나의 cluster에서 하나의 node 실행했다는 것이다.


이전에 언급한 것처럼, cluster node name override (재정의) 있다. Command line에서 elasticsearch 실행할 다음과 같이 있다.


./elasticsearch --cluster.name my_cluster_name --node.name my_node_name


또한 HTTP 주소와 포트에 대한 정보를 가진 http mark 라인이 접속 가능한 주소임을 주목하라. 기본적으로 elasticsearch 9200 포트 번호를 사용하여 REST API 접근할 있다. 필요할 , 포트 번호는 설정할 있다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/687