我在多个EC2实例之间共享存储时遇到问题。我将不得不经营繁重的工作,所以我需要很多实例来做这件事。 一方面,我有一个连接到一个服务器实例的EBS卷。另一方面,我有一个工人实例。我创建了这个worker实例的AMI,然后我创建了这个AMI的几个实例副本。所有都在同一个VPC上运行。基本上,服务器实例正在发送作业,而工作人员正在执行作业。 我希望在我的工作人员运行作业时保存一些日志文件,在共享存储中,例如:
worker_1 / LOGFILE.LOG
worker_2 / LOGFILE.LOG
这可能是最好的解决方案吗?
"在使用两个服务器实现概念验证之前,在不同的可用区域中,使用ext4文件系统复制EBS卷,我们将列出不应使用GlusterFS的情况: 从多个服务器(如日志)同时写入的顺序文件。如果将日志存储在GlusterFS中,锁定系统可能会导致严重问题。它是在本地存储它们的理想解决方案,然后使用S3来存档它们。如有必要,我们可以在将数据存储在S3之前或之后合并多个服务器日志。"
"您无法使用s3fs部分更新文件,因此更改单个字节将重新上传整个文件" 。然后,如果你想做一个小的增量变化,那么它肯定没有。您无法使用s3fs - S3只是不能以递增方式更改文件。"
那么什么可以解决我的问题并允许我的员工将他们的日志文件写入共享存储?
感谢您的帮助!
Romanzo
答案 0 :(得分:4)
感谢您的回答。但最后我在实例之间使用NFS,它的效果非常好!
答案 1 :(得分:3)
如this thread和已经提供的一些答案中所述,实现此目标的两种常用方法是使用S3或NFS共享实例之间的数据访问。
在April 9th 2015,亚马逊宣布Amazon Elastic File System (Amazon EFS),它为您尝试解决的问题提供了更好的解决方案。
答案 2 :(得分:0)
您是否考虑过让每个工作人员在本地磁盘上写日志(甚至可能在短暂的分区上),然后让每个工作人员在完成后将自己的大日志文件上传到S3?
这与使用Elastic MapReduce在Hadoop集群上运行某些分布式任务时发生的情况有些类似。
您将获得较高的写入吞吐量(因为它写入本地磁盘,如果您使用临时分区),以及高上传吞吐量以将文件发送到S3(因为您拥有许多工作人员的带宽可用)。
答案 3 :(得分:0)
不完全确定上下文,但直接在已安装的S3上writing objects是否可行?