【问题标题】:Where are data stored in a clustered environment?集群环境中的数据存储在哪里?
【发布时间】:2015-02-19 06:33:15
【问题描述】:

当人们创建在集群环境中运行的应用程序时,他们到底在哪里存储他们的数据?

我创建了一个从主机上的目录读取 XSLT 的应用程序。但是,如果我想在容器(Docker)内的 Google Cloud Engine 中运行相同的应用程序,那么如果我使用服务(负载平衡)就会遇到很大的问题。必须有一个公共数据存储,所有读取/写入都来自该存储。它应该安装在每个 pod 上(对吗?)。

我用什么来做这个?我尝试使用 Hadoop,但无法挂载(所有指南都已过时,我运行的是 Ubuntu 14.04)。

我不能成为世界上第一个尝试在集群环境中读取/存储数据的人。这是怎么做到的?

【问题讨论】:

    标签: java google-app-engine jakarta-ee docker


    【解决方案1】:

    坦率地说,这是所有 Docker 编排系统 (AFAIK) 的共同弱点。 Google Container Engine 具有persistent disk 功能,因此可以创建在容器重新启动时保持不变的卷。但是,每个永久性磁盘只能附加到设计为在单个实例上运行的容器。这违背了分布式环境的目的。

    Amazon 在 elastic-bean-stalk 上为 docker 提供了类似的设置,您可以在其中将 ebs 卷安装到实例上,但它再次与 docker 卷的概念不兼容。

    CoreOS 为此目的使用 etcd,在所有集群之间提供共享的键值对存储。这实际上不如分布式文件系统有用,但您至少可以在容器之间共享一些数据。

    如果您想在容器之间共享数据,那么现在的情况就是这样,您将不得不推出自己的解决方案。

    编辑:在特权模式下运行容器我能够使用 s3fs 将 s3 存储桶挂载到容器中,因此这可以成为滚动您自己的解决方案的一种选择。虽然我不会将它用于编写繁重的工作量。

    docker run -privileged -it ubuntu bash
    apt-get install build-essential git libfuse-dev libcurl4-openssl-dev 
           libxml2-dev mime-support automake libtool
    apt-get install pkg-config libssl-dev # See (*3)
    git clone https://github.com/s3fs-fuse/s3fs-fuse
    cd s3fs-fuse/
    ./autogen.sh
    ./configure --prefix=/usr --with-openssl # See (*1)
    make
    sudo make install
    
    echo AWS_KEY:AWS_SECRET>/etc/passwd-s3fs
    chmod 400 /etc/passwd-s3fs
    s3fs my-bucket /mnt
    

    【讨论】:

    • 您是说我应该放弃在集群中运行我的应用程序的想法,而是在普通虚拟机上运行吗?集群软件似乎如此未完成。我应该如何自己滚动?
    • docker (github.com/docker/swarm) 的集群部分实际上是未完成的。所有的云提供商都加入了 docker 的行列,但我认为还没有一个完整的端到端解决方案。话虽如此,我仍然在 docker 很棒的用例中广泛使用它,即无状态微服务
    • 至于自己动手,我更多地使用亚马逊,所以我的工作流程将使用 AMI/CloudFormation/Chef 来启动安装和挂载 hdfs 的主机。然后使用 -v 开关将 hdfs 位置安装到我的 docker 容器中。即外部化共享 fs 部分
    【解决方案2】:

    您可以使用Google Cloud Storage 来存储该数据,这些数据可供任何应用使用,甚至在 Google 网络之外。

    特别是从 GCE 访问,请参阅 Integration with Google Cloud Platform表:

    在 Compute Engine 实例中使用 Cloud Storage:

    【讨论】:

      猜你喜欢
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多