S_K*_*S_K 2 cloud amazon-ec2 amazon-web-services
我正在运行EC2 Linux实例。为了进行一些维护,我关闭了实例,然后再次启动它。但是,EC2 IP现在已更改。
停止并重新启动后,如何保持Amazon EC2实例的IP地址不变?
弹性IP有其局限性。
如果您已达到某个区域中弹性 IP 地址的最大数量,并且您想要的只是以恒定的方式连接到 EC2 实例,我建议使用 Route53 记录而不是使用 IP 地址。
我创建了一条指向我的 EC2 实例的 IP 地址的 Route53 记录。EC2 停止时记录不会更改。
保持记录指向 EC2 地址的方法是运行一个脚本,在 EC2 启动时更改 Route53 记录。
这是我的 EC2 的用户数据:
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
# get the public ip address
# Ref: /sf/ask/2707554251/
export public_ip=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)
cat <<EOF > input.json
{
"Comment": "optional comment about the changes in this change batch request",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "my-domain.my-company.com",
"Type": "A",
"TTL": 300,
"ResourceRecords": [
{
"Value": "${public_ip}"
}
]
}
}
]
}
EOF
# change route53 record
/usr/bin/aws route53 change-resource-record-sets \
--hosted-zone-id <hosted_zone_of_my-company.com> \
--change-batch file://input.json
--//
Run Code Online (Sandbox Code Playgroud)
这里我使用my-domain.my-company.com作为我的EC2的route53记录。
另请记住替换<hosted_zone_of_my-company.com>为您的托管区域的 ID。
通过使用此方法,您将获得指向您的 EC2 实例的 Route53 记录。并且当您停止和启动 EC2 时,记录不会改变。因此您始终可以使用route53记录连接到您的EC2。
请记住为 EC2 实例分配具有 Route53 权限的 IAM 角色,以便您可以正确运行用户数据。
请记住,我提供的用户数据旨在与 Amazon Linux 2 一起使用,并且这些命令可能不适用于其他 Linux 发行版。
如果curl http://169.254.169.254/latest/meta-data/public-ipv4不适用于您的 EC2。你可以尝试一下curl http://checkip.amazonaws.com。
是的你可以。
转到Elastic IP并创建一个。
然后选择新创建的Elastic IP并选择Associate弹性 IP,然后选择Instance ID要将其关联到的 IP。
就是这样。即使您重新启动 EC2,现在也会分配 IP。
请注意,AWS对每个弹性 IP 收取0.005 美元/小时的费用,对于每月超过 100 次的额外重新映射,每个弹性 IP 地址重新映射收取 0.10 美元的费用
小智 6
实际上,当您停止/启动实例时,IP地址将更改。如果重新启动实例,它将保留相同的IP地址。不幸的是,我们无法将地址重新分配给您的实例,因为该地址将被释放回其他EC2实例使用的池中。
如果您希望将来避免出现此问题,请根据需要:
要了解更多信息,请参阅aws文档以分配elastic ip。
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |