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 |
基本上是这样的:
如果需要推送许多文件,也可以复制复制文件夹,这可能会更容易
Amazon ElasticFileSystem现在可能是最简单的选择,您将创建文件系统并将其附加到所有附加到负载平衡器的EC2实例上,当您将文件传输到EFS时,它将可用于所有附加了EFS的EC2实例。(创建EFS并将其装载到EC2实例的设置只能执行一次)
创建一个包含一些robocopy命令的脚本,并在需要更新服务器上的文件时运行它。像这样:
1 2 | robocopy Source Destination1 files robocopy Source Destination2 files |
您还需要与计算机上的用户共享要复制到的文件夹。