중화사전망 - 서예자전 - 유연한 검색 클러스터
유연한 검색 클러스터
데이터는 클러스터의 모든 노드에 분산된 단편에 저장됩니다.
복사: 복사본은 원본 조각과 동일한 원본 조각의 복사본입니다. Elasticsearch 는 기본적으로 하나의 복사본을 생성하므로 원본 조각 5 개와 조각 사본 5 개, 데이터 사본 2 개와 조각 10 개에 해당합니다.
마스터 노드: 마스터 노드입니다. 기본 노드의 기본 역할은 인덱스 생성 또는 삭제, 클러스터의 일부인 노드 추적, 관련 노드에 할당할 조각 결정 등 클러스터 작업과 관련이 있습니다. 안정적인 마스터 노드는 클러스터의 건강에 매우 중요합니다. 기본적으로 모든 클러스터의 한 노드를 마스터로 선택할 수 있습니다. 인덱스 데이터 및 검색 쿼리와 같은 작업은 CPU, 메모리 및 입출력 리소스를 많이 사용합니다. 클러스터의 안정성을 보장하기 위해 마스터 노드를 데이터 노드에서 분리하는 것이 더 좋습니다. 마스터 노드도 노드를 조정하고, 검색을 라우팅하고, 클라이언트의 데이터를 데이터 노드에 추가할 수 있지만 이러한 전용 마스터 노드를 사용하지 않는 것이 좋습니다. 한 가지 중요한 원칙은 가능한 한 적은 일을 하는 것이다.
데이터 노드: 데이터 노드입니다. 데이터 노드는 주로 인덱스 데이터를 저장하는 데 사용되며 주로 문서 추가, 삭제, 수정 및 쿼리, 합산 등에 사용됩니다. 데이터 노드는 CPU, 메모리 및 IO 에 대한 요구가 높기 때문에 최적화 중 데이터 노드의 상태를 모니터링하고 리소스가 부족할 경우 클러스터에 새 노드를 추가해야 합니다.
로드 밸런싱 노드: 클라이언트 노드 또는 클라이언트 노드라고도 합니다. 노드가 마스터 노드 또는 데이터 노드로 구성되지 않은 경우 라우팅 요청, 검색, 인덱스 배포 작업 등만 처리할 수 있습니다. 기본적으로 클라이언트 노드는 스마트 로드 밸런서와 같습니다. 독립 실행형 클라이언트 노드는 대규모 클러스터에서 유용합니다. 마스터 노드와 데이터 노드를 조정합니다. 클라이언트 노드가 클러스터에 가입하면 클러스터의 상태를 가져오고 클러스터의 상태에 따라 요청을 직접 라우팅할 수 있습니다.
전처리 노드: 섭취 노드라고도 하며 인덱스화하기 전에 데이터를 사전 처리할 수 있습니다. 실제로 기본적으로 모든 노드는 섭취 작업을 지원하거나 노드를 구체적으로 섭취 노드로 구성할 수 있습니다.
1.Master: 기본 노드, 클러스터당 하나.
마스터 노드도 데이터 노드인 node.datatrue 를 피하십시오.
기본 노드의 기본 역할은 클러스터 레벨 관련 작업을 담당하고, 인덱스 생성 또는 삭제와 같은 클러스터 변경 사항을 관리하고, 클러스터의 일부인 노드를 추적하고, 관련 노드에 할당할 조각을 결정하는 것입니다.
2. 투표: 투표 노드
Node.voting_only = true (data.master = true 가 구성된 경우에도 투표 노드만 출마하지 않지만 데이터 노드로 사용할 수 있음).
조정: 조정 노드
각 노드는 암시적으로 조정 노드입니다. Data.master = false 와 data.data=false 가 모두 설정된 경우 이 노드는 조정 전용 노드가 됩니다.
4. 적격한 마스터 노드 (후보 노드)
마스터 노드로 선택할 수 있는 노드입니다.
5. 데이터 노드 (데이터 노드)
주로 데이터 저장 및 조회 서비스를 담당합니다.
구성:
이는 ES 노드의 기본 구성이며 후보 노드이자 데이터 노드입니다. 이러한 노드가 마스터 노드로 선택되면 압력이 상대적으로 커집니다. 일반적으로 마스터 노드는 인덱스 삭제, 슬라이스 및 균형 생성과 같은 비교적 가벼운 작업만 수행해야 합니다.
데이터 노드가 아닌 후보 노드로만 마스터 노드를 경선할 수 있고, 선출해야 진정한 마스터 노드가 될 수 있다. (존 F. 케네디, Northern Exposure (미국 TV 드라마), 후보명언)
후보 노드도 아니고 데이터 노드도 아닙니다. 즉, 로드 밸런싱을 담당하는 조정 노드로만 사용됩니다.
후보 노드가 아니라 데이터 노드로, 주로 데이터 저장 및 쿼리 서비스를 담당합니다.
조정 노드는 어떻게 작동하며, 그는 어떻게 해당 노드를 찾을 수 있습니까?
각 노드는 클러스터의 상태를 저장하며 마스터 노드만 클러스터의 상태 정보를 수정할 수 있습니다.
Cluster Starte 는 클러스터에서 필요한 정보를 유지 관리합니다.
모든 노드 정보
모든 인덱스 및 관련 매핑 및 설정 정보
단편적인 라우팅 정보
조정 노드는 es 노드의 노드로서 es 클러스터의 모든 노드에서 기본적으로 조정 노드로 사용될 수 있으며 주로 요청 전달 및 요청 응답 처리와 같은 경량 작업에 사용됩니다.
즉, 사용자 요청을 받으면 사용자 요청을 처리할 수 있습니다.
상태 필드는 현재 클러스터가 전체적으로 제대로 작동하고 있는지 여부를 나타냅니다. 세 가지 색상은 다음과 같은 의미를 갖습니다.
모든 녹색 마스터 및 복제본 슬라이스가 정상적으로 작동합니다.
노란색 모든 마스터 슬라이스가 정상적으로 작동하지만 모든 복제본 슬라이스가 정상적으로 작동하는 것은 아닙니다.
빨간색의 주 슬라이스가 제대로 작동하지 않습니다.
문서를 색인화하면 문서가 기본 슬라이스에 저장됩니다. Elasticsearch 는 문서를 저장할 슬라이스를 어떻게 알 수 있습니까? 문서를 만들 때 이 문서를 조각 1 또는 조각 2 에 저장해야 하는지 어떻게 결정합니까?
우선, 그것은 무작위가 아니다, 그렇지 않으면 우리는 앞으로 어디로 가서 문서를 찾아야 할지 모른다. 실제로 이 프로세스는 다음 공식에 따라 결정됩니다.
라우팅은 변수 값이며 기본값은 문서의 _id 또는 사용자 정의 값으로 설정됩니다. 경로는 해시 함수를 통해 숫자를 생성한 다음 해당 숫자를 number_of_primary_shards (기본 슬라이스 수) 로 나누어 나머지를 얻습니다. 이 나머지는 0 과 number _ of _ primary _ shards-1사이에 분포되어 있어 찾고자 하는 문서가 있는 슬라이스의 위치입니다.
클러스터의 모든 노드에 요청을 보낼 수 있습니다. 각 노드는 모든 요청을 처리할 수 있습니다. 각 노드는 클러스터에 있는 모든 문서의 위치를 알고 있으므로 요청을 원하는 노드로 직접 전달할 수 있습니다. 다음 예에서는 모든 요청이 1 노드로 전송되며 이를 조정 노드라고 합니다.
다음은 기본 및 보조 분할 영역과 모든 복사 분할 영역에서 문서를 성공적으로 만들고, 인덱스화하고, 삭제하는 데 필요한 일련의 단계입니다.
일관성 일관성: 이 매개변수 값은 one (기본 슬라이스 상태가 정상인 한 write _ operation 허용), all (기본 슬라이스 및 모든 복제본 슬라이스의 상태가 정상인 경우에만 write _ operation 허용) 또는 quorum 으로 설정할 수 있습니다. 기본값은 quorum 입니다. 즉, 대부분의 조각 복사본 상태가 ok 인 경우 _ write _ operations 를 실행할 수 있습니다.
물론 마스터 노드 선거는 마스터 노드 조건을 충족하는 노드에서 시작됩니다.
Elasticsearch 7.x 의 새로운 클러스터 조정 계층에 대해 자세히 알아보십시오.
/파일 /332
유연한 검색을위한 선거 메커니즘
/archives/ 164
유연한 검색의 선거 메커니즘을 파악하다
Blogs.com/jelly12345/p/15319549.html
MIT 이전에는 모든 데이터가 버퍼 또는 운영 체제 캐시에 남아 있었습니다. 둘 다 메모리였습니다. 시스템이 작동을 멈추면 메모리의 데이터가 손실되므로 가격에 대해 문의하기 위해 데이터에 해당하는 작업을 특수 로그에 기록해야 합니다. 시스템이 다운되고 재시작되면 es 는 translog 의 로그 파일에 있는 데이터를 사전 예방적으로 읽고 메모리 버퍼 및 운영 체제 캐시로 복구합니다.
기존 트랜잭션 로그 파일을 비우고 트랜잭션 로그를 다시 시작합니다. 이 시점에서 커밋이 성공했습니다. 기본값은 30 분마다 제출하는 것이지만 트랜잭션 로그 파일이 너무 크면 커밋도 트리거됩니다. 전체 커밋 프로세스를 새로 고침 작업이라고 합니다. ES API 도 사용할 수 있습니다. 수동으로 새로 고침 작업을 수행하고, 운영 체제 캐시 데이터를 디스크에 수동으로 동기화하고, 커밋 지점을 기록하고, 트랜잭션 로그 파일을 비웁니다.
추가: 실제로 translog 의 데이터는 OS 캐시에 먼저 기록되며, 기본적으로 5 초마다 데이터를 하드 드라이브로 새로 고칩니다. 즉, 버퍼 또는 translog 파일의 운영 체제 캐시에 5 초 정도의 데이터만 있을 수 있습니다. 이 시점에서 기계가 멈추면 5 초의 데이터가 손실되지만 성능이 더 좋습니다. Fsync 의 모든 작업을 디스크로 직접 전송할 수도 있지만 성능이 떨어집니다.
작업이 삭제되면 제출 시 생성됩니다. Del 파일은 문서가 삭제 표시되었음을 나타냅니다. 따라서 검색 시 의 상태에 따라 파일이 삭제되었음을 알 수 있습니다. Del 파일
이 작업이 갱신되면 원본 문서가 삭제 표시된 다음 데이터를 다시 쓸 수 있습니다.
버퍼를 업데이트할 때마다 세그먼트 파일이 생성되므로 기본적으로 많은 세그먼트 파일 파일이 생성되고 정기적으로 병합 작업이 수행됩니다.
병합할 때마다 여러 세그먼트 파일을 하나로 병합하고 삭제 표시된 파일을 삭제한 다음 새 세그먼트 파일을 디스크에 씁니다. 여기서 모든 새 세그먼트 파일을 식별하기 위해 커밋 지점이 기록된 다음 검색을 위해 새 세그먼트 파일을 엽니다.
단락은 변경되지 않으므로 이전 단락에서 문서를 삭제하거나 이전 단락을 수정하여 문서를 업데이트할 수 없습니다. 대신 각 제출 지점마다 하나씩 포함됩니다. Del 파일-삭제된 문서에 대한 조각 정보를 나열합니다.
문서가 "삭제" 되면 실제로 Del 파일에서 삭제 표시된 문서는 여전히 질의를 통해 일치시킬 수 있지만 최종 결과가 반환되기 전에 결과 세트에서 제거됩니다.
문서 업데이트는 유사한 작업입니다. 즉, 문서가 업데이트될 때 이전 버전의 문서는 삭제로 표시되고 새 버전의 문서는 새 섹션으로 색인화됩니다. 문서의 두 버전이 모두 질의를 통해 일치될 가능성이 있지만 결과 세트가 반환되기 전에 삭제된 이전 문서 버전이 제거되었습니다.
자동 새로 고침 프로세스는 초당 새 세그먼트를 생성하므로 짧은 시간 내에 세그먼트 수가 급격히 증가합니다. 그리고 세그먼트가 너무 많으면 더 큰 번거로움을 초래할 수 있다. 각 세그먼트는 파일 핸들, 메모리 및 CPU 주기를 사용합니다. 더 중요한 것은 각 검색 요청이 각 세그먼트를 차례로 검사해야 한다는 것입니다. 따라서 세그먼트가 많을수록 검색 속도가 느려집니다.
Elasticsearch 는 백그라운드에서 세그먼트를 병합하여 이 문제를 해결합니다. 작은 세그먼트가 큰 세그먼트로 병합된 다음 더 큰 세그먼트로 결합됩니다.
조각을 병합하면 삭제된 이전 문서가 파일 시스템에서 지워집니다. 삭제된 문서 (또는 업데이트된 문서의 이전 버전) 는 새 세그먼트로 복사되지 않습니다.
큰 세그먼트를 병합하려면 많은 I/O 및 CPU 리소스가 필요하며, 검사하지 않으면 검색 성능에 영향을 줄 수 있습니다. 기본적으로 Elasticsearch 는 병합 프로세스의 자원을 제한하므로 검색을 수행할 수 있는 충분한 자원이 남아 있습니다.
/QQ _ 2 1299835/ 문장/상세 정보/106534644