我已经部署了自动缩放EC2,并为其关联了一个弹性IP地址。我没有使用负载平衡器,因为用户总数不超过20。因此,我当前的设置是要具有最少1个和最多 1 个服务器。
如果EC2服务器出现故障,则会创建另一台服务器,这是我正在尝试执行的操作。但是,弹性IP不会自动重新映射到新创建的服务器。
如何将弹性IP自动分配给新创建的EC2实例?有没有解决此问题的方法?
更新:
我已将以下内容添加到“用户数据”中,但是新创建的EC2 没有公共IP 。
#!/bin/bash
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
aws ec2 associate-address --instance-id $INSTANCE_ID --allocation-id=eipalloc-**.***.***.***
答案 0 :(得分:1)
在没有ELB来管理弹性IP的情况下,您需要在实例创建后使用EC2实例上的“用户数据”字段来调用aws ec2 associate-address
API端点:
aws ec2 associate-address --instance-id <instance id> --allocation-id <eip-alloc-id>
可以使用AWS控制台找到EIP分配ID。您可以通过在用户数据中进行此调用来获取实例ID:
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
答案 1 :(得分:0)
使用 EC2 和自动扩展,您需要在 EC2 中使用 user data
将弹性 IP 自动附加到 EC2 实例以进行自动扩展
#!/bin/bash
aws configure set aws_access_key_id "XYZ..."
aws configure set aws_secret_access_key "ABC..."
aws configure set region "ap-..."
aws ec2 associate-address --instance-id "$(curl -X GET "http://169.254.169.254/latest/meta-data/instance-id")" --public-ip your_elastic_IP
注意:您应该创建新用户,IAM 仅具有创建/获取 aws 密钥的权限关联地址
希望对你有帮助:)