일관된 해시 링
일관된 해시 링 (opens in a new tab)은 Loki 클러스터 아키텍처에 통합되어 다음을 지원합니다.
- 로그 라인 샤딩 지원
- 고가용성 구현
- 클러스터의 수평적 확장 및 축소 용이. 데이터를 재조정해야 하는 작업에 대한 성능 저하가 적습니다.
해시 링은 다음과 같은 경우 단일 유형의 구성 요소 인스턴스를 연결합니다.
- 모놀리식 배포 모드에 Loki 인스턴스 집합이 있는 경우
- 단순 확장 가능 배포 모드에 여러 읽기 구성 요소 또는 여러 쓰기 구성 요소가 있는 경우
- 마이크로서비스 모드에서 한 유형의 구성 요소에 여러 인스턴스가 있는 경우
모든 Loki 구성 요소가 해시 링으로 연결되는 것은 아닙니다. 이러한 구성 요소는 해시 링에 연결되어야 합니다.
- 배포자(distributors)
- 수집기(ingesters)
- 쿼리 스케줄러(query schedulers)
- 압축기(compactors)
- 통치자(rulers)
이러한 구성 요소는 선택적으로 해시 링에 연결할 수 있습니다.
- 인덱스 게이트웨이(index gateway)
3개의 배포자와 3개의 수집기가 정의된 아키텍처에서 이러한 구성 요소에 대한 해시 링은 동일한 유형의 구성 요소 인스턴스를 연결합니다.
링의 각 노드는 구성 요소의 인스턴스를 나타냅니다. 각 노드에는 해당 링의 각 노드에 대한 통신 정보를 보유하는 키-값 저장소가 있습니다. 노드는 키-값 저장소를 주기적으로 업데이트하여 모든 노드에서 콘텐츠를 일관되게 유지합니다. 각 노드에 대해 키-값 저장소는 다음을 보유합니다.
- 구성 요소 노드의 ID
- 다른 노드가 통신 채널로 사용하는 구성 요소 주소
- 구성 요소 노드의 상태 표시
링 구성
common.ring
블록 내에서 링 구성을 정의합니다.
다른 키-값 저장소 유형을 사용해야 하는 강력한 이유가 없는 한 memberlist
키-값 저장소 유형을 사용하십시오. memberlist
는 가십 프로토콜 (opens in a new tab)을 사용하여 모든 노드에 정보를 전파하여 키-값 저장소 내용의 최종 일관성을 보장합니다.
배포자 링, 수집기 링 및 통치자 링에 대한 추가 구성 옵션이 있습니다. 이러한 옵션은 고급 특수 용도로만 사용됩니다. 이러한 옵션은 배포자의 경우 distributor.ring
블록, 수집기의 경우 ingester.lifecycler.ring
블록, 통치자의 경우 ruler.ring
블록 내에서 정의됩니다.
배포자 링 정보
배포자는 키-값 저장소의 정보를 사용하여 배포자 링의 배포자 수를 계산합니다. 이 수는 클러스터 제한을 추가로 알립니다.
수집기 링 정보
키-값 저장소의 수집기 링 정보는 배포자가 사용합니다. 이 정보를 통해 배포자는 로그 라인을 샤딩하여 배포자가 로그 라인을 보낼 수집기 또는 수집기 집합을 결정할 수 있습니다.
쿼리 스케줄러 링 정보
쿼리 스케줄러는 키-값 저장소의 정보를 사용하여 스케줄러의 서비스 검색에 사용합니다. 이를 통해 쿼리 작성자는 사용 가능한 모든 스케줄러에 연결할 수 있으며 스케줄러는 사용 가능한 모든 쿼리 프런트엔드에 연결하여 쿼리 로드를 분산하는 데 도움이 되는 단일 큐를 효과적으로 생성할 수 있습니다.
압축기 링 정보
압축기는 키-값 저장소의 정보를 사용하여 압축을 담당할 단일 압축기 인스턴스를 식별합니다. 압축기 대상이 여러 인스턴스에 있음에도 불구하고 압축기는 책임 있는 인스턴스에서만 활성화됩니다.
통치자 링 정보
통치자 링은 어떤 통치자가 어떤 규칙 그룹을 평가할지 결정하는 데 사용됩니다.
인덱스 게이트웨이 링 정보
인덱스 게이트웨이 링은 통치자나 쿼리 작성자가 쿼리할 때 어떤 게이트웨이가 어떤 테넌트의 인덱스를 담당할지 결정하는 데 사용됩니다.
원본: https://grafana.com/docs/loki/latest/get-started/hash-rings/ (opens in a new tab)