【问题标题】:ElasticSearch with Docker: how to persist data with AWS使用 Docker 进行 ElasticSearch:如何使用 AWS 持久化数据
【发布时间】:2017-02-01 15:03:43
【问题描述】:

我正在尝试在 Docker 上运行 ElasticSearch(实际上是在 AWS ECS 上)。如果我没有配置卷,它可以正常工作,但是每次我重新启动容器时,我都会丢失所有数据。 我不知道如何配置音量。

我尝试了什么:

  1. 在任务定义中我配置了卷“Name=esdata1”和“source path=/usr/share/elasticsearch/data”
  2. 在“存储和日志记录”部分的容器定义中,我配置了挂载点“source volume=esdata1”和“container path=/usr/share/elasticsearch/data”

现在,当我启动容器时,当 elasticsearch 尝试写入“/usr/share/elasticsearch/data”时,它会失败并出现错误“访问被拒绝”。所以在安全部分我配置了“user=ec2-user”,但是容器甚至不会启动(停留在“status=created”)。我应该怎么办?我猜这个问题是由于容器的用户必须与主机上的用户相同。主机上的用户是“ec2-user”,我不知道如何继续。

编辑:

我现在可以使用以下配置保存数据:

docker inspect:

"Mounts": [
            {
                "Name": "elasticsearch_data",
                "Source": "/var/lib/docker/volumes/elasticsearch_data/_data",
                "Destination": "/usr/share/elasticsearch/data",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]

现在,如果我停止容器或重新启动主机,数据仍然存在。我唯一担心的是这个文件夹“/var/lib/docker/volumes/elasticsearch_data/_data”位于操作系统卷上,而不是更大的 docker 卷上。来自Aws doc

2015.09.d 及更高版本的 Amazon ECS 优化 AMI 用于操作系统的 8 GiB 卷,附加在 /dev/xvda 并作为文件系统的根目录挂载。还有22个 Docker 用于映像的 /dev/xvdcz 附加的 GiB 卷 和元数据存储。卷配置为逻辑卷 管理 (LVM) 设备,它由 Docker 通过 devicemapper 后端。

如何在 /dev/xvdcz 上保存数据?

非常感谢

【问题讨论】:

    标签: amazon-web-services elasticsearch amazon-ecs


    【解决方案1】:

    您的源路径是写入数据的主机实例上的路径。在你的情况下elasticsearch_data。您需要将 sourcepath 指向一个存在且位于 EC2 实例上所需磁盘上的文件夹。

    因此,将 EBS 磁盘附加到实例。将磁盘安装在/data/es 之类的位置,并将源路径设置为该文件夹。

    但请记住,要正确运行 ES,您可能需要一个连接的机器集群和自动备份。如果您计划托管关键数据,请考虑使用来自 Amazon 的托管 ES。听起来您这里的设置不是很强大。

    【讨论】:

    • 非常感谢:1.对不起,我认为这是一个非常愚蠢的问题,但是“将 EBS 磁盘附加到实例。挂载磁盘”确实是我所缺少的:不应该不是那个磁盘已经挂载了吗? (根据 AWS 文档) 2. AWS 的托管 ES 很旧,我不能使用它,因为他们每年更新不到一次。 3.设置真的不健壮,我其实是来学习的。我知道我需要一个集群,这就是我考虑使用 ECS 以轻松启动节点集群的原因。
    • @StefanoGiacone 我不建议使用带有 docker 容器的磁盘。您需要一个只包含 ES 数据的干净磁盘。如果您使用启动配置来创建实例,您可以在那里添加另一个磁盘。然后在启动配置的用户数据脚本中挂载磁盘并对其进行格式化。或者,您可以手动将磁盘添加到实例。我不知道您希望此设置如何自动化和自我恢复。但是您应该只为 ES 存储创建一个新的 EBS。这将使备份等更容易。
    • 我想这是一个好方法,我想我会去的。关于备份:您认为有用吗?我相信 ES 复制做得更好
    • @StefanoGiacone 拍摄整个 EBS 卷的快照非常容易,我不明白为什么不这样做。当然,复制将有很长的路要走。但您永远不知道 EBS 的快照何时会派上用场。
    • @StefanoGiacone AWS 现在支持 ElasticSearch 5:aws.amazon.com/about-aws/whats-new/2017/01/…
    猜你喜欢
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多