Loki 배포 모드
이 문서는 Grafana Loki 공식 문서의 Loki deployment modes 페이지 (opens in a new tab)를 번역한 것입니다.
Loki는 많은 마이크로서비스로 구성된 분산 시스템입니다. 또한 이러한 모든 마이크로서비스가 동일한 바이너리 내에 존재하는 독특한 빌드 모델을 가지고 있습니다.
-target
명령줄 플래그를 사용하여 단일 바이너리의 동작을 구성하여 시작 시 실행될 마이크로서비스를 지정할 수 있습니다. loki.yaml
파일에서 각 구성 요소를 추가로 구성할 수 있습니다.
Loki는 저장하는 데이터와 이를 수집하고 쿼리하는 소프트웨어를 분리하므로, 요구 사항이 변경됨에 따라 최소한의 구성 변경 또는 구성 변경 없이 다른 모드에서 클러스터를 쉽게 재배포할 수 있습니다.
모놀리식 모드 (Monolithic mode)
가장 간단한 작동 모드는 모놀리식 배포 모드입니다. -target=all
명령줄 매개변수를 설정하여 모놀리식 모드를 활성화합니다. 이 모드는 Loki의 모든 마이크로서비스 구성 요소를 단일 프로세스 내에서 단일 바이너리 또는 Docker 이미지로 실행합니다.
모놀리식 모드는 Loki를 실험해보기 위해 빠르게 시작하거나, 하루에 약 20GB까지의 소규모 읽기/쓰기 볼륨에 유용합니다.
공유 객체 저장소를 사용하고 loki.yaml
파일의 링 섹션을 구성하여 모든 인스턴스 간에 상태를 공유함으로써 모놀리식 모드 배포를 더 많은 인스턴스로 수평적으로 확장할 수 있지만, 배포를 확장해야 하는 경우 단순 확장 가능 모드를 사용하는 것이 좋습니다.
memberlist_config
구성과 공유 객체 저장소를 사용하여 두 개의 Loki 인스턴스를 실행하고 replication_factor
를 3
으로 설정하여 고가용성을 구성할 수 있습니다. 트래픽을 모든 Loki 인스턴스에 라운드 로빈 방식으로 라우팅합니다.
쿼리 병렬화는 인스턴스 수와 loki.yaml
파일에 정의된 max_query_parallelism
설정에 의해 제한됩니다.
단순 확장 가능 모드 (Simple Scalable)
단순 확장 가능 배포는 Loki Helm 차트에 의해 설치되는 기본 구성입니다. 이 배포 모드는 Loki를 대규모로 배포하는 가장 쉬운 방법입니다. 이는 모놀리식 모드로 배포하거나 각 구성 요소를 별도의 마이크로서비스로 배포하는 것 사이의 균형을 맞춥니다.
참고: 이 배포 모드는 때때로 SSD(simple scalable deployment)라는 약어로 불리며, 솔리드 스테이트 드라이브와 혼동해서는 안 됩니다. Loki는 객체 저장소를 사용합니다.
Loki의 단순 확장 가능 배포 모드는 실행 경로를 읽기, 쓰기 및 백엔드 대상으로 분리합니다. 이러한 대상은 독립적으로 확장할 수 있으므로 Loki 사용 방식에 더 잘 맞는 인프라 비용으로 로그 수집 및 로그 쿼리에 대한 비즈니스 요구 사항을 충족하도록 Loki 배포를 사용자 정의할 수 있습니다.
단순 확장 가능 배포 모드는 하루에 몇 TB의 로그까지 확장할 수 있지만, 이를 훨씬 초과하면 대부분의 사용자에게 마이크로서비스 모드가 더 나은 선택이 될 것입니다.
단순 확장 가능 모드의 세 가지 실행 경로는 각각 시작 시 Loki에 다음 인수를 추가하여 활성화됩니다.
-target=write
- 쓰기 대상은 상태 저장이며 Kubernetes StatefulSet에 의해 제어됩니다. 다음 구성 요소를 포함합니다.- Distributor
- Ingester
-target=read
- 읽기 대상은 상태 비저장이며 자동으로 확장될 수 있는 Kubernetes Deployment로 실행될 수 있습니다(공식 헬름 차트에서는 현재 스테이트풀셋으로 배포됨). 다음 구성 요소를 포함합니다.- Query Frontend
- Querier
-target=backend
- 백엔드 대상은 상태 저장이며 Kubernetes StatefulSet에 의해 제어됩니다. 다음 구성 요소를 포함합니다.- Compactor
- Index Gateway
- Query Scheduler
- Ruler
- Bloom Planner (실험적)
- Bloom Builder (실험적)
- Bloom Gateway (실험적)
단순 확장 가능 배포 모드는 클라이언트 API 요청을 읽기 또는 쓰기 노드로 보내기 위해 Loki 앞에 리버스 프록시를 배포해야 합니다. Loki Helm 차트에는 Nginx를 사용하는 기본 리버스 프록시 구성이 포함되어 있습니다.
마이크로서비스 모드 (Microservices mode)
마이크로서비스 배포 모드는 Loki의 구성 요소를 별개의 프로세스로 실행합니다. 각 프로세스는 해당 target
을 지정하여 호출됩니다. 3.2 릴리스의 구성 요소는 다음과 같습니다.
- Bloom Builder (실험적)
- Bloom Gateway (실험적)
- Bloom Planner (실험적)
- Compactor
- Distributor
- Index Gateway
- Ingester
- Overrides Exporter
- Querier
- Query Frontend
- Query Scheduler
- Ruler
- Table Manager (사용되지 않음)
팁:
-list-targets
플래그로 Loki를 실행하여 사용 중인 Loki 버전에 대한 전체 대상 목록을 볼 수 있습니다. 예:docker run docker.io/grafana/loki:3.2.1 -config.file=/etc/loki/local-config.yaml -list-targets
구성 요소를 개별 마이크로서비스로 실행하면 더 세분화된 제어가 가능하여 특정 사용 사례에 더 잘 맞도록 각 구성 요소를 개별 마이크로서비스로 확장할 수 있습니다.
마이크로서비스 모드 배포는 더 효율적인 Loki 설치가 될 수 있습니다. 그러나 설정하고 유지 관리하기가 가장 복잡합니다.
마이크로서비스 모드는 매우 큰 Loki 클러스터나 확장 및 클러스터 운영에 대한 더 정밀한 제어가 필요한 운영자에게만 권장됩니다.
마이크로서비스 모드는 Kubernetes 배포용으로 설계되었습니다. 마이크로서비스 모드로 Loki를 배포하기 위해 커뮤니티에서 지원하는 Helm 차트 (opens in a new tab)를 사용할 수 있습니다.