亚马逊AWS - 将文件上传到单个LB下的多个实例

时间:2016-07-12 09:47:06

标签: amazon-web-services amazon-ec2

我需要将更新的文件上传到单个LB下的多个ec2 instace。我的问题是我错过了一些ec2实例,它打破了我的网页。 是否有任何工具可以通过一次单击将多个文件上载到多个EC2 Windows服务器。

我会每周或每天更新一次我的文件。我查看了Elastic beanstalk,Amazon Code Deploy和Amazon EFS。但是很难用。有人请帮忙

3 个答案:

答案 0 :(得分:2)

我建议使用AWS S3和AWS CLI。您可以做的是在所有EC2实例上安装AWS CLI。在AWS S3中创建一个存储桶。

使用以下语法在每个EC2实例上启动Cron作业。

aws s3 sync s3://bucket-name/folder-on-bucket /path/to/local/folder 

因此,当您将新图像上传到S3存储桶时,所有图像都将自动与负载均衡器后面的所有EC2实例同步。此外,AWS s3将成为您上传和删除图像的中心目录。

答案 1 :(得分:1)

你可以利用AWS CLI,你可以运行像

这样的东西
aws elb describe-load-balancers --load-balancer-name <name_of_your_lb> --query LoadBalancerDescriptions[].Instances --output text |\ 
xargs -I {} aws ec2 describe-instances --instance-id {} --query Reservations[].Instances[].PublicIpAddress |\
xargs -I {} scp <name_of_your_file> <your_username>@{}:/some/remote/directory 

基本上是这样的:

  1. 找出连接到Load Balancer的所有ec2实例
  2. 对于每个ec2实例,找出PublicIPAddress(据说你可以通过scp连接到它们)
  3. 运行scp命令在ec2服务器上的某处复制1个文件
  4. 如果您需要推送多个文件,也可以复制copy folder,这可能会更容易

    Amazon ElasticFileSystem现在可能是最简单的选项,您可以创建文件系统并将其附加到连接到Load Balancer的所有ec2实例,当您将文件传输到EFS时,它将可用于所有连接EFS的ec2实例 (创建EFS并将其安装到ec2实例的设置必须只进行一次)

答案 2 :(得分:0)

创建包含一些robocopy命令的脚本,并在要更新服务器上的文件时运行它。像这样:

robocopy Source Destination1 files
robocopy Source Destination2 files

您还需要与计算机上的用户共享要复制的文件夹。