使用 Loki 微服务模式部署生产集群

  发布时间:2025-11-04 04:08:25   作者:玩站小弟   我要评论
前面我们提到了 Loki 部署的单体模式和​​读写分离两种模式​​,当你的每天日志规模超过了 TB 的量级,那么可能我们就需要使用到微服务模式来部署 Loki 了。微服务部署模式将 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,已经过测试,可以与 boltdb-shipper​ 和 memberlist​ 一起使用,而其他存储和发现选项也可以使用,但是,该图表不支持设置 Consul 或 Etcd 以进行发现,它们需要进行单独配置,相反,可以使用不需要单独的键/值存储的 memberlist。默认情况下该 Chart 包会为成员列表创建了一个 Headless Service,ingester、网站模板distributor、querier 和 ruler 是其中的一部分。

安装minio

比如我们这里使用 memberlist、boltdb-shipper 和 minio 来作存储,由于这个 Chart 包没有包含 minio,所以需要我们先单独安装 minio:

$ helm repo add minio https://helm.min.io/

$ helm pull minio/minio --untar --version 8.0.10

$ cd minio

创建一个如下所示的 values 文件:

# ci/loki-values.yaml

accessKey: "myaccessKey"

secretKey: "mysecretKey"

persistence:

enabled: true

storageClass: "local-path"

accessMode: ReadWriteOnce

size: 5Gi

service:

type: NodePort

port: 9000

nodePort: 32000

resources:

requests:

memory: 1Gi

直接使用上面配置的 values 文件安装 minio:

$ helm upgrade --install minio -n logging -f ci/loki-values.yaml .

Release "minio" does not exist. Installing it now.

NAME: minio

LAST DEPLOYED: Sun Jun 19 16:56:28 2022

NAMESPACE: logging

STATUS: deployed

REVISION: 1

TEST SUITE: None

NOTES:

Minio can be accessed via port 9000 on the following DNS name from within your cluster:

minio.logging.svc.cluster.local

To access Minio from localhost, run the below commands:

1. export POD_NAME=$(kubectl get pods --namespace logging -l "release=minio" -o jsonpath="{.items[0].metadata.name}")

2. kubectl port-forward $POD_NAME 9000 --namespace logging

Read more about port forwarding here: http://kubernetes.io/docs/user-guide/kubectl/kubectl_port-forward/

You can now access Minio server on http://localhost:9000. Follow the below steps to connect to Minio server with mc client:

1. Download the Minio mc client - https://docs.minio.io/docs/minio-client-quickstart-guide

2. Get the ACCESS_KEY=$(kubectl get secret minio -o jsonpath="{.data.accesskey}" | base64 --decode) and the SECRET_KEY=$(kubectl get secret minio -o jsonpath="{.data.secretkey}" | base64 --decode)

3. mc alias set minio-local http://localhost:9000 "$ACCESS_KEY" "$SECRET_KEY" --api s3v4

4. mc ls minio-local

Alternately, you can use your browser or the Minio SDK to access the server - https://docs.minio.io/categories/17

安装完成后查看对应的 Pod 状态:

$ kubectl get pods -n logging

NAME READY STATUS RESTARTS AGE

minio-548656f786-gctk9 1/1 Running 0 2m45s

$ kubectl get svc -n logging

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

minio NodePort 10.111.58.196 <none> 9000:32000/TCP 3h16m

可以通过指定的 32000 端口来访问 minio:

然后记得创建一个名为 loki-data 的 bucket。

安装Loki

现在将我们的对象存储准备好后,接下来我们来安装微服务模式的 Loki,首先创建一个如下所示的 values 文件:

# ci/minio-values.yaml

loki:

structuredConfig:

ingester:

max_transfer_retries: 0

chunk_idle_period: 1h

chunk_target_size: 1536000

max_chunk_age: 1h

storage_config:

aws:

endpoint: minio.logging.svc.cluster.local:9000

insecure: true

bucketnames: loki-data

access_key_id: myaccessKey

secret_access_key: mysecretKey

s3forcepathstyle: true

boltdb_shipper:

shared_store: s3

schema_config:

configs:

- from: 2022-06-21

store: boltdb-shipper

object_store: s3

schema: v12

index:

prefix: loki_index_

period: 24h

distributor:

replicas: 2

ingester:

replicas: 2

persistence:

enabled: true

size: 1Gi

storageClass: local-path

querier:

replicas: 2

persistence:

enabled: true

size: 1Gi

storageClass: local-path

queryFrontend:

replicas: 2

gateway:

nginxConfig:

httpSnippet: |-

client_max_body_size 100M; serverSnippet: |-

client_max_body_size 100M;

上述配置会选择性地覆盖 loki.config 模板文件中的默认值,使用 loki.structuredConfig 可以在外部设置大多数配置参数。loki.config、loki.schemaConfig 和 loki.storageConfig 也可以与 loki.structuredConfig 结合使用。loki.structuredConfig 中的值优先级更高。

这里我们通过 loki.structuredConfig.storage_config.aws 指定了用于保存数据的 minio 配置,为了高可用,核心的几个组件我们配置了2个副本,ingester 和 querier 配置了持久化存储。

现在使用上面的香港云服务器 values 文件进行一键安装:

$ helm upgrade --install loki -n logging -f ci/minio-values.yaml .

Release "loki" does not exist. Installing it now.

NAME: loki

LAST DEPLOYED: Tue Jun 21 16:20:10 2022

NAMESPACE: logging

STATUS: deployed

REVISION: 1

TEST SUITE: None

NOTES:

  • Tag:

相关文章

  • 小熊系统U盘教程(简单操作,轻松安装小熊系统U盘,让电脑高效运行)

    摘要:随着科技的不断发展,我们对电脑的要求也越来越高。而小熊系统U盘作为一种优秀的操作系统,可以让我们的电脑拥有更好的性能和用户体验。本文将为大家详细介绍如何使用小熊系统U盘,并附上具体...
    2025-11-04
  • 微软阻止开源工具下载 Windows 镜像

    Rufus 是一款老牌的 USB 启动盘制作工具,可以将 Windows、Linux 等系统的 ISO 格式的镜像制作成 USB 启动盘。Rufus 本身体积非常小巧1.3MB 左右),使用时也无需安
    2025-11-04
  • 使用位字段和掩码写一个国际象棋游戏

    使用位字段和掩码是不用数据结构组合数据的常用方法。假设你在用 C 语言写一个国际象棋游戏。追踪棋盘上棋子的一种方法是定义一个结构,该结构定义了棋盘上每个可能的棋子及其颜色,因此每个格子都包含该结构中的
    2025-11-04
  • Hadoop中的契约监控机制,被惊艳到了

    一、前情概要这篇文章给大家聊聊Hadoop在部署了大规模的集群场景下,大量客户端并发写数据的时候,文件契约监控算法的性能优化。看懂这篇文章需要一些Hadoop的基础知识背景,还不太了解的兄弟,可以先看
    2025-11-04
  • Win10自由截图快捷键探秘(轻松掌握Win10自由截图的快捷键技巧)

    摘要:随着科技的不断发展,截图已经成为我们生活中常见的操作之一。在Win10系统中,自由截图是一项非常实用的功能,但很多人可能并不清楚如何使用快捷键来进行操作。本文将为您介绍Win10自...
    2025-11-04
  • 用 Python 测试 API 的三种方式

    在这个教程中,你将学到如何对执行 HTTP 请求代码的进行单元测试。也就是说,你将看到用 Python 对 API 进行单元测试的艺术。单元测试是指对单个行为的测试。在测试中,一个众所周知的经验法则就
    2025-11-04

最新评论