This tutorial will guide you through how to install MICADO and try it out with an example application. The tutorial builds a scalable architecture framework and performs the automatic scaling of the application based on Occopus, Docker Swarm and Prometheus.
MiCADO is a framework that enables you to create scalable cloud-based infrastructures in the most generic way, where user applications can be interchanged in the framework. We developed MiCADO in a way that is user-friendly and highly customizable.
NOTE: We advise you to use CloudSigma as a target cloud!
Generally, MICADO requires the following requirements. Please make sure you provided these for the virtual machines where we will deploy MICADO.
You will need an account for a cloud which provides you an “Ubuntu 16.04” OS image with cloud-init support.
- Accessing a cloud through an Occopus-compatible interface (e.g. EC2, OCCI, Nova, etc.)
- Target cloud contains a base 16.04 LTS Ubuntu OS image with cloud-init support (image id, instance type)
While most of the clouds doesn’t require you to configure which ports you want to open (like Cloudsigma), is it still important to make sure that the following ports are open for MICADO:
Internet access for the VM’s
MICADO needs to pull some files from github and dockerhub. Make sure the virtual machines have internet access and also reach each other.
Deployment of MICADO
Please download the installation file of MICADO from the following LINK
Insert user inputs
Now you have to modify the file that you downloaded. In the beginning of the file you will see a section called “USER DATA” as shown in this code:
write_files: USER DATA - Cloudsigma - path: /var/lib/micado/occopus/temp_user_data.yaml content: | user_data: auth_data: type: cloudsigma email: YOUR_EMAIL password: YOUR_PASSWORD resource: type: cloudsigma endpoint: YOUR_ENDPOINT libdrive_id: UBUNTU_16.04_IMAGE_ID description: cpu: 1000 mem: 1073741824 vnc_password: secret pubkeys: - KEY_UUID nics: - ip_v4_conf: conf: dhcp conf: dhcp scaling: min: 1 max: 10
This file specifies the user credentials for the target cloud, the resource IDs that will be used for the Virtual machines and a scaling section which specifies the scaling ranges. We provided you multiple configuration for the CloudSigma, Openstack and Amazon cloud.
The user can choose from these different configurations depending on the target cloud. Please uncomment the one you will use and fill out the parameters!
When you are ready, save the file and exit.
Check the syntax
Before deploying MICADO we advise you to check the syntax of your file. Since it is a yaml formatted file you should make sure of the syntax. To do so just copy paste your MICADO file to an online yaml checker
- Choose the favour type “small-2”
- An Ubuntu 16.04 LTS Image
- Attach your ssh key
- Paste the previously downloaded file to the cloud-init box and activate it.
- The click on “Create”
To start MICADO click on the “Wizzard” button on the compute tab if you use CloudSigma.
NOTE: If you wish to use another cloud, the steps should be almost the same.
Deployment of Application
This part will guide you have to start an example application. We will use a stress testing application. It will stress test the cluster and the application will be overloaded automatically. MICADO will automatically adjust the resources and scale up both the number of application services running as Docker services, and also the number virtual machines on the cloud.
Create the Application
SSH inside your MICADO virtual machine on the Cloud, and run the following command as root.
$ ssh cloudsigma@[ipaddress_of_micado] $ docker service create progrium/stress --cpu 2 --io 1 --vm 2 --vm-bytes 128M
This section is for testing purposes. If you experience some problems you can find out how to solve them in the advanced user guide!
Test if the system is operational
On your browser enter the following URL:
You should see the web page of Consul. If you see every running service with a green box, you are good to go but if some of them are red, there are some problem. Also on the “nodes” tab you should see at least one node (MICADO + minimum number of scaling ranges you specified).
Test if scaling working properly
The stress testing application should automatically overload and stress down the worker cluster in a few minutes.
If everything went well in a few minutes you could see VMs booting on your cloud
To check out the number of nodes after the scale up event in MICADO, check Prometheus on the following link:
If you have more than one, then it means that MICADO successfully scaled up the application nodes from one.
Now we also would like to test if it scales down if there is no load on the cluster. To do so, stop delete the application and this way delete the load on the cluster After a few minutes, the number of nodes in the cluster should be go back to its minimum value (specified in the user_data, scaling part).
Delete your infrastructure
When you are ready and wish to delete everything with the following command:
$ curl -X DELETE http://[micado_master_ip]:5000/infrastructures/micado_worker_infra
This will delete all the worker nodes. To delete MICADO Master node itself, you have to do it by hand, and delete it on your cloud.
If you would like to run your own application in MICADO or need some help and more details, please visit the advanced user guide!