首页 > 解决方案 > 在 Raspberry Pi 4 上的 Docker Compose 中运行 Elastic Stack

问题描述

我正在尝试使用 docker compose 在我的 RasPi4 上运行弹性堆栈。问题是 Elastic 不为 ARM 架构提供图像……只有 X86。所以 raspi 不支持开箱即用。

每次我启动我的 docker compose 配置时,我都会收到此消息

7.9.3: Pulling from elasticsearch/elasticsearch
ERROR: no matching manifest for linux/arm/v7 in the manifest list entries

谷歌搜索主要给出指向非官方图像的结果......我会尝试......但这个已经 4 岁了:https ://hub.docker.com/r/ind3x/rpi-elasticsearch/ 。所以我想我没有得到最新的弹性搜索。

任何人都知道我如何让我的弹性运行?这是我的 docker-compose.yml ... 非常直截了当。

version: '3.3'
services:

  elastic-node-1:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
    container_name: elastic-node-1
    restart: always
    environment:
      - node.name=elastic-node-1
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=elastic-node-2
      - cluster.initial_master_nodes=elastic-node-1,elastic-node-2
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - elastic-data-1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic-net

  elastic-node-2:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
    container_name: elastic-node-2
    restart: always
    environment:
      - node.name=elastic-node-2
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=elastic-node-1
      - cluster.initial_master_nodes=elastic-node-1,elastic-node-2
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - elastic-data-2:/usr/share/elasticsearch/data
    ports:
      - 9201:9201
    networks:
      - elastic-net

  kibana:
    image: docker.elastic.co/kibana/kibana:7.9.3
    container_name: kibana
    restart: always
    depends_on:
      - elastic-node-1
      - elastic-node-2
    ports:
      - 5601:5601
    environment:
      ELASTICSEARCH_URL: http://elastic-node-1:9200
      ELASTICSEARCH_HOSTS: http://elastic-node-1:9200
    networks:
      - elastic-net

volumes:
  elastic-data-1:
    driver: local
  elastic-data-2:
    driver: local

networks:
  elastic-net:
    driver: bridge

如果没有办法让这个弹性设置运行,你能推荐任何其他类似于 raspi(使用 linux)的硬件,它是 x86 并且可以代替我的 raspi 吗?然后我会为我的弹性堆栈切换硬件。

标签: raspberry-pielastic-stackraspberry-pi4

解决方案


我已经在大型商业应用程序中使用 Elastic 获得了一些经验,所以只是一些额外的思考 - 我在这里还没有直接的答案:

  • 确实一个ks 4岁的形象不值得努力。Elsstic 在 7.x 版本中是稳定的,并且 8.x 正在进行中,并且发生了巨大的变化。
  • 您需要考虑 Elastic 可用的 Heapsize 实际上应该配置为 50%,因为它与 Lucene 共享。
  • 这意味着 Elastic 可能非常需要 RAM。根据您的用例并考虑到此时 Raspi 最大 8GB 的​​限制,您可能需要考虑这一点。

对于一个小型应用程序,它可能会起作用,但我认为它只是实验性的。

如果您没有任何其他方式,您可能有两种选择:

    • 构建一个 docker 镜像(或者找一个有兴趣加入的人,也许是那个旧 docker 镜像的原始作者)
    • 一步一步地,首先在无头 raspi 独立设备上部署弹性(甚至暂时避免使用 docker 并减少任何开销),然后添加一些弹性节点配置(弹性通常只适用于至少三个节点)
  1. 确实构建了一个每个节点至少提供 8 -16 GB 的集群——我相信基于 Ubuntu 的设置将与 X86 一起使用。

推荐阅读