繁体   English   中英

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

[英]Amazon AWS - Upload files to multiple instances under single LB

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

我将每周或每天更新我的文件几次。 我检查了 Elastic beanstalk、Amazon Code Deploy 和 Amazon EFS。 但是很难用。 任何人请帮助

我建议使用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还将成为您上载和删除图像的中央目录。

您可以利用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. 找出连接到您的负载均衡器的所有ec2实例
  2. 对于每个ec2实例,找出PublicIPAddress (因为您可以通过scp连接到它们,所以您应该拥有该PublicIPAddress
  3. 运行scp命令将1个文件复制到ec2服务器上的某个位置

您也可以复制文件夹,如果需要推送许多文件,可能会更容易

Amazon ElasticFileSystem现在可能是最简单的选项,您将创建文件系统并将其附加到连接到负载均衡器的所有ec2实例,并且在将文件传输到EFS时,它将在所有ec2实例可用。附加了EFS(创建EFS并将其安装到ec2实例的设置仅需执行一次)

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

robocopy Source Destination1 files
robocopy Source Destination2 files

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

我有一个应用程序负载均衡器 (alb),所以我必须以@FredricHenri 的回答为基础


EC2_PUBLIC_IPS=`aws elbv2 --profile mfa describe-load-balancers --names c360-infra-everest-dev-lb --query 'LoadBalancers[].LoadBalancerArn' --output text | xargs -n 1 -I {} aws elbv2 --profile mfa describe-target-groups --load-balancer-arn {} --query 'TargetGroups[].TargetGroupArn' --output text | xargs -n 1 -I {} aws elbv2 --profile mfa describe-target-health --target-group-arn {} --query 'TargetHealthDescriptions[*].Target.Id' --output text | xargs -n 1 -I {} aws ec2 --profile mfa describe-instances --instance-id {} --query 'Reservations[].Instances[].PublicIpAddress' --output text` 
echo $EC2_PUBLIC_IPS
echo ${EC2_PUBLIC_IPS} | xargs -n 1 -I {} scp -i ${EC2_SSH_KEY_FILE} ../swateek.txt ubuntu@{}:/home/ubuntu/

注意事项

  1. 我使用了一个名为“MFA”的 AWS 配置文件,这是可选的
  2. 其他环境变量EC2_SSH_KEY_FILE是用于访问 EC2 实例的.pem文件的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM