4. Loki 部署模式:单机模式、微服务模式与简单可扩展模式

Loki 提供三种官方部署模式,分别对应不同的规模、运维复杂度和可用性要求。在生产环境中,选择正确的部署模式是构建稳定、可观测日志平台的第一步。本章将详细拆解三种模式的核心架构、组件拓扑、适用场景以及容量规划要点。

4.1 三种部署模式总览

部署模式 组件形态 扩展性 高可用 运维复杂度 推荐场景
单机模式 (Single Binary) 单一进程,所有功能集成 无(垂直扩展) 无 极低 开发测试、小规模 PoC、个人环境
微服务模式 (Microservices) 每个组件独立进程 水平扩展,组件级独立扩缩 完整(组件多副本) 高 大规模生产、超大规模集群、多租户
简单可扩展模式 (Simple Scalable) 三个目标:读、写、后端 水平扩展,按读写分离 中等(读写分别多副本) 中 中小规模生产、从单机到集群的过渡
选型建议: 对于云原生日志平台变更门禁压测沙盘,推荐从 简单可扩展模式 起步。它既能模拟生产环境的读写分离架构,又不会引入微服务模式的全链路运维负担,适合在沙盘中验证容量预测模型。

4.2 单机模式 (Single Binary)

单机模式将所有 Loki 组件——Distributor、Ingester、Querier、Query Frontend、Compactor、Index Gateway 等——打包进同一个二进制文件,以单一进程运行。这是最简单的部署方式,适合快速上手和功能验证。

单机模式 (Single Binary) 架构 Loki 单一进程 (Single Binary) Distributor Ingester Querier Compactor Query Frontend 对象存储 (S3/GCS/MinIO) 本地存储 (文件系统)
关键特征:
  • 所有组件共享同一进程空间,通信开销最低。
  • 依赖外部对象存储(或本地文件系统)作为长期存储后端。
  • 不支持水平扩展,单点故障风险高。
  • 典型启动命令:loki --config.file=/etc/loki/loki.yaml

4.3 微服务模式 (Microservices)

微服务模式将每个 Loki 组件部署为独立的进程(或 Kubernetes Deployment),组件之间通过 gRPC 和 HTTP 通信。这是生产环境中最高可用的部署形态,每个组件都可以独立扩缩容、独立滚动更新。

微服务模式 (Microservices) 组件拓扑 Distributor Ingester Query Frontend Querier Compactor Index Gateway 对象存储 (S3/GCS/MinIO) 微服务模式关键特征 • 每个组件独立部署,支持独立水平扩缩容 • 组件间通过 gRPC + HTTP 通信,需服务发现 (K8s Service / Consul) • 写入路径:Distributor → Ingester → 对象存储 • 查询路径:Query Frontend → Querier → Ingester + 对象存储
运维挑战: 微服务模式虽然弹性最强,但组件数量多(通常 7-10 个独立 Deployment),需要配套的监控、日志、链路追踪体系。在压测沙盘中,如果直接使用微服务模式,会引入过多的运维噪音,干扰容量预测模型的基准测试。

4.4 简单可扩展模式 (Simple Scalable)

简单可扩展模式(SSD)是 Loki 团队推荐的“生产就绪”部署方式。它将组件逻辑上分为三个目标:读 (Read)、写 (Write) 和 后端 (Backend),每个目标可以独立水平扩展。SSD 模式在运维复杂度和扩展能力之间取得了最佳平衡。

简单可扩展模式 (Simple Scalable) 架构 Write 目标 Distributor Ingester (水平扩展) Read 目标 Query Frontend Querier (水平扩展) Backend 目标 Compactor Index Gateway (固定副本) 对象存储 (S3/GCS/MinIO) SSD 模式核心优势 • 仅需 3 个 Kubernetes Deployment,运维复杂度远低于微服务模式 • 读写分离,Write 和 Read 目标可独立水平扩展,Backend 目标保持固定副本

4.5 三种模式对比与选型决策树

对比维度 单机模式 简单可扩展模式 微服务模式
部署组件数 1 个进程 3 个 Deployment 7-10 个 Deployment
水平扩展粒度 无 读写分别扩展 每个组件独立扩展
故障域 单点故障 读写隔离故障 组件级隔离
资源开销 低 (1-2 核 / 2-4 GB) 中 (3-6 核 / 6-12 GB) 高 (10+ 核 / 16+ GB)
配置复杂度 单文件配置 三目标配置 + 共享存储 多组件独立配置 + 服务发现
压测沙盘适用性 仅功能验证 推荐:容量预测基准 大规模压测验证
压测沙盘选型建议:
  1. 阶段一(功能验证): 使用单机模式快速验证日志采集、查询、告警链路是否正常。
  2. 阶段二(容量预测基准): 切换为简单可扩展模式,模拟读写分离的真实生产拓扑,采集 Write/Read 目标的 CPU、内存、网络吞吐量作为容量预测模型的训练数据。
  3. 阶段三(极限压测): 在微服务模式下验证组件级瓶颈,例如 Ingester 的写入吞吐上限、Querier 的并发查询能力。

4.6 部署模式对容量预测的影响

在《Loki 支撑云原生日志平台变更门禁压测沙盘与容量预测》课程中,部署模式直接决定了容量预测模型的输入参数和预测粒度:

  • 单机模式: 只能预测整体资源消耗,无法区分读写瓶颈。
  • 简单可扩展模式: 可以分别建立 Write 和 Read 的容量模型,预测写入 QPS 增长对 Ingester CPU 的影响,以及查询并发对 Querier 内存的影响。
  • 微服务模式: 支持组件级容量预测,例如 Compactor 的磁盘 I/O 与数据保留周期的关系、Index Gateway 的缓存命中率与查询延迟的关系。
容量预测最佳实践: 在压测沙盘中,始终以 简单可扩展模式 作为基准环境。当需要细化某个组件的容量模型时,再临时切换到微服务模式进行针对性压测。这样可以避免在沙盘初期就陷入微服务模式的运维复杂性,同时保证容量预测模型具备生产代表性。