Autoscaling Application

The auto-scaling app uses monitoring data to decide when to scale a service up/down.

It is treated as an application rather than yet another service because it offers only a GUI front-end; it is not modelled as a service that other services can build upon.

#How to

Before running the application, install the following packages

sudo apt-get update sudo apt-get install python-pip python-dev build-essential sudo pip install --upgrade pip sudo pip install --upgrade virtualenv sudo apt-get install msgpack-python sudo pip install Flask sudo pip install kafka-python sudo pip install oslo.utils sudo pip install Babel (if required)

Ensure that XOS REST IP address is accessible from where this application is installed and then run:

python xos_auto_scaling_app.py --xos-ip=<xos-ip> --kafka-ip=<monitoringservice-kafka-ip> --supported-services=<comma seperated service names>

This command will start the autoscaling application and start REST server on 9991 port.

NOTE: If no services are provided as --supported-services argument, then this application will not perform aut-scaling for any XOS services

To verify the autoscaling application:

  1. Login to cloudlab compute nodes
  2. On each compute node, open /etc/ceilometer/pipeline.yaml file
  3. Change the polling interval for "cpu_source" meters from 600 to poll interval period that u wish (eg. 60) as shown below.
    From:
    - name: cpu_source
      interval: 600
      meters:
          - "cpu"
      sinks:
          - cpu_sink

To:

    - name: cpu_source
      interval: 60
      meters:
          - "cpu"
      sinks:
          - cpu_sink
  1. sudo service ceilometer-agent-compute restart
  2. With this change, the autoscaling application should start receiving the CPU utilization samples every 60 seconds
  3. The REST API to retrieve the cpu utilization samples from autoscaling application: http://<app_ip>:9991/autoscaledata

GUI (early development stage)

To run this sample you need to have nodejs >= 4.0 installed on your local system. You can get it here

  • Clone the repository locally
  • Open xos-apps/auto-scale/gui/env/default and change it to:
module.exports = {
  host: 'http://<your.cord.installation.ip>:9991'
}
  • From xos-apps/auto-scale/gui run npm start