您现在的位置是:亿华云 > 知识
使用读写分离模式扩展 Grafana Loki
亿华云2025-10-04 17:57:09【知识】7人已围观
简介Loki 由多个微服务组件构建而成,可以作为一个可水平扩展的分布式系统运行,Loki 的独特设计可以将整个分布式系统的代码编译成单个二进制或 Docker 映像,单个二进制文件的行为由-target命
Loki 由多个微服务组件构建而成,使用可以作为一个可水平扩展的读写分布式系统运行,Loki 的分离独特设计可以将整个分布式系统的代码编译成单个二进制或 Docker 映像,单个二进制文件的模式行为由 -target 命令行标志控制。
单体模式
最简单的扩展操作模式是设置 -target=all,这是使用默认的方式,不需要指定,读写这就是分离单体模式,它以单个二进制文件或 Docker 映像的模式形式在单个进程中运行 Loki 的所有微服务组件。
单体模式对于快速开始使用 Loki 以及每天数据量约100GB的扩展读写量非常有用。将单体模式部署水平扩展至更多实例可以通过使用共享对象存储,使用配置 memberlist_config 属性在所有实例之间共享状态。读写
可以通过使用 memberlist_config 配置和共享对象存储运行两个 Loki 实例来配置高可用性。高防服务器分离以循环方式将流量路由到所有 Loki 实例。模式并行查询受限于实例数量和定义的扩展查询并行度。
单体模式的安装非常简单,直接使用 grafana/loki-stack 这个 Helm Chart 包安装即可。
读写分离模式
如果你每天的日志量超过几百 GB,或者你想进行读写分离,Loki 提供了简单的可扩展部署模式。这种部署模式可以扩展到每天数 TB 甚至更多的日志。
在这种模式下,Loki 的组件微服务被绑定到两个目标中:-target=read 和 -target=write,BoltDB compactor 服务将作为读取目标的一部分运行。
分离读写路径有以下优点:
通过提供专用节点提高写入路径的可用性。可单独扩展读取路径以按需添加/删除查询性能。这种读写分离的模式需要在 Loki 前面有一个负载均衡器,它将 /loki/api/v1/push 流量路由到写入节点,香港云服务器所有其他请求都转到读取节点,流量应该以循环方式发送。
安装
我们同样使用 Helm Chart 进行安装,首先获取读写分离模型的 Chart 包:
$ helm repo add grafana https://grafana.github.io/helm-charts
$ helm pull grafana/loki-simple-scalable --untar --version 1.4.1
$ cd loki-simple-scalable该 Chart 包支持下表中显示的组件,Ingester、distributor、querier 和 query-frontend 都会安装,其他组件是可选的。
Loki组件
是否可选
是否默认开启
gateway
✅
✅
write
❎
n/a
read
❎
n/a
这里我们使用 MinIO 来作为远程数据存储,分别配置读和写的 Loki 实例副本数为2,为了在 Loki 前面添加一个负载均衡器,需要开启 Gateway,对应的 Values 文件如下所示:
# ci/minio-values.yaml
loki:
commonConfig:
path_prefix: /var/loki
replication_factor: 2
authEnabled: false
# Configuration for the write
write:
# -- Number of replicas for the write
replicas: 3
affinity: |
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
podAffinityTerm:
labelSelector:
matchLabels:
{ { - include "loki.writeSelectorLabels" . | nindent 12 }}
topologyKey: kubernetes.io/hostname persistence:
size: 1Gi
storageClass: local-path
# Configuration for the read node(s)
read:
# -- Number of replicas for the read
replicas: 3
affinity: |
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
podAffinityTerm:
labelSelector:
matchLabels:
{ { - include "loki.readSelectorLabels" . | nindent 12 }}
topologyKey: kubernetes.io/hostname persistence:
size: 1Gi
storageClass: local-path
# Configuration for the gateway
gateway:
# -- Specifies whether the gateway should be enabled
enabled: true
# -------------------------------------
# Configuration for `minio` child chart
# -------------------------------------
minio:
enabled: true
accessKey: enterprise-logs
secretKey: supersecret
service:
type: NodePort
nodePort: 32000
buckets:
- name: chunks
policy: none
purge: false
- name: ruler
policy: none
purge: false
- name: admin
policy: none
purge: false
persistence:
size: 1Gi
storageClass: local-path
resources:
requests:
cpu: 100m
memory: 256Mi然后使用上面的 values 文件来安装读写分离模式的 Loki:
$ helm upgrade --install loki -n logging -f ci/minio-values.yaml .
Release "loki" does not exist. Installing it now.
NAME: loki
LAST DEPLOYED: Fri Jun 17 14:53:20 2022
NAMESPACE: logging
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
很赞哦!(63674)
相关文章
- 打开https://www.aizhan.com/输入自己想要查询的域名然后按回车键,如果做过网站都会有数据显示出来
- 什么是tech域名?tech域名有什么用处?
- 注册的域名会侵犯企业商标吗?选择域名如何避免侵权?
- 域名转出与过户什么联系?有什么需要了解的?
- 众所周知,com域名拥有最大的流通市场和流通历史。最好选择com域名,特别是在购买域名时处理域名。其次可以是cn域名、net域名、org域名等主流域名,现在比较流行的王域名和顶级域名,都是值得注册和投资的。
- 为什么锤子科技要以smartisan.love为域名?love域名有什么梗?
- 域名价值评估主要凭借什么?新手如何定义域名价值?
- 新手怎么看待老域名的?老域名做网站有什么风险?
- 最后提醒我们,域名到期后要及时更新域名,否则可能会丢掉域名,每次抢先注册都不会成功。
- 新手想要进行域名交易怎么办?有没有好的去处?