2013-05-29 2 views
73

내가 5 대의 컴퓨터를 가지고 있다고 가정하고 elasticsearch 클러스터를 실행하려고하며 모두 공유 드라이브에 연결되어 있습니다. 나는 그 세 곳 모두가 볼 수 있도록 elasticsearch 한 장을 그 공유 드라이브에 두었습니다. 난 그냥 내 컴퓨터의 전체에 공유 드라이브에 elasticsearch를 시작하고 클러스터링은 자동으로 마법을 작동합니까? 아니면 elasticsearch가 5 대의 컴퓨터에서 실행되는 것을 인식하도록 특정 설정을 구성해야합니까? 그렇다면 관련 설정은 무엇입니까? 복제본 구성에 대해 걱정해야합니까, 아니면 자동으로 처리됩니까?ES 클러스터를 설정하는 방법은 무엇입니까?

+1

노드? – javanna

답변

48

매우 편리합니다.

각 기계에는 ElasticSearch의 사본이 있어야합니다 (지금 가지고있는 사본 만 복사하면됩니다). 왜냐하면 각 기계/노드는 클러스터 전체에 걸쳐 공유되는 자체 파일을 유지하려고하기 때문입니다 .

정말로해야 할 일은 설정 파일을 편집하여 클러스터 이름을 포함시키는 것입니다. 모든 기계가 얻을 수있는 (한 기계가 동일한 네트워크에있는 모든이다로) 자동으로 나머지를 할 것입니다 elasticsearch 같은 클러스터 이름

여기 읽기가있는 경우

당신은 시작 : https://www.elastic.co/guide/en/elasticsearch/guide/current/deploy.html

을 (데이터가있는 곳에서) 인덱스를 생성합니다. 원하는 복제본의 수 (클러스터 주위에 배포 될 것입니다)

+8

또한 - head plugin을 설치하십시오. 따라서 인덱스 상태를 훨씬 쉽게 모니터링 할 수 있습니다. http://mobz.github.io/elasticsearch-head/ –

+1

각 기계마다 별도의 사본이 있어야하는 이유는 무엇입니까? 단일 노드 컴퓨터에서 본 내용을 기반으로 동일한 복사본으로 여러 인스턴스를 실행하도록 노드 이름을 변경할 수 있습니다. http://www.concept47.com/austin_web_developer_blog/elasticsearch/how-to-run-multiple-elasticsearch -nodes-on-one-machine/단일 공유 드라이브가있는 별도의 시스템을 가지고있을 때 적용 할 수 있습니까? 단일 복사본에 대해 클러스터 이름을 설정하면 각 컴퓨터에서 해당 단일 복사본을 실행할 수 있으므로 클러스터 이름이 이론적으로 똑같거나 올바르지 않다고 생각합니까? – Rolando

+0

각 기계 (또는 노드)는 lucene 색인 파일을 작성하기 위해 자체 파일 공간이 필요합니다. 로컬 노드의 다른 디렉토리를 가리 키도록 구성 파일을 변경 (링크 확인)하면 작동 할 수 있습니다. –

50

일반적으로 자동으로 처리됩니다.

자동 검색이 작동하지 않는 경우.

cluster.name: mycluster 
    node.name: "node1" 
    node.master: true 
    node.data: true 
    discovery.zen.ping.multicast.enabled: false 
    discovery.zen.ping.unicast.hosts: ["node1.example.com"] 

노드 2 :에게

cluster.name: mycluster 
    node.name: "node2" 
    node.master: false 
    node.data: true 
    discovery.zen.ping.multicast.enabled: false 
    discovery.zen.ping.unicast.hosts: ["node1.example.com"] 

등 노드 3,4,5- 대를

노드들에게 유니 캐스트 발견 1을 설정하여, 상기 탄성 검색 구성 파일을 편집. 노드 1을 마스터로 만들고 나머지는 데이터 노드로 만 만듭니다.

편집 : 당신이 N 노드가있는 경우, 다음 규칙에 따라, N/2+1 노드는하지만, 그들은 또는 데이터 노드하지 않을 수도 장애 복구 메커니즘에 대한 마스터해야한다, ES 규칙에 의해주의하시기 바랍니다.

또한 자동 검색이 작동하지 않는 경우 네트워크에서 허용하지 않는 (따라서 사용하지 않도록 설정되어 있기 때문일 수 있습니다. 너무 많은 자동 검색 핑이 여러 서버에서 발생하는 경우 해당 핑을 관리하는 리소스로 인해 다른 서비스가 올바르게 실행되지 않습니다.

예를 들어, 10,000 개의 노드 클러스터와 모든 10,000 개의 노드가 자동 핑을 수행한다고 생각해보십시오.

+0

설명을 위해 모든 "unicast.hosts"가 마스터의 IP/FQDN이어야합니까? 귀하의 모범이 나타내는 것 같습니다. – harperville

+0

예. 사용 가능한 모든 마스터 목록입니다. – KannarKK

+0

1.7.x의 elasticsearch.yml 주석에 따르면, "node.master : false"를 설정하면 노드가 절대로 마스터가되지 않습니다 .... – Jonesome

3

@ KannarKK가 ES 2.0.2에서 제안한 단계를 시도했지만 클러스터를 가동시킬 수 없었습니다. 분명히, 나는 Slave configuration discovery.zen.ping.unicast.hosts에 Master의 TCP 포트 번호를 설정했기 때문에 발견을 위해 IP 주소 (TCP 포트 번호)와 함께 Master의 포트 번호가 필요합니다. 그래서 내가 다음과 같은 구성을 시도하면 그것은 나를 위해 작동합니다.

노드 1

cluster.name: mycluster 
node.name: "node1" 
node.master: true 
node.data: true 
http.port : 9200 
tcp.port : 9300 
discovery.zen.ping.multicast.enabled: false 
# I think unicast.host on master is redundant. 
discovery.zen.ping.unicast.hosts: ["node1.example.com"] 

당신은, 인덱스에 대한 공유 폴더를 사용하지 않을거야 당신이 2

cluster.name: mycluster 
node.name: "node2" 
node.master: false 
node.data: true 
http.port : 9201 
tcp.port : 9301 
discovery.zen.ping.multicast.enabled: false 
# The port number of Node 1 
discovery.zen.ping.unicast.hosts: ["node1.example.com:9300"] 
관련 문제