Archivo

Archivo del autor

Autoescalado con Kubernetes

septiembre 22, 2017 Deja un comentario

Una de las funcionalidades más demandadas últimamente es el autoescalado de aplicaciones.

¿Por qué siempre se colapsa la web de venta de entradas y me tengo que quedar sin ver a Guns n’Roses? ¿Nunca podré comprar un billete barato en RENFE? En los momentos de alta interacción su web me deja en espera indefinidamente…

Para esta prueba vamos a utilizar un clúster de Kubernetes de 2 nodos y el típico ejemplo de aplicación:
servidor web (ohs) -> servidor de aplicaciones (weblogic 12c) -> BBDD (12c)

Recordad, tal y como mostramos en un post anterior sobre kubernetes, que el pod corresponde a cada instancia levantada de nuestra aplicación. Empezamos con 2 pods de ohs, 2 de weblogic y uno de BBDD.

Selection_040

Desplegamos con Ansible una sencilla aplicación en weblogic que solo hace una consulta a BBDD.

Se suele crear un autoescalado sobre la CPU cuando llega al 80%. En nuestro caso como es una prueba y debe saltar antes, lo vamos a hacer sobre el 20%. Kubernetes está en continua evolución y actualmente se están añadiendo otros criterios a parte de CPU.

Leer más…

Introdución a Kubernetes: Orquestando dockers

Resultado de imagen de kubernetesEn anteriores entradas vimos una introducción a docker, además de cómo crearlos y manternerlos.

Pero, ¿cómo los gestionamos y utilizamos? Hay diferentes herramientas para orquestar docker, como swarn, apache mesos o kubernetes. En esta entrada nos vamos a centrar en la herramienta que google donó al software libre en 2015: kubernetes. A Google siempre le ha gustado hacer trabajar a otros y que éstos le aporten contenidos: maps, youtube, etc…. Y no iba a ser diferente con kubernetes, una de las herramientas que tiene ahora mismo más desarrolladores y commits.

Kubernetes consta de diferentes componentes que nos ayudan a gestionar nuestros contenedores docker, como dns, red, proxy, monitorización, apis, scheduler, etc. La instalación es bastante complicada, pero vamos a ver dos formas que nos la facilitan: minikube y kubeadm.

Minikube levanta máquinas virtuales con todos los componentes para que funcione kubernetes. Podemos elegir virtualbox, kvm, hyperv… Es muy sencillo y nos servirá para probarlo. Es poco operativo porque levanta los contenedores dentro de las máquinas virtuales, con la limitación que pueden tener éstas de memoria o espacio.

Kubeadm nos levanta en local contenedores docker con los componentes de kubernetes y se conecta al demonio local de docker.

En avanttic tenemos un cluster con dos nodos de kubernetes instalados con kubeadm, los llamamos kubernetes1 y kubernetes 2, vamos a ver unos ejemplos.

Selection_027

Primero vamos a ver unos conceptos importantes:

  • Deployment: es el contenedor docker que vamos a desplegar que contiene la aplicación. Por ejemplo un servidor web.
  • Pod: un pod es cada unidad de Deployment que tenemos funcionando. Con kubernetes gestionamos cuantos pods queremos levantar de cada aplicación.
  • Services: son los servicios que exponemos que hacen referencia a los PODS

Vamos a desplegar una aplicación, por ejemplo, un servidor web o un weblogic que podemos descargar de nuestro repositorio docker de avanttic https://hub.docker.com/u/avanttic. Como estos últimos son privados por tener licencias, vamos a probar con un apache.

Leer más…

Docker: Imágenes y vida de los contenedores

Al iniciarse en Docker suelen surgir dudas sobre la volatilidad del contenedor, es decir, su tiempo de vida.

Dicha volatilidad depende en gran medida de la utilidad que le queramos asignar al contenedor. Por ejemplo, si lo utilizamos para hacer una prueba de una configuración tendremos que levantar el Docker desde cero hasta que demos con la configuración buena, o podamos grabarla y seguir trabajando sobre él. Además, una de las utilidades de Docker es que todo está en un script y no tenemos que ir recordando los pasos previos, por lo tanto, se recomienda ir pasando los cambios a script.

Para este ejemplo vamos a crear un servicio en el Service bus de Oracle. Para hacer la prueba nos descargaremos una imagen del Service Bus 11.1.1.7 como ya indicamos en la entrada anterior del blog.

docker pull avanttic/osb1117

Si visualizamos las imágenes que tenemos, aparecerá la recién descargada.

# docker images
REPOSITORY              TAG        IMAGE ID        CREATED           SIZE
avanttic/osb1117       latest   e558b012f4a5   3 minutes ago    10.1 GB

Aquí es donde tenemos que diferenciar entre imagen y contenedor. Una imagen es la base a partir de la cual se ejecutan los contenedores. Es decir, cada vez que hacemos un run sobre la imagen nos levanta un contenedor con esa configuración. Si modificamos el contenedor, lo paramos y arrancamos otra vez la imagen, los datos no estarán, porque arrancará un nuevo contenedor.

Por ejemplo, arrancamos nuestra imagen de Service Bus:

# docker run -ti avanttic/osb1117

Para mirar los contenedores que tenemos se usa el comando:

# docker ps -a
CONTAINER ID         IMAGE                    CREATED            STATUS
ac43456e2203      avanttic/osb1117    4 minutes ago      Up 4 minutes

Sobre ella, creamos un proyecto que moverá mensajes entre dos colas:

selection_717

Leer más…

Introducción a Docker: Creación y utilidades

febrero 9, 2017 1 comentario

docker

En este post queremos hacer una breve introducción al mundo docker (containers) del cual  seguiremos ampliando información en futuras entradas.

Docker es una palabra que actualmente está muy de moda. Tecnológicamente no es nada nuevo, ya existían los containers, chroot, debootstrap, plantillas para crear máquinas… Pero docker ha facilitado todo el proceso y lo ha orientado más a servidores que a servicios.

¿Qué utilidades tiene un docker?

Se pueden diferenciar dos líneas, una de desarrollo y otra de negocio.

En el área de desarrollo, un docker nos sirve para levantar un entorno específico en el que hacer pruebas con sistemas operativos, y también, realizar versiones concretas de la aplicación sin tener que realizar cambios en nuestro equipo; además, permite que otra persona desde otro lugar y sin tener que hacer ninguna configuración especial, levante exactamente el mismo docker.

En el área de negocio, sirve para levantar servicios en muy poco tiempo en función de la carga o necesidades. Cada vez hay más herramientas para orquestar y monitorizar este tipo de acciones. Por ejemplo, si tenemos un frontal web, podemos monitorizar la carga e insertar umbrales, de tal forma que si la carga llega a un 80% continúe levantando más dockers para balancearla; y una vez, disminuya del 30% espere el tiempo que deseemos, 5 minutos por ejemplo, y empiece a detener los containers. Esto es útil en plataformas como aws, digital ocean, etc… en las que se paga por uso.

¿Cómo se crea un docker?

Leer más…

Categorías:Tech - Infrastructure Etiquetas: , ,