自动缩放组主机名&云INIT

时间:2016-03-22 15:02:53

标签: amazon-web-services autoscaling

从简短的搜索 - 似乎没有为自动缩放组的成员设置动态主机名的方法。使用index在OpenStack Heat中存在该功能 - 但我无法通过AWS自动缩放组找到任何相关信息。

例如,使用OpenStack Heat - 根据自动缩放组中的节点数自动为节点指定主机名:

  instance_group:
    type: OS::Heat::ResourceGroup
    properties:
      count: { get_param: instance_number }
      resource_def:
        type: OS::Nova::Server
        properties:
          name: instance%index%

如果我在自动缩放组中有3个实例,那么会给我以下内容

instance0
instance1
instance2

我可以使用AWS自动缩放组启动配置和/或cloud-init的类似方法吗?

1 个答案:

答案 0 :(得分:0)

如果你坚持一些不合理的约定,我找到了一个效果很好的解决方案。

我启动的每种EC2实例,无论是在自动缩放组中是否有这种N服务器,还是它的独立实例,我都会为它创建一个实例配置文件。根据我的经验,这是一个好主意,即使你不需要实例访问任何aws服务,拥有空权限的角色/配置文件也不会受到伤害,这使得它更容易如果需要,可以让它访问s3桶或其他任何东西。

然后在user_data脚本(或配置管理工具,如果您正在使用诸如puppet或ansible之类的东西)的服务器启动时,我从metadata service查询实例配置文件名称并附加每个名称的唯一内容服务器,如私有IP,并将其设置为主机名。

您最终会得到像webserver-10-0-12-58这样的主机名,这些主机名对于每个服务器都是人类可读且唯一的。

(这与增量整数的不利之处在于它们不可预测,并且不能用于为单个服务器设置唯一行为。例如,如果你有webserver- {0-8并且需要在一个服务器上运行一些进程,你可以使用如hostname == webserver-0然后run_thing的逻辑。)