Loki 2.4采用新的简化部署模式更容易运行

458 阅读5分钟

Loki 2.4版来了!

它有一长串很酷的新功能,但有几件事我真的想在这里重点介绍:

  1. Loki现在可以接受不按顺序的写作了
  2. 运行Loki比以前更容易了

请务必查看完整的发布说明,当然还有升级指南,以获得所有关于升级Loki的最新信息。还可以查看我们的ObservabilityCON 2021会议为什么Loki比以前更容易使用和操作

支持失序的日志

长期以来,Loki上严格的排序限制一直是许多Loki用户面临的挑战,请相信我,当我告诉你,我们这样做并不只是为了困难。以高效的内存方式快速摄取日志数据是一种挑战

今天,Loki将传入的日志分组为块,当它们达到特定大小时,这些块就会被压缩。然而,一旦传入的日志行被压缩,就很难插入不按顺序接收的新条目,特别是如果该条目需要插入到已经压缩的块中。解压、记录和重新压缩的速度很慢,而且成本很高。

我们探索了几种支持失序的方法,同时试图最好地管理性能和排序灵活性方面的权衡。最后,我们想出了一个我们非常自豪的解决方案,现在已经在v2.4版本中推出了。即将发表的一篇博文将详细介绍这一解决方案的所有细节,如果你有兴趣,可以查看设计文档

总之,我们很高兴终于解决了上述问题,并通过允许将日志无序地发送到Loki,简化了许多Loki用户的生活

可扩展的简单部署

接下来我想谈谈我们为使Loki更容易运行所做的工作。我们已经谈了很久了,通过将Loki作为一个能够接收和服务你的日志的单一进程来运行,可以很容易地开始使用它。

但如果你想在高可用配置中运行Loki呢?或者,如果你想利用我们的会议讲座网络研讨会中经常谈到的查询并行化的优势呢?你很快就会发现自己已经达到了单一二进制系统所能提供的极限,并且很可能会疲惫地盯着Loki微服务配置的Helm或jsonnet。

不要误会我的意思--我们喜欢微服务。这是我们在Grafana实验室运行Loki的方式,它提供了最大的灵活性和可配置性,以及每天扩展到数百TB日志的潜力。然而,我们也认识到,运行Loki也是我们的工作,而微服务是复杂的。对于大多数人来说,这种复杂程度既是不必要的,也是采用的障碍。

这就是为什么我们在一种混合模式中投入了大量的精力,我们称之为可扩展的简单部署。这个想法是这样的。将Loki作为一个单一的二进制文件运行,但引入一个简单的路径来实现高可用性和可扩展性。

第1步:单一二进制

这也被称为单体模式,是开始使用Loki的最简单方式,我们对这种操作模式做了一些重大改进。首先,单二进制模式现在运行一个query frontend ,这是负责分割和分片查询的组件。现在,单二进制的Loki也可以进行并行查询了。

其次,单二进制Loki也可以通过添加更多的实例并通过共享哈希环连接它们来进行扩展。我们还注意到,确保compactor ,并且只有一个实例在自动运行!

添加更多的实例可以在更多的进程中分散传入的写入,以及为更多的查询并行化提供更多的CPU,使你可以轻松地扩展Loki单二进制实例的性能,并实现高可用性的运行。

注意:上面没有显示的是压实器,它将使用环来选举一个单一的实例来运行压实。

第2步:可扩展的简单部署

这种模式是运行Loki作为一个单一的二进制/单片机模式和全面的微服务之间的一个桥梁。其目的是为了让用户在扩展方面有更大的灵活性,并提供Loki中读写路径分离的优势。

这对那些想在Kubernetes之外运行Loki的人来说应该特别有吸引力。

它的工作原理是采取相同的二进制/图像,并传递一个-target=read-target=write 配置标志:

注意:上面没有显示的是压实器,它将使用环来选举一个单一的读取实例来运行压实。

这些新的标志将读/写所需的内部组件分割成这些独立的进程,使你的读和写路径更容易单独扩展和监控。这也让你可以添加和删除读取实例,以增加/减少Loki能够做的查询并行量,这样你就可以按需扩展读取性能,就像微服务模型一样。

第3步:微服务

对于那些想要在灵活性、可观察性和性能方面达到极致的人来说,Loki仍然可以像以前一样作为单独的组件微服务运行:

但我认为,很多人会发现这种模式是没有必要的,而且增加的移动部件的数量也许是一种阻碍,而不是一种好处。我们会把这个问题留给你来决定,我们很高兴能为你提供更多的选择,让你以最适合你的方式来运行Loki!

结束的想法

Loki团队非常努力地使v2.4成为最容易使用的Loki版本。我们正在更新我们的 文档,并期待更多关于在这些不同模式下运行Loki的帖子和例子。