Skip to content
This repository was archived by the owner on Mar 25, 2021. It is now read-only.
This repository was archived by the owner on Mar 25, 2021. It is now read-only.

RFE: Support for OS::Heat::AutoScalingGroup #130

@alonsocamaro

Description

@alonsocamaro

To describe this RFE first I’m going to describe how LBaaS adapts the pool members whenever scaling in or scaling out happens by means of using OS::Heat::AutoScalingGroup

We will use two templates for this: master.yaml which describes the whole deployment making use of a server.yaml resource type

  • master.yaml uses OS::Heat::AutoScalingGroup and increases or descreases the number of instances of server.yaml. This template also has the resources OS::Neutron::LBaaS::LoadBalancer, OS::Neutron::LBaaS::Listener, OS::Neutron::LBaaS::Pool and OS::Neutron::LBaaS::HealthMonitor but NOT OS::Neutron::LBaaS::PoolMember. The OS::Neutron::LBaaS::Pool is passed as a parameter to server.yaml.

  • server.yaml will create the VM instance of the server and will auto-add itself to the pool. More precisely by receiving the The OS::Neutron::LBaaS::Pool parameter the server.yaml can add itself to the pool by instantiating a OS::Neutron::LBaaS::PoolMember resource.

This RFE is to allow this auto-scaling model in Apps just described which is very intuitive, self-contained and is also used by LBaaS.

For implementing this we would need two new resource types:

  • one resource type to retrieve the reference to the pool from the iApp (i.e.: F5::Sys::iAppPool) and would have the following properties:
  type: F5::Sys::iAppPool
   properties:
     service: F5::Sys::iAppService
     pool_name: String

  • the second resource type would allow server.yaml (using the example below) to auto-scale itself and could be called F5::Sys::iAppPoolMember (following the LBaaS naming). This would have the following properties:
    type: F5::Sys::iAppPoolMember
    properties:
       pool: F5::Sys::iAppPool
       address: String
       protocol_port: Integer

as a minimum but all the properties of a pool member should be added, these are:

root@(bigip2)(cfg-sync Changes Pending)(Active)(/Common)(tmos)# list ltm pool test members { 1.1.1.1:0 } 
ltm pool test {
    members {
        1.1.1.1:any {
            address 1.1.1.1
            app-service none
            connection-limit 0
            description none
            dynamic-ratio 1
            ephemeral false
            inherit-profile enabled
            logging disabled
            monitor default
            priority-group 0
            rate-limit disabled
            ratio 1
            session user-enabled
            state unchecked
            fqdn {
                autopopulate disabled
                name none
            }
            metadata none
            profiles none
        }
    }
}

Some comments:

This model supports iApps that have several pools.

It should be taken into account that the iApp might have strict-updates enabled. I believe that these could be disabled temporarily: if an iApp service has strict-updates enabled a transaction would be created to disable strict-updates, change the members in the pool and finally re-enable strict-updates.

Worth to note is that an additional plus of following the same auto-scaling model as LBaaS is that LBaaS applications could migrated to iApps easily to allow richer functionalities.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions