推荐的 Docker 镜像架构

问题描述 投票:0回答:2

我们有“一些”应用程序想要在 Docker 容器中运行。我们最初的尝试创建了一个“基础映像”,作为不同应用程序映像的基础。它包含基本的 Linux 操作系统、jdk 等。现在我们正在考虑添加与 ELK 堆栈的集成,我们将在单独的服务器集群上运行该堆栈。我正在考虑使用 Metric Beat 和 File Beat 将数据发送到 ELK 集群。

我正在考虑几种方法,想知道哪种方法更好(或另一种>>)。

  • 将File Beat和Metric Beat添加到“基础镜像”中。应用程序映像将使用它作为基础并添加 Beats 模块的配置。
  • 在每台服务器上将 File Beat 和 Metric Beat 作为单独的 docker 容器运行,并利用 docker compose 进行编排。
  • 将 Elastic 代理用作单独的容器?

谢谢

docker elastic-stack elastic-beats
2个回答
1
投票

我建议每个容器有 1 个应用程序,并使用 Kubernetes 作为容器调度程序。

一些好处:

  • 较小的图像,每个图像都有一个进程,可以更轻松地独立扩展每个应用程序
  • 每个容器都可以将日志写入标准输出,日志由K8s收集到本地磁盘。 Filebeat可以从k8s节点挂载本地磁盘(例如/var/log/containers)并将日志流式传输到ELK。如果您有多个 k8s 节点,则需要在 Daemonset 中运行 Filebeat,以便从每个 k8s 节点传输来自每个容器的所有日志。
  • 每个应用程序都可以在同一端口公开一个类似 Prometheus 的端点,您可以使用 metricbeat 来收集这些指标(同样每个 k8s 节点一个实例)并将它们流式传输到 ELK

Elastic Agent 与 filebeat/metricbeat 只是方便的问题。如果您的堆栈中有 Fleet 服务器,则弹性代理会更易于管理。您可以集中启动/停止弹性代理、添加集成以及更改代理策略。对于一个简单的项目来说,这可能有点矫枉过正,但它始终是我的第一选择。


0
投票

我刚刚从 https://github.com/peasead/elastic-container 安装了所有 ELK,它的效果非常好

© www.soinside.com 2019 - 2024. All rights reserved.