Categories
Hybrid Clouds In detail OpenSource

Desplegando PaaS en un “click"

enter

Siguiendo en la línea del posts sobre Infraestructura como Código (IaC) con la herramienta Terraform, os traemos un nuevo tutorial para desplegar la plataforma de PaaS Rancher de forma totalmente automatizada utilizando RKE.

RKE es el acrónimo de Rancher Kubernetes Engine y se trata de un instalador de Kubernetes escrito en Golang. Es fácil de usar y no requiere mucha preparación por parte del usuario para comenzar.

Como en el tutorial anterior utilizaremos el provider de Terraform para OpenNebula, en esta ocasión utilizaremos una versión mejorada del provider desarrollado por el equipo de Blackberry.

Para acabar recordaros que el próximo 12 y 13 de Noviembre se celebra una nueva edición de la OpenNebulaConf en esta ocasión el lugar elegido a sido Amsterdam y algunos de los miembros de Cloudadmins estaremos allí y participaremos con la ponencia: Hybrid Clouds: Dancing with “Automated” Virtual Machines

Tutorial

Install Terraform

To install Terraform, find the appropriate package for your system and download it

$ curl -O https://releases.hashicorp.com/terraform/0.11.10/terraform_0.11.10_linux_amd64.zip

After downloading Terraform, unzip the package

$ sudo mkdir /bin/terraform
$ sudo unzip terraform_0.11.10_linux_amd64.zip -d /bin/terraform

After installing Terraform, verify the installation worked by opening a new terminal session and checking that terraform is available.

$ export PATH=$PATH:/bin/terraform
$ terraform --version

Add Terraform providers for Opennebula and RKE

You need to install go first: https://golang.org/doc/install
Install Prerequisites

$ sudo apt install bzr

Use the wget command and the link from Go to download the tarball:

$ wget https://dl.google.com/go/go1.10.linux-amd64.tar.gz

The installation of Go consists of extracting the tarball into the /usr/local

$ sudo tar -C /usr/local -xvzf  go1.10.linux-amd64.tar.gz

We will call our workspace directory projects, but you can name it anything you would like. The -p flag for the mkdir command will create the appropriate directory tree

$ mkdir -p ~/projects/{bin,pkg,src}

To execute Go like any other command, we need to append its install location to the $PATH variable.

$ export PATH=$PATH:/usr/local/go/bin

Additionally, define the GOPATH and GOBIN Go environment variables:

$ export GOBIN="$HOME/projects/bin"
$ export GOPATH="$HOME/projects/src"

After go is installed and set up, just type:

$ go get github.com/blackberry/terraform-provider-opennebula
$ go install github.com/blackberry/terraform-provider-opennebula

Post-installation Step

Copy your terraform-provider-opennebula binary in a folder, like /usr/local/bin, and write this in ~/.terraformrc:

$ sudo cp ~/projects/bin/terraform-provider-opennebula /usr/local/bin/terraform-provider-opennebula

For RKE provider, download the binary and copy in the same folder:

$ wget https://github.com/yamamoto-febc/terraform-provider-rke/releases/download/0.5.0/terraform-provider-rke_0.5.0_linux-amd64.zip
$ sudo unzip terraform-provider-rke_0.5.0_linux-amd64.zip -d /usr/local/bin/terraform-provider-rke
providers {
  opennebula = "/usr/local/bin/terraform-provider-opennebula"
}
providers {
  rke = "/usr/local/bin/terraform-provider-rke"
}

Install Rancher

This repository provide a TF file to install Rancher in a high-availability configuration. The goal is easily install a Rancher on machines running CentOS 7.
Clone this repo:

$ git clone https://github.com/mangelft/terraform-rke-paas.git

Create infrastructure

First we have to initialize terraform simply with:

$ terraform init

This will read your configuration files and install the plugins for your provider.
We let terraform create a plan, which we can review:

$ terraform plan

The plan command lets you see what Terraform will do before actually doing it.
Now we execute:

$ terraform apply

terraform-apply
 
oneKubectl is the CLI tool for interacting with the Kubernetes cluster. Please make sure these tools are installed and available.
To make sure it works, run a simple get nodes command.

$ kubectl get nodes

kubectl
 
 
That’s it you should have a functional Rancher server. Point a browser at the hostname: https://rancher.my.org.
 
rancher-dashboard
 

Categories
General In detail OpenSource

Integración continua de infraestructura: Terraform & ONE

ScreenLa Infraestructura como Código (IaC) se está convirtiendo en uno de los elementos clave de los equipos Agile, ya que permite que la infraestructura ya no sea el cuello de botella dentro de nuestro pipeline CI/CD.
Una de las herramientas que se puede utilizar es terraform. Esta aplicación permite codificar la infraestructura según las necesidades del servicio y hacerlo de manera agnóstica al entorno cloud donde se ejecute. Por ello, la IaC nos puede ayudar a agilizar la creación y mantenimiento de infraestructuras de forma automatizada.
Dentro de la comunidad de la plataforma abierta de computación en la nube,  OpenNebula, Runtastic ha desarrollado un provider de OpenNebula para terraform, aprovechando la API OpenNebula XML/RPC. Este proveedor permite crear los principales recursos de OpenNebula, como una máquina virtual, un template, una red virtual o una imagen de disco.
En el siguiente tutorial, se detalla como instalar la herramienta i utilizarla con OpenNebula para desplegar un clúster de Kubernetes sobre Docker de forma totalmente automatizada con Terraform y Ansible.
Por último, recordaros que el próximo 24 de mayo, vuelve el “OpenNebula TechDay“,  a Barcelona que constará de un taller práctico donde se presentará esta plataforma, y se procederá a su instalación y se mostrará su funcionamiento y sus utilidades.
Ya podéis registraros al evento en el siguiente enlace! Y en breve tendréis también disponible la Agenda para la Jornada.

Tutorial

Deploying a Kubernetes Cluster to ONE with Ansible and Terraform

 Installing Terraform

To install Terraform, find the appropriate package for your system and download it

$ curl -O https://releases.hashicorp.com/terraform/0.11.4/terraform_0.11.4_linux_amd64.zip

After downloading Terraform, unzip the package

$ sudo mkdir /bin/terraform
$ sudo unzip terraform_0.11.4_linux_amd64.zip -d /bin/terraform

After installing Terraform, verify the installation worked by opening a new terminal session and checking that terraform is available.

$ export PATH=$PATH:/bin/terraform
$ terraform --version

Installing Terraform provider Opennebula

You need to install go first: https://golang.org/doc/install

Install Prerequisites
$ sudo apt install bzr

Use the wget command and the link from Go to download the tarball:

$ wget https://dl.google.com/go/go1.10.linux-amd64.tar.gz

The installation of Go consists of extracting the tarball into the /usr/local
 

$ sudo tar -C /usr/local -xvzf  go1.10.linux-amd64.tar.gz

We will call our workspace directory projects, but you can name it anything you would like. The `-p` flag for the `mkdir` command will create the appropriate directory tree

$ mkdir -p ~/projects/{bin,pkg,src}

To execute Go like any other command, we need to append its install location to the $PATH variable.

$ export PATH=$PATH:/usr/local/go/bin

Additionally, define the GOPATH and GOBIN Go environment variables:

$ export GOBIN="$HOME/projects/bin"
$ export GOPATH="$HOME/projects/src"

After go is installed and set up, just type:

$ go get github.com/runtastic/terraform-provider-opennebula
$ go install github.com/runtastic/terraform-provider-opennebula
Optional post-installation Step

Copy your terraform-provider-opennebula binary in a folder, like /usr/local/bin, and write this in ~/.terraformrc:

$ sudo cp ~/projects/bin/terraform-provider-opennebula /usr/local/bin/terraform-provider-opennebula

Example for /usr/local/bin:

providers {
  opennebula = "/usr/local/bin/terraform-provider-opennebula"
}
Install Ansible

We can add the Ansible PPA by typing the following command:

$ sudo apt-add-repository ppa:ansible/ansible

Next, we need to refresh our system’s package index so that it is aware of the packages available in the PPA. Afterwards, we can install the software:

$ sudo apt-get update
$ sudo apt-get install ansible

Deploy a Kubernetes cluster

Terraform code is written in a language called HCL in files with the extension “.tf”. It is a declarative language, so your goal is to describe the infrastructure you want, and Terraform will figure out how to create it. This repository provide an Ansible playbook to Build a Kubernetes cluster with kubeadm. The goal is easily install a Kubernetes cluster on machines running CentOS 7. 

$ git clone https://github.com/mangelft/terransible-kubernetes-cluster.git

First, initialize Terraform for your project. This will read your configuration files and install the plugins for your provider:

$ terraform init


In a terminal, go into the folder where you created main.tf, and run the terraform plan command:

The plan command lets you see what Terraform will do before actually doing it. To actually create the instance, run the terraform apply command:


You can access Dashboard using the kubectl command-line tool by running the following command:

$ kubectl proxy --address $MASTER_IP --accept-hosts='^*$'


The last step is to complete the cluster life cycle by removing your resources, do: terraform destroy

 Fuente: https://github.com/mangelft/terransible-kubernetes-cluster

Buen vuelo!

Categories
Community General Hybrid Clouds Interoperability OpenSource

New OpenNebula VCLOUD driver: Building Hybrid Clouds with VMware cloud providers

Based in its definition, the “Hybrid Cloud Computing” is a model which combines the use of multiple Cloud services across different deployment models, including combining the use of services of public cloud services private cloud outside or inside organization / institution.
Most companies and organizations have not been born in the “cloud”, a situation that often causes the cloud resources are to be connected to traditional systems or applications with some criticality and are usually located in their own premises. This type of architecture is the most common where the keys to their success pass take into account aspects such as integration capabilities, hyper-converged management, etc.
Cloud bursting is always welcome!
Today we are one_vcloudsharing exciting news about the expansion of the number of public clouds supported by OpenNebula to build hybrid cloud deployments. As a result of the collaboration between OpenNebula and CSUC, a new addon to support VCLOUD providers has been added to OpenNebula catalogue.
“With this addon, real hybrid architectures can use OpenNebula’s rich set of infrastructure management tools to manage cloud deployments across VCLOUD private, public and hosted cloud platforms.”
 
The driver is developed for Opennebula 5.x and VCLOUD 5.5 version and is released today to be available for testing. The integration has been carried out using the ruby_vcloud_sdk, which interacts with the vCloud Director API, enabling a complete control of the lifecycle of Virtual Machines in a transparent way within an OpenNebula cloud. Thanks to these new addon, private resources can be easily supplemented with resources from external providers to meet fluctuating demands.
 
https://github.com/OpenNebula/addon-vcloud-driver

Description

This addon gives Opennebula the posibility to manage resources in VMware vCloud infraestructures. It includes virtualization and monitoring drivers.
This driver is based on vCenter Driver and uses a modified version of ruby_vcloud_sdk.
Alt text

Features

This addon has the following capabilities:

  • Deploy, stop, shutdown, reboot, save, suspend, resume and delete VM’s in the Virtual Data Centers hosted in vCloud.
  • Create, delete and revert snapshots of VM’s.
  • Change RAM and CPU values of VM.
  • It’s able to hot-attach and detach NICs to VM’s.
  • Automatized customization of the VMs instanciated.
  • Obtain monitoring information from the VDC, Datastore and VM’s.
  • In this development version we manage vApps with one VMs inside (A VM in OpenNebula equals a vApp with one VM in vCloud).
  • Each Virtual Data Center (VDC) in vCloud is managed as a Host in OpenNebula.
  • Import networks, hosts, templates and datastores hosted in vCloud using onevcloud script.

https://github.com/OpenNebula/addon-vcloud-driver
Need more information? You are welcome to use the OpenNebula community instruments to ask around (for instance, the forums tool is a good place to pose your questions) or reserve a seat to see details inside the next Open Cloud Free session in Barcelona (24/10 14:00h) https://www.eventbrite.com/e/open-cloud-free-session-inside-opennebulaconf-tickets-27753771277
As always, we value your feedback and contributions to this new feature!
Barcelona UserGroup Team –  www.cloudadmins.org

Categories
In detail

Opennebula Cloud Conference otra vez en BCN (Oct 25-27 2016)

Hola,
Algunas novedades para ir empezando el 2016 (bueno ya empezado hace días…)

Después del éxito de la última edición, parece que repetimos y con un 40% de descuento si alguién se anima estos primeros meses a reservar su asiento :
Imatge inserida 1
http://opennebula.org/opennebulaconf-2016-oct-25-27-in-barcelona-again/
http://opennebula.org/get-the-best-price-on-opennebulaconf-2016/

También añadir que se disponen los resultados de la encuesta del 2015 para ONE, con cosas interesantes como el crecimiento notable en entornos productivos en la empresa/industria en escenarios híbridos y incluyendo hypervisores propietarios fuera del KVM como cabeza, Ceph pegando fuerte, etc.. A modo de resumen:

  • OpenNebula shows its increasing maturity, with 73% of deployments in production compared to 62% reported in our previous survey.
  • Growth in North America has accelerated, now representing 30% of responses, up from 20%.
  • KVM provides the majority of OpenNebula support, growing from 48% to 79%.
  • There is a high rate of adoption in VMware environments from 28% to 37%.
  • Ubuntu grows from 36% to 40% and Debian falls from 33% to 22% as operating systems to build the cloud.
  • The use of the EC2 cloud API decreases from 25% to 10%.
  • The use of Ceph has grown considerably from 17% to 40%.
  • The use of LVM as storage solution decreases from 22% to 12%.

Y +Info aquí

2015 OpenNebula Cloud Architecture Survey Results

Saludos y buena ya superada entrada de año!
ONEBCN User Group
Categories
General

Pase de tres días para la próxima Opennebula Cloud Conference 2015 (BARCELONA)

Hola a todos,
Como anunciamos en la última sudoers (http://sudoers-barcelona.wikia.com/wiki/Sudoers_Barcelona_Wiki) del 20 al 22 de octubre se celebrará la tercera conferencia de Opennebula, esta vez en Barcelona.  http://2015.opennebulaconf.com/  sigue leyendo si quieres conseguir una entrada!
ONE 2015 Conference

THE COMMUNITY EVENT OF ADMINS AND DEVOPS / discussing real needs and use cases

En el grupo de usuarios de Barcelona (http://www.cloudadmins.org/opennebula-barcelona-usergroup/) disponemos de un pase gratuito de tres días que sortearemos entre los miembros del grupo de Google Barcelona Opennebula user group. ( Si te interesa hazte miembro ya!!!!)
Las bases del sorteo son:
IMPORTANTE: Fecha límite para apuntarse al grupo y entrar en el sorteo: 8 de Junio a las 12:01pm (Actualmente somos unos 50 miembros)
El sorteo se realizará tomando como referencia el sorteo de la ONCE del mismo día y en base a la lista de miembros ordenada por la fecha de unión al grupo. En caso de que alguien no estuviera interesado en el premio se repetiría en el siguiente sorteo diario de la misma ONCE.

Ejemplo:  Número premiado – 69.696 mod 50 = 46  En este caso seria para Daniel Molina.. casualidades de la vida ya tiene entrada porqué es developer del  proyecto ONE o sea que repetiríamos el sorteo el siguiente día.
SUERTE cloudadmins!!!
ONEBCN Team

Categories
Community General OpenSource

OpenNebula User Group en Barcelona


 
Como sabéis, la comunidad de OpenNebula es un pilar muy importante para el proyecto. Comunidad que mediante un sistema de peticiones, listas de distribución y ahora foros, pueden expresar sus dudas, peticiones, o aportar ideas que para los desarrolladores es una información muy útil, además, puede contribuir ayudando a otros usuarios o desarrollando nuevas funcionalidades.
Para eso OpenNebula ha pensado en los User Groups. Los User Groups de Opennebula son comunidades a nivel local, donde los usuarios pueden discutir o compartir información y experiencias de una forma más directa en su misma ciudad. De esta forma también se consigue hacer una difusión más cercana, y encontrar gente que quiera colaborar con el proyecto.
También añadir que este 2015 la conferencia anual de OpenNebula viaja de Berlín a Barcelona, ciudad que será el punto de encuentro dónde desarrolladores, usuarios, administradores, investigadores,… podrán compartir experiencias, casos de estudio y lo que “proceda”.
ONE 2015 Conference
Por todo lo anterior algunos partícipes de este blog nos hemos puesto en contacto con OpenNebula y con otros usuarios del área de Barcelona y hemos decidido crear el OpenNebula User Group de Barcelona. Este grupo pretende ser una comunidad a pequeña escala donde podamos discutir y encontrar objetivos comunes en los que colaborar con el proyecto. Hemos creado un grupo de Google donde iremos informando de los pasos que se van dando y empezaremos a fijar objetivos.
Además, también participaremos en la charla de sudoers, un grupo que se reúne periódicamente en el Campus Nord de la UPC, dónde hablaremos sobre la OpenNebula y expondremos los objetivos del User Group de Barcelona.
Es un grupo totalmente abierto así que estáis invitados!. Primeros integrantes del Grupo:








Xavi Peralta
Colaborador www.cloudadmins.org
 
Algunos enlaces de interés:
OpenNebulaconf 2015 (Barcelona) http://2015.opennebulaconf.com/
OneBCN Google Group – https://groups.google.com/forum/embed/?place=forum%2Fopennebula-barcelona-usergroup
Sudoers Barcelona – http://sudoers-barcelona.wikia.com/wiki/Sudoers_Barcelona_Wiki

Categories
OpenSource

OpenvSwitch y OpenNebula – 2a entrega

openvswitch
opennebula_logo
Siguiendo con la serie de posts sobre OpenvSwitch y OpenNebula en los que vamos viendo la integración de OpenNebula con Open vSwitch a través del driver, vamos a ver en esta entrega cómo poder aplicar firewalling con OpenNebula al driver de OpenvSwitch.
Para empezar, vamos a ver como se configura el firewalling en general con OpenNebula, en este enlace podemos ver mas detalles. OpenNebula tiene cinco campos especiales a la hora de crear una màquina/template que són:

  • WHITE_PORTS_TCP: Se filtran todos los puertos tcp menos los especificados por el parámetro, para especificarlo se hace con “:” para rangos de puertos y con “,” para puertos especificos. Así pues si queremos filtrar todos los puertos menos el 22, el 80 i del 2000 al 3000  se pasaria la variable de la siguiente forma: WHITE_PORTS_TCP = 22,80,2000:3000  
  • BLACK_PORTS_TCP: Se filtran sólo los puertos tcp especificados, para especificar los puertos a filtrar se hace de la misma forma que con el WHITE_PORTS_TCP, però en este caso el funcionamiento es el inverso, és decir se filtran todos los puertos especificados y el resto se dejan abiertos. En caso de especificar tanto el WHITE_PORTS_TCP cómo el BLACK_PORTS_TCP, entonces se aplican sólo los WHITE_PORTS_TCP. Si quisieramos filtrar todos los puertos menos el 22, 80 i del 2000 al 3000, en este caso se especificaria de la siguiente forma:  BLACK_PORTS_UDP = 1:21,23:79,81:1999,3001:65535
  • WHITE_PORTS_UDP: En este caso el funcionamiento és idéntico al TCP pero con tráfico UDP.
  • BLACK_PORTS_UDP: También este caso es idéntico al TCP pero con UDP.
  • ICMP: En el caso de ICMP podemos optar por filtrar todo el tráfico o no, si queremos filtrarlo, lo especificaremos de la siguiente forma: ICMP = drop

Para la implementación de esta funcionalidad con Open vSwitch, en el driver actual de OpenNebula no se pueden especificar rangos de puertos, se tienen que hacer uno a uno. Se ha provado i si se crean máquinas virtuales con muchos puertos filtrados, tarda muchas horas en crear la máquina virtual y añade mucha carga adicional al nodo físico. Para solventarlo tendremos que actualizar la versión de open vSwitch a la 1.6 o superior, ya que a partir de esta se pueden especificar los puertos con mascaras. Con las mascaras podemos especificar un puerto y la mascara asociada, la cual cosa nos permitirá filtrar todo el rango de puertos a los que se llegue con esta. Si por ejemplo quisieramos filtrar del puerto 32768 al 65535, podriamos hacerlo especificanod el puerto y la mascara de la siguiente forma (en hexadecimal): 0x8000/0x8000. Aqui podemos ver como el numero 32768 equivale a 0x8000 (el primero) y el rango de puertos que estaremos filtrando irá del 0x8000 (1000 0000 0000 0000) al 0xFFFF (1111 1111 1111 1111)  és decir el 65535 después de aplicarle la mascara.
Vemos pero que si queremos aplicar un filtro que vaya del puerto 32769 al 65535 la cosa no es tan evidente, ya que tenemos que hacer un filtro que para el 32769/0xFFFF, otro para el 32770/0xFFFE, otro para el 32772/0xFFFC y asi sucesivamente.
Así pues el algoritmo para el filtrado con rangos de puertos será:
Para todos los puertos p:

  1. Calculamos la máscara máxima para no filtrar algun puerto ya filtrado o que no se tenga que filtrar
  2. Calculamos la máscara máxima para los puertos que se tendrán que filtrar a continuación, hasta encontrar alguno que no sea consecutivo
  3. Aplicamos la mascara más pequeña entre 1 y 2.
  4. Aplicamos el filtro con la máscara escogida
  5. p= maximo puerto filtrado en 4 (aplicando mascara) + 1

En el ejemplo de que quisieramos filtrar todos los puertos menos el 22,80 y del 2000 al 3000, las reglas correspondientes quedarian de la siguiente forma:

0x1/0xffff, 0x2/0xfffe, 0x4/0xfffc, 0x8/0xfff8, 0x10/0xfffc, 0x14/0xfffe,
0x17/0xffff, 0x18/0xfff8, 0x20/0xffe0, 0x40/0xfff0, 0x51/0xffff, 0x52/0xfffe,
0x54/0xfffc, 0x58/0xfff8, 0x60/0xffe0, 0x80/0xff80, 0x100/0xff00, 0x200/0xfe00,
 0x400/0xfe00, 0x600/0xff00, 0x700/0xff80, 0x780/0xffc0, 0x7c0/0xfff0,
0x7d1/0xffff, 0x7d2/0xfffe, 0x7d4/0xfffc, 0x7d8/0xfff8, 0x7e0/0xffe0,
0x800/0xfe00, 0xa00/0xff00, 0xb00/0xff80, 0xb80/0xffe0, 0xba0/0xfff0,
0xbb0/0xfff8, 0xbb9/0xffff, 0xbba/0xfffe, 0xbbc/0xfffc, 0xbc0/0xffc0,
0xc00/0xfc00, 0x1000/0xf000, 0x2000/0xe000, 0x4000/0xc000, 0x8000/0x8000

Así pues, vemos que con este ejemplo pasariamos de 64532 reglas para aplicar a 43 gracias a las mascaras.

Actualización del driver de OpenNebula

Una vez visto que es lo que tenemos que hacer para que nos funcionen los drivers para OpenvSwitch con mascaras vamos a ver las modificaciones que se tienen que hacer en el driver de OpenNebula para Open vSwitch. El fichero en cuestión se encuentra en /var/lib/one/remotes/vnm/ovswitch/OpenvSwitch.rb. Aqui podeis encontrar el fichero con las modificaciones que se han explicado en el post.
Para modificar el driver, lo único que tenemos que hacer és sobreescribir el fichero y ejecutar:

onehost sync

Una vez ejecutado el comando ya podremos crear máquinas virtuales pasandoles los parametros de filtraje como con el driver por defecto.
Oriol Marti
www.cloudadmins.org

Categories
DCIM General OpenSource

Exprimiendo la infraestructura TIC con OpenNebula

 
Durante los últimos tiempos en el campo de la computación se ha estado hablando mucho del fenómeno del ‘Cloud Computing’. Entre las posibles consecuencias de la implantación de este nuevo modelo, organizaciones con un presupuesto ajustado pueden acceder a escenarios con servicios en alta disponibilidad distribuidos en zonas geográficas dispersas, así como pagar por uso o como mínimo intentarlo.
En el caso de las redes académicas y de investigación como RedIRIS, dónde la mayoría de las instituciones conectadas (Universidades, Centros de Investigación, …) se caracterizan por disponer de grandes y a la vez complejos sistemas de información, la adopción de esta nueva tendencia no está ni mucho menos extendida. Observando este escenario, no se ha de caer en la tentación de pensar que esto no va con nosotros y que esta “moda” será pasajera, sino que es necesario verlo como una oportunidad para hacer evolucionar nuestras arquitecturas de sistemas alineándolas a esta nueva tendencia.
En el caso del CESCA, como proveedor de servicios TIC desde la capa de infraestructura hasta la de aplicación, ha apostado por un escenario de alta disponibilidad basado en OpenNebula, utilizando sus capacidades más avanzadas como las zonas de servicios de IaaS (oZones), las cuáles facilitan capacidades de distribución geográfica, pudiendo incluso llegar a tener diferentes zonas en diferentes centros de datos. Delante de esta situación es importante remarcar que este cambio ha hecho que tanto administradores de sistemas cómo desarrolladores tengan en cuenta este nuevo diseño.

ozones-arch-v3.4

El nuevo papel de los Centros de Respaldo

En comparación con el modelo clásico, dónde el entorno de contingencia es dedicado y en la mayoría de casos se encuentra infrautilizado por naturaleza, nuestra propuesta es la de disponer de zonas en un modelo activo/activo que tanto pueden contener servicios productivos como de contingencia.
El nuevo papel de los centros de respaldo pasa por ofrecer varias instancias del servicio de infraestructura en diferentes centros de datos, así como las herramientas necesarias para la gestión de la infraestructura enfocándose en las necesidades de los servicios/aplicaciones.
En el caso de OpenNebula tenemos soporte para múltiples zonas pudiendo gestionar varias instancias des de un mismo punto. En el CESCA, actualmente disponemos de dos zonas, las cuales son accesibles a través de una sola interfaz de gestión en alta disponibilidad o incluso de manera independiente.
 

Los servicios como principales beneficiarios

En gran medida los cambios citados anteriormente, han provocado que el planeamiento de diseño de las aplicaciones haya cambiado en base a diferentes factores como la situación geográfica, capacidades de auto-escalado, etc. junto con la aparición de nuevas herramientas que ayudan a desplegar y definir servicios de manera “paquetizada”.
Dentro de ese ecosistema de herramientas de gestión de configuración encontramos Puppet, Cheff, Cfengine, etc. las cuales nos permiten la gestión del ciclo de vida de nuestros servicios/aplicaciones que han de ser complementadas con otras que permitan al administrador definir también las necesidades a nivel de infraestructura. En este caso las herramientas con las que se pueden contar son SaltStack, Viapps, etc.
Acceso a las diapositivas http://www.slideshare.net/jguijarroo/jt2013-jguijarro-exprimiendoinfrticconone
Cloudadmin

Categories
General In detail

OpenvSwitch y OpenNebula – 1a entrega



Cómo ya vimos es posts anteriores, Open vSwitch és un software de virtualización de redes pensado sobretodo para la virtualización en plataformas Linux como Xen o KVM. Después de estar trasteando un buen tiempo con OpenNebula pensamos que seria una muy buena idea añadirle el soporte que viene integrado con Open vSwitch. Al añadir el driver para este, pero, nos encontramos con que el driver no está acabado del todo y que nos quedábamos sin algunas de las funcionalidades de red de OpenNebula.
Así pues, vamos a empezar una serie de posts con los que iremos viendo algunas de las deficiencias que se han encontrado a los drivers de OpenNebula para Open vSwitch y las soluciones que le hemos aplicado al driver en cuestión. En este primer post vamos a ver un bug que se ha encontrado en el driver y la solución que se ha aplicado. Tener en cuenta que en la versión 4.0 de OpenNebula este bug ya a sido solucionado. En posts futuros veremos como se ha añadido soporte para filtraje de rangos de puertos y cómo hacer que el tráfico de las máquinas virtuales sea descartado en caso de que la IP sea falseada en las máquinas virtuales.
OpenNebula asigna la MAC a las interfícies de las máquinas virtuales según la IP que asignamos, entonces si hacemos dos redes con coincidencia de IPs en diferentes VLANs es probable que las MACs de dos máquinas virtuales coincidan están en la misma máquina física.
Para entender bien el bug, en primer lugar se han hecho pruebas de si este caso afecta al comportamiento de la red. Se han creado dos redes taggeadas diferentes con el mismo direccionamiento, así pues cuando creemos interfícies de cada una de las redes sobre el bridge estas estarán taggeadas con una etiqueta diferente.
Se han creado 4 máquinas virtuales:
1 y 2 – con VLAN con etiqueta 1. La primera tiene la IP 192.168.2.1 y MAC 02:00:c0:a8:02:01 y la segunda tiene la IP 192.168.2.2 y MAC 02:00:c0:a8:02:02
3 y 4 – con VLAN con etiqueta 2. La tercera tiene la IP 192.168.2.1 y MAC 02:00:c0:a8:02:01 y la tercera tiene la IP 192.168.2.2 y MAC 02:00: c0: a8: 02:02
Vemos pues que las máquinas 1 y 3 y las máquinas 2 y 4 coinciden en la MAC, para la prueba hemos puesto la máquina 1 y 3 en el mismo nodo físico y la 2 y la 4 en otro las dos.
Una vez hecho esto, desde la máquina 1 hacemos un ping a la IP 192.168.2.2 mientras en las máquinas 2 y 4 hacemos un tcpdump, la salida del tcpdump en la máquina 2 es:

20:27:36.768326 ARP, Request who-has 192.168.2.2 tell 192.168.2.1, length 46
20:27:36.768336 ARP, Reply 192.168.2.2 is-at 2:00: c0: a8: 02:02, length 28
20:27:36.769355 IP 192.168.2.1> 192.168.2.2: ICMP echo request, y 46852, seq 1, length 64
20:27:36.769390 IP 192.168.2.2> 192.168.2.1: ICMP echo reply, id 46852, seq 1, length 64

En la máquina 4 el tcpdump no nos da ninguna salida.
Así pues vemos como a pesar de tener interfaces con la misma MAC no afecta al correcto funcionamiento del Open vSwitch, ya que están taggeadas diferente y el Open vSwitch aunque detecta MACs duplicadas sabe redirigir el tráfico según la VLAN a la que pertenece cada paquete de red .
Si miramos el driver de Open vSwitch en el fichero /var/lib/one/remotes/vnm/ovswitch/OpenvSwitch.rb, veremos que las reglas de firewalling se aplican para la MAC, suponiendo que queremos filtrar el puerto 1 para la máquina con MAC <mac>, el comando que se ejecuta en las máquinas físicas es como sigue:

sudo ovs-ofctl add-flow br32 tcp,dl_dst=<mac>,tp_dst=0x1,actions=drop

Vemos como cuando se aplica el filtraje, sólo se tiene en cuenta la MAC, así si aplicamos filtros sobre una máquina virtual y tenemos otra con la misma MAC, se aplicará sobre las dos máquinas al mismo tiempo, por lo que los filtros aplicados por un usuario podrían afectar a los demás.
Hemos hecho la misma prueba que en el apartado anterior y efectivamente hemos visto que al aplicar un firewall sobre una MV si tenemos otra MV en la misma red que tenga la misma MAC (aunque esté en otra VLAN) aplica las reglas para a las dos máquinas.
Para solventar este problema se han modificado las reglas añadiendo el tag dl_vlan al comando ovs-ofctl. Se ha probado y efectivamente, como las redes por fuerza tienen diferente tag de VLAN, funciona correctamente.
Hay que tener en cuenta que desde el Sunstone es posible crear redes sin que estén taggeadas. En este caso si que podríamos tener un problema, ya que si las redes no tienen ninguna etiqueta, no están en ninguna VLAN, entonces si que tenemos el problema explicado anteriormente.
El comando anterior, una vez arreglado este bug quedaría de la siguiente forma, suponiendo que la interfaz de la máquina virtual está en la vlan 3001:

sudo ovs-ofctl add-flow br32 tcp,dl_vlan=3001,dl_dst=<mac>,tp_dst=0x1,actions=drop

En este y este enlace podemos ver el seguimiento del bug, en el segundo enlace podemos también descargarnos el driver para OpenNebula modificado.
Eso es todo por este post, en los siguientes, tal y como ya hemos avanzado al principio veremos cómo permitir el filtraje de puertos por rangos mediante Open vSwitch y añadir la funcionalidad en los mismos drivers para no permitir que las máquinas virtuales puedan hacer IP-Spoofing.
Un saludo clouderos! 😉

Categories
DCIM

"Infraestructuras a la Naranja" en la nube

Virtual Cloud MegaCluster (“Thecnomix”)

Ingredientes : 3809 máquinas virtuales con 8 núcleos y 7 gigas de memoria cada una,  conectividad 10GbE y  molde GNU/Linux. 
 
Preparación: Para una correcta preparación es imprescindible disponer de una “Thecnomix” equipada con el módulo de gestión de recursos en la(s) nube(s) y una cuenta de pago en línea operativa.
 
1) Programa #3 “Thecnomix” – 25 min – Aprovisionar  los recursos virtuales al gusto. [molde GNU/Linux]
 
2) Programa #5 “Thecnomix” – 1 min – Configuración Automática Controlador del Cluster.
 
3)…
 
Precio aproximado: $1279 por hora de uso     Dificultad: Media/Alta

Como si de una receta se tratara y dejando atrás películas de ciencia ficción, a día de hoy, construir un cluster virtual “a la carta” [1] en modo de alquiler de más de 30.000 núcleos, 26.7 Terabytes de memoria y 2 Petabytes de disco ya es una realidad. Incluso me atrevería a decir que hablar de estos números empieza a ser algo habitual en el ámbito de proveedores comerciales de infraestructura. Ya hace algún tiempo que empresas del calibre de Amazon basaron una parte de su modelo de negocio en rentabilizar sus inversiones en infraestructura mediante el alquiler de una parte;  modelo bien conocido como es el ‘pago por uso’.
Este modelo, en el polo opuesto al ambientalmente NO sostenible “usar [poco] y tirar”,  tiene como base la compartición de los recursos en estado puro y es una de las esencias del Cloud Computing. Esta idea se conoce como “multitenancy” y proviene del campo de la ingeniería del software, característica de un tipo específico de arquitecturas de software las cuáles ya hace algún tiempo ofrecían la capacidad de virtualizar la aplicación en diferentes instancias según quién la utiliza.
En el campo de la infraestructura este concepto se basa en una tecnología en concreto: la virtualización de sistemas, uno de los pilares del Cloud Computing que permite alejarnos del hardware y construir nuevos escenarios dónde la deslocalización geográfica,  la automatización, el crecimiento flexible, la disponibilidad, la reducción de costes en los servicios… ya vienen por naturaleza de serie.
En esta misma linea, si comparamos la modalidad de “pago por uso”  con coger un taxi o un asiento en un vuelo ya que estamos hablando de nubes,… a fecha de hoy  podemos afirmar que nos encontramos ante la posibilidad de fletar cientos de Airbus A380 o de hasta miles de Cazas F16 dónde las capacidades de nuestra “Thecnomix” y una utilización eficiente  de esta abren un gran abanico de posibilidades para afrontar nuevos servicios e incluso experimentos.

[1] http://arstechnica.com/business/news/2011/09/30000-core-cluster-built-on-amazon-ec2-cloud.ars