raspberry-pi - 在 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 吗?然后我会为我的弹性堆栈切换硬件。
解决方案
我已经在大型商业应用程序中使用 Elastic 获得了一些经验,所以只是一些额外的思考 - 我在这里还没有直接的答案:
- 确实一个ks 4岁的形象不值得努力。Elsstic 在 7.x 版本中是稳定的,并且 8.x 正在进行中,并且发生了巨大的变化。
- 您需要考虑 Elastic 可用的 Heapsize 实际上应该配置为 50%,因为它与 Lucene 共享。
- 这意味着 Elastic 可能非常需要 RAM。根据您的用例并考虑到此时 Raspi 最大 8GB 的限制,您可能需要考虑这一点。
对于一个小型应用程序,它可能会起作用,但我认为它只是实验性的。
如果您没有任何其他方式,您可能有两种选择:
-
- 构建一个 docker 镜像(或者找一个有兴趣加入的人,也许是那个旧 docker 镜像的原始作者)
-
- 一步一步地,首先在无头 raspi 独立设备上部署弹性(甚至暂时避免使用 docker 并减少任何开销),然后添加一些弹性节点配置(弹性通常只适用于至少三个节点)
- 确实构建了一个每个节点至少提供 8 -16 GB 的集群——我相信基于 Ubuntu 的设置将与 X86 一起使用。
推荐阅读
- javascript - 控制台中的错误显示 main.js 中出现错误的不是特定文件的错误
- parsing - ANTLR 语法未按预期工作。我究竟做错了什么?
- rest - Delphi 如何创建 JSON Web Keys (jwk)
- reactjs - 如果我在 Input 标签中搜索任何内容,如果我有该数据,它必须显示,否则它必须显示没有结果
- shopify - 为 Shopify 创建结帐时变体 ID 无效
- azure - Swagger 连接到 Azure ..现在呢?
- android - 如何在android中更改按钮的背景并在几秒钟后保留它
- javascript - d3 刻度,每隔 N 天均匀放置刻度
- amazon-web-services - Elastic Beanstalk:504 网关超时 - 访问端点时下载图像
- pandas - Python Pandas 中的 COUNTIFS