关于亚马逊AWS:亚马逊AWS – 将文件上传到单个LB下的多个实例

Amazon AWS - Upload files to multiple instances under single LB

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

我会每周或每天更新一些文件。我检查了弹性Beanstalk、Amazoncodedeploy和AmazonEFS。但是很难使用。任何人请帮忙


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

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

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

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


你可以利用aws cli,你可以运行类似

1
2
3
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

基本上是这样的:

  • 找出所有连接到负载均衡器的EC2实例
  • 对于每个EC2实例,找出PublicIPAddress(假设您有,因为您可以通过SCP连接到它们)
  • 运行scp命令将1个文件复制到ec2服务器上的某个位置
  • 如果需要推送许多文件,也可以复制复制文件夹,这可能会更容易

    Amazon ElasticFileSystem现在可能是最简单的选择,您将创建文件系统并将其附加到所有附加到负载平衡器的EC2实例上,当您将文件传输到EFS时,它将可用于所有附加了EFS的EC2实例。(创建EFS并将其装载到EC2实例的设置只能执行一次)


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

    1
    2
    robocopy Source Destination1 files
    robocopy Source Destination2 files

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