【问题标题】:How to dynamically change autoscaling instance names如何动态更改自动缩放实例名称
【发布时间】:2016-10-13 09:16:43
【问题描述】:

我创建了一个热堆栈,它根据 CPU 使用情况自动缩放。每次创建新实例时,都会给它一个随机名称。

有没有办法设置一个特定的名称,并在其末尾添加一个计数器,以便每次创建新实例时它都会增加 1?

例如我的实例1,我的实例2,我的实例3 ...我的实例X

提前致谢!

【问题讨论】:

    标签: openstack autoscaling openstack-heat


    【解决方案1】:

    在 Openstack HEAT 中,堆栈资源名称使用 stack_name 进行操作,并以 short_id 为后缀。这就是为什么在每个自动扩展的实例上,您都可以看到实例名称。这是整个 HEAT 项目中的实现方式,无法定义以递增编号为后缀的实例名称。

    【讨论】:

    • 好的,谢谢。很高兴我现在知道这是不可能的!我快疯了!
    【解决方案2】:

    如果我理解正确,并且如果你是面向对象编程:

    您正在寻找一种称为Factory 的设计模式,或者更简单地说,创建一个static 成员,该成员将在constructor 中增加,并将添加到创建的instance 的名称member .

    【讨论】:

    • 我应该更清楚地说明这一点。不幸的是,我没有使用 OOP。
    • 在这种情况下,您使用什么语言?在这种非 OOP 语言中,instance 是什么意思?你能给出一些代码示例,其中一个实例被赋予一个随机名称吗?
    • 我正在使用 heat 模板来启动一些 openstack 实例,然后自动扩展。使用 YAML 语法定义的模板
    • 很抱歉,在这种情况下我似乎无法帮助您。我对环境不够了解。
    【解决方案3】:

    您可以设置自定义名称,方法是转到 Auto Scaling 组和标签选项卡,然后添加键为“名称”且值为“MyInstance”的标签。编号没有多大意义,因为您的实例将不断启动和终止。

    【讨论】:

      【解决方案4】:

      2020 年 9 月 21 日更新:

      目前看来创建增量数字是不可能的,但我找到了一种解决方法来实现我的目标,所以在这里发帖希望能给你一些想法。

      心态:
      我试图找到与实例一起动态创建的用于扩展的东西(数字),对我来说是OS::Neutron::Port,所以我在字符串后面附加IP地址的一部分以获得每个实例的独特名称。

      解决方案:
      1.创建端口OS::Neutron::Port.
      2.使用get_attr获取IP地址。
      3.使用str_split将其以点作为分隔符。
      4.使用str_replace将地址的一部分附加到字符串中。

      示例代码:

      lb_server.yaml

      resources:
        corey_port:
          type: OS::Neutron::Port
          properties:
            network: { get_param: network }
            fixed_ips:
              - subnet: { get_param: subnet }
      
        number:
          type: OS::Heat::Value
          properties:
            value:
              # 192.168.xxx.yyy => [192,168,xxx,yyy]
              str_split: ['.', { get_attr: [corey_port, fixed_ips, 0, ip_address] }]
      
        server:
          type: OS::Nova::Server
          properties:
            name:
              str_replace:
                template: Corey-%last%
                params:
                  #  0   1   2   3
                  #[192,168,xxx,yyy]
                  "last%": { get_attr: [number, value, 3] } 
            flavor: { get_param: flavor }
      ......
      

      结果应该是Corey-168、Corey-50、Corey-254等

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-23
        • 2021-10-26
        • 2017-11-15
        • 1970-01-01
        • 2019-10-09
        • 1970-01-01
        • 1970-01-01
        • 2020-11-28
        相关资源
        最近更新 更多