Category: Docker


EN este Post veremos como crear un grupo de imagenes auto escalables en Google Cloud segun el consumo de CPU, esto permite crecer automaticamente horizontalmente en instancias cuando tenemos picos de consumo y luego automaticamente volver a una sola sola VM. Esto nos permite ahorran en costos y lograr que el sitio seguira online  y ademas tener tolerancia a fallos

1º paso
Crear VM Instance

 

En automation – Startup Script colocar el siguiente script que instalara Apache y publicara un hello World

#! /bin/bash
apt-get update
apt-get install -y apache2
cat <<EOF > /var/www/html/index.html
<html><body><h1>Morettimaxi.com.ar – Hello World</h1>
<p>This page was created from a simple startup script!</p>
</body></html>
EOF

01-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Probar que el sitio funciona con la ip Publica que nos da la VM creada:

03-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

 


Borrar la VM

Editar la configuracion de la VM, destildando la opcion “Delete boot disk when instance is deleted”

04-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

Eliminar la VM

 

 

05-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Creamos una imagen desde el disco de la instancia creada anteriormente

 

06-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

Seleccionamos Sorce Disk el disco de la isntancia anterior:

07-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Luego seleccionamos crear “instance template”. Seleccionando la imagen creada anteriormente y tildando HTTP traffic.

08-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Creamos un grupo de instancias:

Seleccionado como imagen template la q creamos en el paso anterior

09-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

Elegimos el tipo de autoscale, en nuestro ejemplo seleccionamos  CPu, luego se selecciona el porcentaje de CPU que queremos como limite para crear una nueva instancia, el minimo de instancias y el maximo. Y el periodo que se tomarà para bajar una instancia en el caso que el cpu este por debajo del limite.

10-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Creamos un Load Balance para que distibuya el trafico entre el grupo de instancias:

11-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

Creamos un Load balance HTTP:

12-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

 


Para acceder al sitio podemos acceder desde la ip publica del load balancing:

03-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Verificamos que tenemos soloa una VM creada, ya que el CPU esta por debajo del limite

 

14-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


hacemos pruebas de Stress al servidor, en mi caso para esta prueba simple use el AB de apache (https://httpd.apache.org/docs/2.4/programs/ab.html) con el objetivo de forzar a la VM y que cree una nueva VM.

16-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Como veremos el sistema auto creo una nueva VM:

15-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

 

 

Con docker 12 hay problemas con pushear repos a AWS y Kubernetes de google engine:

Error;:

denied: Unable to access the repository; please check that you have permission to access it.

Solucion Eliminar la linea

"credsStore": "whatever"

Que esta en el archivo:
 ~/.docker/config.json

Docker es una tecnologia que trabaja con contenedores. En este ejemplo veremos como en un solo servidor poder tener varios contenedores escuchando el mismo puerto ,80 por ejemplo,  y segun la URL nos rediriga al contenedor deseado.

Vamos a utilizar nginx-proxy : https://github.com/jwilder/nginx-proxy

 

  1. COmo primer paso vamos a levantar a levantar el nginx-proxy

2016-09-07-12_37_00-select-administrator_-windows-powershell

Con docker ps validamos que este levantado

2- Ahora levantamos el contenedor docker que deseemos en el puerto 80. Pero con un host por ejemplo:

docker run -d  -e  VIRTUAL_HOST=test.morettimaxi.com.ar  –name morettimaxi -v /path/to/html_files:/usr/local/apache2/htdocs/ httpd:2.4

 

y levantamos otro contenedor por ejemplo un Sonar:

 

docker run -d -p 80 -e VIRTUAL_HOST=foo.bar.com -e ALLOW_OVERRIDE=true tutum/apache-php

 

2016-09-07-14_19_55-select-administrator_-windows-powershell

Ahora los 2 sitios estaran publicados en el puerto 80 y en ngnix hara el redirrecioamiento:

 

2016-09-07-14_19_26-program-manager

 

2016-09-07-14_19_41-program-manager