部署模式
作为一个应用程序,Loki是由许多组件微服务构建而成的,并被设计为作为一个水平可扩展的分布式系统运行。Loki的独特设计将整个分布式系统的代码编译成一个二进制或Docker映像。控件控制该二进制文件的行为—target
命令行标志,并定义三种操作模式之一。
二进制文件的每个部署实例的配置进一步指定它运行哪些组件。
Loki设计用于根据需求变化在不同模式下轻松地重新部署集群,无需配置更改或配置更改最少。
单片模式
操作集的最简单模式—target =所有
.这是默认目标,不需要指定。这是单片模式;它在一个进程中运行Loki的所有微服务组件,作为一个二进制文件或Docker映像。
单片模式对于快速开始使用Loki非常有用,也适用于每天大约100GB的小读/写量。
通过使用共享对象存储和配置对象存储,将单片模式部署横向扩展到更多实例memberlist_config
部分在所有实例之间共享状态。
高可用性可以通过运行两个Loki实例来配置memberlist_config
配置和共享对象存储。
以循环方式将流量路由到所有Loki实例。
查询并行化受限于实例的数量和已定义的查询并行化。
简单的可伸缩部署模式
如果您的日志量每天超过几百GB,或者您希望分离读写问题,Loki提供了简单的可伸缩部署模式。这种部署模式可以扩展到每天几tb甚至更多的日志。考虑大型Loki安装的微服务模式方法。
在这种模式下,Loki的组件微服务被捆绑成两个目标:—target =读
而且—target =写
.的BoltDB压实机服务将作为读目标的一部分运行。
分离读和写路径有以下优点:
- 通过提供专用节点,提高了写路径的可用性
- 单独可伸缩的读路径,按需添加/删除查询性能
简单的可伸缩部署模式需要在Loki前面安装一个负载均衡器洛基/ api / v1 /推动
到写节点的流量。所有其他请求都转到读节点。流量应该以循环方式发送。
Loki的简单可扩展部署可以扩展到每天几tb甚至更多的日志。
Microservices模式
微服务部署模式将Loki组件实例化为不同的进程。调用每个流程时指定其目标
:
- 摄取
- 经销商
- query-frontend
- query-scheduler
- 查询器
- index-gateway
- 统治者
- 压实机
将组件作为单独的微服务运行,可以通过增加微服务的数量进行扩展。定制的集群对各个组件有更好的可观察性。微服务模式部署是最有效的Loki安装。然而,它们的设置和维护也是最复杂的。
微服务模式推荐用于非常大的Loki集群或需要对扩展和集群操作进行更多控制的集群。
微服务模式最适合Kubernetes部署。有Jsonnet和分布式Helm图安装。