每当我重新启动 Amazon EC2 实例时,它都会生成一个新的 IP 地址和一个新的私有 DNS。这很成问题,因为我必须进入数据库并更新 mysql.users 以将新的私有 DNS 添加为主机。
我可以使用弹性 IP 或类似的东西来防止每次实例重新启动时更新 MySQL 数据库吗?或者它总是分配一个新的私有 DNS?
答案1
您应该使用 VPC。Amazon 的 VPC(虚拟私有云)在隔离网络中运行您的实例,对于实例的静态内部 IP 等非常有用。它不需要额外付费,而且易于配置。
答案2
您可以允许 10.% 的范围并使用亚马逊防火墙来按安全组进行限制,这将是最简单的选择。
如果您想要明确维护内部 IP 列表并向其发出授权,您可以引导实例以调用脚本或转储可用实例列表。您可以使用 python 和 boto 库来实现这一点,例如,
#!/usr/bin/python
from boto import ec2
AWS_ACCESS_KEY_ID = 'YOUR_KEY'
AWS_SECRET_ACCESS_KEY = 'YOUR_SECRET_KEY'
filters = {'instance-state-name' : 'running'}
ec2conn = ec2.connection.EC2Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
reservations = ec2conn.get_all_instances(filters=filters)
instances = [i for r in reservations for i in r.instances]
for i in instances:
print i.private_ip_address
您也可以发出其他过滤器,例如仅针对特定组或检查特定标签。