Elasticsearch 딥 (b)

분산 아키텍처의 기초를 Elasticsearch

복잡한 분산 메커니즘의 투명 숨겨진 속성을 Elasticsearch

Elasticsearch은 대량의 데이터에 응답하여 분산하는 분산 시스템이다.

Elasticsearch 분산 메커니즘의 복잡성을 숨 깁니다

  • 단편화 : 클러스터 ES의 일부가 갈 우리가 부담 문서에 삽입하기 전에 될 것입니다, 우리는 어떤 샤드 갔다하는 데이터를 배포하는 방법에 대한 데이터를 상관하지 않습니다.
  • 클러스터 검색 메커니즘 (클러스터 발견) : 새 프로세스 ES를 시작하면, 다음 말이지 프로세스가 노드 클러스터 ES로, 자동으로 가입 찾을 수 있습니다.
  • 로드 균형 조정 파편은 예를 들어, 균등 ES가 자동으로 확인하기 위해 할당 구분되며, 세 개의 노드, 세 개의 노드를 할당하는 25 파편의 총이 존재한다고 가정 읽기 요청 각 노드의로드 균형
  • shard 부본
  • 요청 라우팅
  • 클러스터 확장
  • 샤드 재분배

수평 확장 및 수직 확장 Elasticsearch

확장 계획 :

  6 개 서버는 각각 두 개의 옵션이 있습니다, 1T 데이터가 즉시 8T 할 데이터의 양을 증가 이번에 개최.

(1) 수직 확장 두 서버의 구매 재, 각 서버의 용량은 서버 (6) 이제 총 용량은 4 * 2 * + 1T = 2T ~ 8T 인 대신 이전 두 서버의, 2T이다.

확장 (2) 수준 : 두 개의 서버가 각 서버의 용량이 1T가 갈 클러스터에 직접 추가 된 새로운 구매, 서버의 이제 총 용량은 8 * 1T = 8T이다

수직 확장 : 비용이 매우 높은, 더 강력한 서버를 구입하고, 세계에서 가장 강력한 서버 용량 10T라고 가정하면, 병목 현상이있을 것이다, 그러나 당신이 총 수의 5000T 시간에 도달했을 때, 얼마나 많은 당신은 가장 강력한를 구입하려는 서버 아.

수평 확장 : 업계에서 자주 강력한 컴퓨팅 및 스토리지 용량을 구성 할 수있다, 함께 그룹화 프로그램, 점점 더 많은 일반 서버 조달,보다 일반적인 성능, 그러나 많은 일반 서버를 사용합니다.

데이터 증감 또는 재조정 노드 감소되면

새로운 노드가 자동으로 하나 개의 파편이 새로 추가 할당 된 ES를 첨가되어있을 경우, 예를 들어, 현재 노드는 파편을 가지고 세 네 개의 노드가 있으며, 하나 개의 Ge 노드는 두 샤드 있지만 시간이 노드까지.

마스터 노드

항상 클러스터 노드를해야합니다 에스는 마스터 노드입니다 :

  • 에스 클러스터 관리 메타 데이터 : 예를 들어, 인덱스 생성 및 삭제, 인덱스 메타 데이터를 유지, 노드를 추가하고 제거 할 유지 보수 데이터의 클러스터
  • 기본적으로 자동으로 마스터 노드로 노드를 선택합니다
  • 모든 요청을 수행하지 않는 마스터 노드, 그것은 병목의 단일 지점되지 않습니다

노드 분산 아키텍처 평등

  1. 피어 노드는, 각 노드는 모든 요청을받을 수 있습니다
  2. 경로 요청 : 요청을받은 후 모든 노드는 요청이 자동으로 요청을 처리하도록 해당 노드로 라우팅 할 수 있습니다.
  3. 응답 모음 : 다른 노드로부터 데이터를 수신에 응답하여 가장 원시적 인 노드는 다음 클라이언트에 데이터를 반환합니다.

차 파편 다시 메커니즘을 빗질 복제 파편

  1. 샤드의 복수를 포함하는 인덱스 (색인)

     

  2. 각각의 파편은 데이터, 루씬 인스턴스, 전체 지수와 요청을 처리 할 수있는 기능의 일부를 수행, 작업의 최소 단위입니다.

     

  3. 노드의 변화, 파편은 자동으로 노드의 균형을로드합니다.

     

  4. 기본 샤드 레플리카 샤드 각 문서는 기본 샤드 복수로 존재할 수없는, 오직 특정 일차 및 파편의 해당 복제 shrad 존재한다.
  5. 복제 파편 내결함성, 부하와 읽기 요청을 부담 할 책임이 기본 샤드 사본입니다.
  6. 인덱스 생성의 기본 샤드의 수는 고정되고, 레플리카 샤드의 ​​개수는 언제든지 수정 될 수있다.
  7. 차 파편의 기본 개수는 5, 복제 shrad 기본의 수는 1 개입니다.
  8. 차 파편과 복제 파편이 동일한 노드에 배치 할 수 없습니다 (또는 노드가 다운, 차 파편 및 복제 파편은. 내결함성의 역할을 달성 할 것 누락되었다)하지만, 다른 차 파편 및 복제 파편이 배치됩니다 동일한 노드에.

단일 노드 환경 지수는 모양 만들기?

  1. 단일 노드 환경, 인덱스를 생성 : 세 가지 주요 파편, 3 게르마늄 복제 파편이 있습니다
    PUT /test_index
    {
       "settings" : {
          "number_of_shards" : 3,
          "number_of_replicas" : 1
       }
    }
  2. 集群状态是yellow
  3. 这个时候,只会将3个primary shard分配到仅有的一个node上去,另外3个replica shard是无法分配的
  4. 集群可以正常工作,但是一旦出现节点宕机,数据全部丢失,而且集群不可用,无法承担任何请求

两个node环境下replica shard是如何分配的? 

 此时的情况,1个node、3个primary shard、3个replica shard

如果此时新增一个node进来,构成了一个由2个node组成的es集群,如下:

并且:

  1. primary shard会自动把数据同步到对应的replica shard上去
  2. 客户端的读请求可以发送到primary shard上去,也可以发送到replica shard上去

Elasticsearch横向扩容

  1. primary shard 和 replica shard自动负载均衡
    目前情况:2个node, 3个primary shard,3个replica shard


    如果此时给es集群增加一个节点(node),es会自动对primary shard和replica shard进行负载均衡
  2. 每个Node有更少的shard, IO/CPU/Memory资源给每个shard分配更多,每个shard性能更好
  3. 扩容的极限,6个shard(3个primary shard,3个replica shard),最多扩容到6台机器,每个shard可以占用单台服务器的所有资源,性能最好
  4. 超出扩容极限,动态修改replica数量,9个shard(3primary,6 replica),扩容到9台机器,比3台机器时,拥有3倍的读吞吐量
  5. 3台机器下,9个shard(3 primary,6 replica),资源更少,但是容错性更好,最多容纳2台机器宕机,6个shard只能容纳0台机器宕机
  6. 这里的这些知识点,你综合起来看,就是说,一方面告诉你扩容的原理,怎么扩容,怎么提升系统整体吞吐量;另一方面要考虑到系统的容错性,怎么保证提高容错性,让尽可能多的服务器宕机,保证数据不丢失

Elasticsearch容错机制

  1. master选举、replica容错、数据恢复 
    目前es集群情况:3个node,9个shard(3个primary shard,6个replica shard)

    如果此时master node宕机:

    因为Node1节点宕机了,所以primary shard0、replica shard1、replica shard2三个3shard就丢失了。master node宕机的一瞬间,primary shard0这个shard就没有了,此时就不是active status,所以集群的状态为red.

  2. 容错第一步master选举,自动选举另外一个node成为新的master,承担起master的责任来:
  3. 容错第二步新master将丢失的primary shard的某个replica shard提升为primary shard,此时cluster status会变为Yellow,因为所有的primary shard都变成了active status,但是,少了一个replica shard,所以不是所有的replica shard都是active

  4. 容错第三步重启故障的node, new master节点将会把缺失的副本都copy一份到该node上去,而且该node会使用之前已有的shard数据,只是同步一下宕机之后发生的改变。

    此时es cluster的状态为green,因为所有的primary shard和replica shard都是active状态。

 

추천

출처www.cnblogs.com/wyt007/p/11373530.html