# ElasticSearch Cluster 구성


# 단일 서버 분산 환경
단일 서버에서 세 개의 노드를 하나의 클러스터로 구성.
> 각각 포트를 다르게 하여 노드별 구분

# 다중 서버 분산 노드 환경
한 대 이상의 여러 서버들을 하나의 클러스터로 구성.
> 각각 아이피를 다르게 하여 노드별 구분


사용자 삽입 이미지

# ElasticSearch 단일 서버 환경설정


[search@node01 ~]$ cat node1/config/elasticsearch.yml
##################### Elasticsearch Configuration Example #####################

################################### Cluster ###################################

cluster.name: cluster_sunshiny

#################################### Node #####################################

node.name: "node1"
node.master: true
node.data: true

#################################### Index ####################################

index.number_of_shards: 5
index.number_of_replicas: 1

#################################### Paths ####################################

#################################### Plugin ###################################

################################### Memory ####################################

############################## Network And HTTP ###############################

network.host: 192.168.1.100
transport.tcp.port: 9300
transport.tcp.compress: true
http.port: 9200
http.enabled: true

################################### Gateway ###################################

gateway.type: local

############################# Recovery Throttling #############################

################################## Discovery ##################################

# discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.1.100:9300", "192.168.1.100:9301", "192.168.1.100:9302"]
action.auto_create_index: true
index.mapper.dynamic: true

################################## Slow Log ##################################

################################## GC Logging ################################

################################## Marvel Exporter ##############################
# Marvel 플러시인 이용시 클러스터 정보 추가
# marvel.agent.exporter.es.hosts: ["192.168.1.100:9200", "192.168.1.100:9201", "192.168.1.100:9202"]

# 노드 복사
[search@node01 ~]$ cp -r node1 node2
[search@node01 ~]$ cp -r node1 node3
[search@node01 ~]$ ls -al
drwxrwxr-x.  9 search search  4096 2014-04-29 18:52 node1
drwxrwxr-x.  9 search search  4096 2014-05-02 11:41 node2
drwxrwxr-x.  9 search search  4096 2014-05-02 11:41 node3

# node.name과  포트 설정
> 노드에 맞추어 노드명과 포트를 변경
node.name: "node[1-3]"
transport.tcp.port: 930[0-2]
http.port: 920[0-2]

# 노드별 백그라운드로 실행
node1/bin/elasticsearch -Des.pidfile=es.pid > /dev/null 2>&1 &
node2/bin/elasticsearch -Des.pidfile=es.pid > /dev/null 2>&1 &
node3/bin/elasticsearch -Des.pidfile=es.pid > /dev/null 2>&1 &

# 클러스터 상태 확인
[search@node01 ~]$ curl -XGET http://localhost:9200/_cluster/health?pretty=true
{
  "cluster_name" : "cluster_sunshiny",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 9,
  "active_shards" : 26,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0
}

# 전체 정보 확인
[search@node01 ~]$ curl -XGET http://localhost:9200/_nodes?pretty=true | more
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 19137  100 19137 {  0     0      0      0 --:--:-- --:--:-- --:--:--     0
   0    "cluster_name" : "cluster_sunshiny",
     "nodes" : {
0   9    "fvMPA-q9RCuin2eHsesMtA" : {
59k       "name" : "node3",
     0 -      "transport_address" : "inet[/192.168.1.100:9302]",
-:--      "host" : "node01",
:-- -      "ip" : "192.168.1.100",
-:--      "version" : "1.1.1",
:--       "build" : "f1585f0",
--:--:-      "http_address" : "inet[/192.168.1.100:9202]",
- 12      "attributes" : {
45k        "master" : "true"

      },
      "settings" : {
        "index" : {
          "number_of_replicas" : "1",
          "mapper" : {
            "dynamic" : "true"
          },
          "number_of_shards" : "5"
        },
        "gateway" : {
          "type" : "local"
        },
        "pidfile" : "es.pid",
        "network" : {
          "host" : "192.168.1.100"
        },
        "node" : {
          "data" : "true",
          "master" : "true",
          "name" : "node3"
        },
        "marvel" : {
          "agent" : {
            "exporter" : {
              "es" : {
                "hosts" : [ "192.168.1.100:9200", "192.168.1.100:9201", "192.168.1.100:9202" ]
              }
            }
          }
        },
        "http" : {
          "port" : "9202",
          "enabled" : "true"
        },
        "transport" : {
          "tcp" : {
            "compress" : "true",
            "port" : "9302"
          }
        },
        "name" : "node3",
        "action" : {
          "auto_create_index" : "true"
        },
        "path" : {
          "logs" : "/home/search/node3/logs",
          "home" : "/home/search/node3"
        },
        "cluster" : {
          "name" : "cluster_sunshiny"
        },
        "discovery" : {
          "zen" : {
            "ping" : {
              "unicast" : {
                "hosts" : [ "192.168.1.100:9300", "192.168.1.100:9301", "192.168.1.100:9302" ]
              },
              "multicast" : {
                "enabled" : "false"
              }
            }
          }
        },
        "foreground" : "yes"
      },
.
.
.

# 인덱스 생성
[search@node01 ~]$ curl -XPUT 'http://localhost:9200/blog'
{"acknowledged":true}

# 인덱스 생성 정보 확인
[search@node01 ~]$ curl -XGET 'http://localhost:9200/blog/_settings?pretty=true'
{
  "blog" : {
    "settings" : {
      "index" : {
        "uuid" : "94mluhR1T2mE35quxFzarg",
        "number_of_replicas" : "1",
        "number_of_shards" : "5",
        "version" : {
          "created" : "1010199"
        }
      }
    }
  }
}

# 인덱스 삭제
물리적으로 바로 삭제되어 복구할 수 없음.
[search@node01 ~]$ curl -XDELETE 'http://localhost:9200/blog'
{"acknowledged":true}

# Add Document

도큐먼트의 색인 진행
JSON 형식으로 작성하여 등록
등록시 각 필드에 대한 매핑 정보는 ElasticSearch 내부적으로 자동 구성
elasticsearch.yml 파일에 index.mapper.dynamic: true 가 기본으로 설정되어야 함.


curl -XPOST 'http://localhost:9200/blog/article/2' -d '{
"article_id" : 2,
"title" : "This is a Title2",
"content" : "This is a Content2"
}'

[search@node01 ~]$ curl -XPOST 'http://localhost:9200/blog/article/2' -d '{
> "article_id" : 2,
> "title" : "This is a Title2",
> "content" : "This is a Content2"
> }'
{"_index":"blog","_type":"article","_id":"2","_version":1,"created":true}

# Get Document
검색하지 않고 도큐먼트 _id 값을 이용하여 도큐먼트 정보를 조회

[search@node01 ~]$ curl -XGET 'http://localhost:9200/blog/article/1'
{"_index":"blog","_type":"article","_id":"1","_version":2,"found":true, "_source" :
{
"article_id" : 1,
"title" : "This is a Title",
"content" : "This is a Content"
}}

[search@node01 ~]$ curl -XGET 'http://localhost:9200/blog/article/2'
{"_index":"blog","_type":"article","_id":"2","_version":1,"found":true, "_source" : {
"article_id" : 2,
"title" : "This is a Title2",
"content" : "This is a Content2"
}}

# Get Index, Type Mappings
인덱스에 대한 매핑 정보를 확인하는 API
index.mapper.dynamic 으로 생성된 매핑이 어떻게 구성되었는지 확인


[search@node01 ~]$ curl -XGET 'http://localhost:9200/blog/_mapping?pretty=true'
{
  "blog" : {
    "mappings" : {
      "article" : {
        "properties" : {
          "article_id" : {
            "type" : "long"
          },
          "content" : {
            "type" : "string"
          },
          "title" : {
            "type" : "string"
          }
        }
      }
    }
  }
}


참고 : 실무 예제로 배우는 Elasticsearch 검색엔진 - 정호욱 지음

※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
05 2, 2014 15:36 05 2, 2014 15:36


Trackback URL : http://develop.sunshiny.co.kr/trackback/1008

Leave a comment

« Previous : 1 : ... 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : ... 648 : Next »

Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. church building construction church building construction %M
  2. wireless clocks transmitter wireless clocks transmitter %M
  3. how to build a metal building how to build a metal building %M
  4. builder builder %M
  5. social media management company social media management company %M

Calendar

«   12 2019   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2781565 HIT
TODAY 1148 HIT
YESTERDAY 1360 HIT