使用 Loki 微服务模式部署生产集群
前面我们提到了 Loki 部署的单体模式和读写分离两种模式,当你的每天日志规模超过了 TB 的量级,那么可能我们就需要使用到微服务模式来部署 Loki 了。
微服务部署模式将 Loki 的组件实例化为不同的进程,每个进程都被调用并指定其目标,每个组件都会产生一个用于内部请求的 gRPC 服务器和一个用于外部 API 请求的 HTTP 服务。
ingesterdistributorquery-frontendquery-schedulerquerierindex-gatewayrulercompactor
将组件作为单独的微服务运行允许通过增加微服务的数量来进行扩展,定制的集群对各个组件具有更好的可观察性。微服务模式部署是最高效的 Loki 安装,但是,它们的设置和维护也是最复杂的。
对于超大的 Loki 集群或需要对扩展和集群操作进行更多控制的集群,建议使用微服务模式。
微服务模式最适合在 Kubernetes 集群中部署,提供了 Jsonnet 和 Helm Chart 两种安装方式。
Helm Chart
同样这里我们还是使用 Helm Chart 的方式来安装微服务模式的 Loki,在安装之前记得将前面章节安装的 Loki 相关服务删除。
首先获取微服务模式的 Chart 包:
$ helm repo add grafana https://grafana.github.io/helm-charts
$ helm pull grafana/loki-distributed --untar --version 0.48.4
$ cd loki-simple-scalable
该 Chart 包支持下表中显示的组件,Ingester、distributor、querier 和 query-frontend 组件是始终安装的,其他组件是可选的。
组件
可选
默认开启?
gateway
✅
✅
ingester
❎
n/a
distributor
❎
n/a
querier
❎
n/a
query-frontend
❎
n/a
table-manager
✅
❎
compactor
✅
❎
ruler
✅
❎
index-gateway
✅
❎
memcached-chunks
✅
❎
memcached-frontend
✅
❎
memcached-index-queries
✅
❎
memcached-index-writes
✅
❎
该 Chart 包在微服务模式下配置 Loki,已经过测试,可以与