Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. https://www.booking.com/hotel/es/apartamento-en-familia.ca.html Número registro HUTT-005768

lunes, 30 de junio de 2014

Instalando Juju para orquestrar nuestra nube (MAAS, Amazon Web Services, EC2, etc..).

Juju (antes Ensemble) es una herramienta de gestión de orquestación de servicios desarrollada por Canonical Ltd.. Es un proyecto de código abierto presentado en Launchpad1 y liberado bajo la licencia pública general de Affero (AGPL).2
Juju se concentra en la noción del servicio, abstrayendo la noción de la máquina o el servidor, y define las relaciones entre aquellos servicios que son actualizados automáticamente cuando dos servicios relacionados observan una modificación notable.3 Esto permite subir o bajar escaladamente los servicios fácilmente a través de la llamada de un simple comando. Por ejemplo, un servicio web denominado Charm tiene una relación4 establecida con un equilibrador de carga puede subirse horizontalmente con una simple orden de "añadir unidad"5 sin tener que preocuparse de volver a configurar el equilibrador de carga para declarar las nuevas instancias: las relaciones basadas en eventos del Charm se encargará de eso.
Los Charms de Juju pueden ser escritos en cualquier lenguaje ejecutable.6
Así pues, vamos a empezar a instalar esta maravilla:

Lo primero es crearnos unas claves para conexiones SSH de juju con los nodos. Podéis encontrar más información en http://eithel-inside.blogspot.com.es/2010/01/autenticacion-ssh-mediante-certificado.html :

usuario@juju$ ssh-keygen
Una vez instaladas las claves miremos de instalar los paquetes (siguiendo las instrucciones de https://juju.ubuntu.com/install/ ya que pese a que en los repositorios de la distro 14.04 LTS ya esta incorporado, es aconsejable añadir los repositorios del proyecto que estan más actualizados):
sudo add-apt-repository ppa:juju/stable
sudo apt-get update && sudo apt-get install juju-core


Con esto ya tenemos instalado juju. Ahora quedará configurar un entorno de trabajo. Lo haremos mediante el archivo ~/.juju/environments.yaml . Lo que haremos es generar el archivo y luego modificarlo con nuestras opciones particulares:

usuario@juju:~$ juju generate-config
A boilerplate environment configuration file has been written to /home/csi/.juju/environments.yaml.
Edit the file to configure your juju environment and run bootstrap.



En este ejemplo voy a configurar Juju para orquestrar una nube hecha con MAAS para dar continuidad a artículos anteriores (http://eithel-inside.blogspot.com.es/2014/06/instalando-un-cluster-maas-en-ubuntu.html), no obstante podría hacerse con hpcloud, amazon, joyent, azure, etc:

Modificamos la linea que pone default: amazon por default: maas . (no es obligatorio pero ya que lo encaramos a orquestrar MAAS, vamos a facilitarnos las cosas).

Luego modificamos las lineas :
maas-server: 'http://192.168.1.1/MAAS/'
maas-oauth: ''

Aquí pondremos la IP de nuestro nodo maestro MAAS y la clave que podemos obtener siguiendo estos pasos:
Vamos a las preferencias de la página MAAS http://${my-maas-server}:80/MAAS/ y le damos a Preferences desde el menú desplegable que aparecerá cuando clicamos a nuestro nombre de usuario (arriba a la derecha de la página). Copiamos la clave del apartado MAAS keys .

Si hacemos esto, ya podemos irlo probando:

juju status
ERROR Unable to connect to environment "maas".
Please check your credentials or use 'juju bootstrap' to create a new environment.

Error details:
environment is not bootstrapped


Bien, no tenemos errores de configuración y lo que nos dice es que tenemos que hacer el arranque (bootstrapping) de nuestro entorno:

Primero sincronizamos herramientas:
juju sync-tools

*Antiguamente era juju --sync-tools, pero ahora ya no.

Luego ya podemos hacer el bootstrap:

juju bootstrap

A mi usualmente me da un error siempre:
ERROR waited for 10m0s without being able to connect: /var/lib/juju/nonce.txt does not exist

El caso es que en el nodo en donde mira de hacer bootstrap no existe ese archivo. Hay que crearlo con y poner esto:
user-admin:bootstrap

Si todo nos funciona bien veremos algo como:
(...)
Bootstrapping Juju machine agent
Starting Juju machine agent (jujud-machine-0)


En este instante ya podríamos decir que tenemos juju instalado y listo para orquestrar nuestros servicios. Hay que recordar que juju mira de definir las aplicaciones como servicios de manera que nos abstrae de instalar programas y sus relaciones, así como de 'donde' se instalan estos servicios (programas).
Así como antes hiciéramos, podemos ver el estado:

juju status
environment: maas
machines:
  "0":
    agent-state: started
    agent-version: 1.18.4
    dns-name: bw4wb.maas

    instance-id: /MAAS/api/1.0/nodes/node-01f3f58a-fdf2-11e3-98d2-00160a07b596/
    series: trusty
services: {}


Ahora nos quedaría desplegar servicios. Como ejemplo vamos a desplegar el juju-gui, que es un panel que podremos acceder via web y manejar las cosas más habituales de juju de manera gráfica:

juju deploy juju-gui
juju expose juju-gui


¡Ya esta! Es así de mágico. Tenemos desplegado el servicio juju-gui. Como observación decir que si queremos desplegar el servicio en un nodo en cuestión, lo podemos especificar en el momento del deploy:

juju deploy juju-gui --to 0

Si ahora vemos el estado de juju:

juju status
environment: maas
machines:
  "0":
    agent-state: started
    agent-version: 1.18.4
    dns-name: bw4wb.maas

    instance-id: /MAAS/api/1.0/nodes/node-01f3f58a-fdf2-11e3-98d2-00160a07b596/
    series: trusty
services:
  juju-gui:
    charm: cs:trusty/juju-gui-3
    exposed: false
    units:
      juju-gui/0:
        agent-state: started
        agent-version: 1.18.4
        machine: "0"
        open-ports:
        - 80/tcp
        - 443/tcp
        public-address: bw4wb.maas


Con lo que vemos que juju-gui es accesible mediante http://bw4wb.maas:80 o 443


Este vídeo es un ejemplo de instalación de OpenStack mediante Juju-GUI:
 


Enlace de interés:

viernes, 27 de junio de 2014

Instalando un cluster MAAS en Ubuntu 14.04 LTS

Los usuarios de Ubuntu Server tienen acceso a la herramienta de configuración MAAS (acrónimo de Metal como un Servicio), trayendo el dinamismo de la computación en la nube al mundo de la provisión física.

Según Canonical, MAAS apoya el despliegue de infraestructuras como OpenStack, Hadoop, CloudStack, Load Balanced Web y Cloud Foundry. También gestiona servidores como un recurso similar a la nube que se asignan bajo demanda.

Los servidores se asignan fácilmente a MAAS mediante una inscripción automática y luego MAAS es responsable de todos los aspectos de mantenimiento de los servidores físicos, como actualizaciones de firmware, pruebas burn-in, evaluación del rendimiento y otras operaciones similares.

(Fuente Softpedia)



La instalación es muy sencilla. Al arrancar nuestra imagen de Ubuntu Server nos preguntará que tipo de instalación queremos y le diremos "Create a new MAAS on this server".

No voy a poner lo que ya esta fácilmente accesible por la web. En resumen hay que seguir los pasos que nos pone la página oficial:



Una vez instalado el nodo master MAAS podremos acceder con nuestro navegador mediante la URL: http://ip_nuestro_servidor/MAAS 

En ese punto nos pedirá que creemos un usuario.

sudo maas-region-admin createsuperuser
[sudo] password for eddy:
Username (leave blank to use 'root'):
Email address: micorreo@electronico.es
Password:
Password (again):
Superuser created successfully.

Es importante que todos los pasos de la documentación que hagamos mediante sudo lo hagamos tal cual. No hacer sudo -s y luego todo como root. No, mejor tal cual nos lo dicen. No es lo mismo crear un archivo como usuario con acceso a sudo que hacerlo directamente como root. En definitiva, haced caso literal a lo que los manuales os dicen.

Luego de crear el superusuario de MAAS, tendremos que importar las imágenes de arranque (para la instalacion de los nodos). Esto se hace con el botón Import Boot Images:




En la consola de nuestro MAAS Master Cluster veremos en los procesos esto:

sudo -n -E maas-import-pxe-files
  \_ /usr/bin/python2.7 /usr/sbin/maas-import-pxe-files

Una vez tengamos las imágenes de arranque descargadas nos faltará configurar el Nodo Master para que tenga una tarjeta de red que sea para la comunicación y aprovisionamiento de los nodos (Managed Interfaces), la cual dotará de los servicios DNS y/o DHCP a los nodos. Puede ser la misma tarjeta de red con la que nos conectamos al Controlador, pero yo aconsejaría tenerlo separado, tanto por concepto como por rendimiento. 

Podemos mirar de actualizar nuestro servidor MAAS agregando los repositorios de Ubuntu Cloud, ya que tienen las versiones más actualizadas y estables:

sudo add-apt-repository cloud-archive:tools
sudo apt-get update && sudo apt-get upgrade


Ahora ya estamos en disposición de añadir nuevos nodos (nuevos servidores físicos en donde instalaremos de forma automática Ubuntu). ¿Cómo? pues podemos hacerlo manualmente o automáticamente. Lo fácil y aconsejable es hacerlo automáticamente. Para ello configuramos la BIOS del nodo que queramos añadir a nuestro Cluster para que se encienda en WakeOnLan (o algún otro servicio de autoencendido compatible) y que arranque por LAN (PXE). En artículos anteriores os explicaba estos conceptos:
Así que si tenemos los nodos en una red en el que el Master Cluster MAAS dota de arranque PXE, DNS y DHCP, ya podemos empezar a meter nodos. Llegados a este punto os aconsejo leer http://maas.ubuntu.com/docs1.5/nodes.html#auto-enlist .

Como querremos entrar en nuestros nodos, es util crear un certificado para poder entrar automaticamente desde ssh. En un artículo anterior os explicaba como hacerlo: http://eithel-inside.blogspot.com.es/2010/01/autenticacion-ssh-mediante-certificado.html

Una vez generado el certificado (de usuario, no con sudo o root), tenemos que copiar el contenido del archivo ~/.ssh/id_rsa.pub y copiarlo enteramente en el apartado de root=> preferences => add ssh key




Una vez hemos arrancado nuestro nuevo nodo (nuevo servidor físico) veremos que arranca por PXE, que hace unas serie de operaciones y luego se para. Bien, pues una vez hecho esto, veremos que nos aparece en la pestaña de Nodes:


Pues bien, ahora que ya nos ha autodetectado el nodo, tenemos que hacer el Comission del nodo clicando al nodo en cuestión y luego dándole a Comission node:


Como inciso, deciros que si quereis que los nodos tengan salida a Internet, igual tenemos que hacer IP Forwarding con el nodo Master (dependiendo de como hayamos ideado nuestra red). En un artículo anterior os explicaba como : http://eithel-inside.blogspot.com.es/2011/03/ip-forwarding-con-linux.html

Después de reiniciarse algunas veces, nuestro nodo quedará en el estado de Ready. Eso quiere decir que esta todo preparado para instalar ubuntu en el nodo. Le damos al botón Start y ya tendremos nuestro nodo.

Ahora la idea seria ir añadiendo nodos a nuestro cluster según la necesidad de hardware que tengamos.




Troleando Ubuntu Vs Gnome


lunes, 23 de junio de 2014

Instalando OpenStack IceHouse mediante DevStack en Ubuntu 14.04 LTS

OpenStack es un proyecto de computación en la nube para proporcionar una infraestructura como servicio (IaaS). Es software libre y de código abierto distribuido bajo los términos de la licencia Apache. El proyecto está gestionado por la Fundación OpenStack, una persona jurídica sin fines de lucro creada en septiembre de 2012 para promover el software OpenStack y su comunidad.1 2

(Fuente Wikipedia)

También os quiero presentar DevStack, un conjunto de scripts en bash que nos ayudan muchísimo a desarrollar un entorno OpenStack

Así pues, vamos a explicar los pasos para instalar OpenStack en un Ubuntu 14.04 mediante DevStack:


Primero nos descargamos el programa devstack:

git clone https://github.com/openstack-dev/devstack.git

y veremos algo así:

Clonar en «devstack»...
remote: Reusing existing pack: 18506, done.
remote: Counting objects: 28, done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 18534 (delta 13), reused 3 (delta 0)
Receiving objects: 100% (18534/18534), 4.96 MiB | 2.54 MiB/s, done.
Resolving deltas: 100% (12711/12711), done.
Checking connectivity... hecho.



(* si no tenemos git cliente instalado, lo podemos hacer mediante sudo apt-get install git)

Una vez descargado, se recomienda una mínima configuración especial para nuestro entorno. Dentro de la carpeta samples tenemos un ejemplo de configuración. Lo podemos copiar a la raíz de nuestra carpeta devstack y luego modificarla según nos interese:

usuario@OpenStack:~/devstack/samples$ cp -a local.conf ..



Y finalmente comenzar la instalación:

cd devstack; ./stack.sh

Después de un rato viendo como instala paquetes y los configura, al final veremos algo como esto:

Horizon is now available at http://84.88.68.153/
Keystone is serving at http://84.88.68.153:5000/v2.0/
Examples on using novaclient command line is in exercise.sh
The default users are: admin and demo
The password: MySuperWoWPass
This is your host ip: 84.88.68.153

Así pues, nos quedará probar si la magia de DevStack ha dado resultado conectando a la URL que nos ha reportado.


Más info en:

martes, 17 de junio de 2014

Solucionar el problema "add-apt-repository: command not found"



En ocasiones tenemos que añadir algun repositorio extra para trabajar con una versión específica. Es entonces cuando el comando add-apt-repository nos puede ser util. No obstante, puede que no lo tengamos instalado y:



sudo add-apt-repository ppa:juju/stable
[sudo] password for username:
sudo: add-apt-repository: command not found



Según en otros comandos cuando no lo encuentra el sistema te aconseja que debes instalar, en este caso no te dice nada. Simplemente que no lo encuentra. La solución en Ubuntu 14.04 es:

sudo apt-get install software-properties-common

En versiones anteriores funcionaba haciendo :

sudo apt-get install python-software-properties 

viernes, 30 de mayo de 2014

GlusterFS en Ubuntu 14.04 LTS. Réplica automática de los archivos sobre TCP/IP

El Sistema de Archivos Gluster, Gluster File System o GlusterFS, es un multiescalable sistema de archivos para NAS desarrollado inicialmente por Gluster Inc. Este permite agregar varios servidores de archivos sobre Ethernet o interconexiones Infiniband RDMA en un gran entorno de archivos de red en paralelo. El diseño del GlusterFS se basa en la utilización del espacio de usuario y de esta manera no compromete el rendimiento. Se pueden encontrar siendo utilizado en una gran variedad de entornos y aplicaciones como computación en nube, ciencias biomédicas y almacenamiento de archivos. El GlusterFS está licenciado bajo la licencia GNU General Public License versión 3.
Gluster Inc fue el principal patrocinador comercial del GlusterFS, el cual ofrece tanto productos comerciales como apoyo para desarrollo de soluciones libres basadas en el GlusterFS. En Octubre de 2011, fue anunciada la adquisición de Gluster Inc por Red Hat Inc.

La mayor parte de la funcionalidades del GlusterFS se implementa como traductores, incluyendo:

(Fuente Wikipedia)

En artículos anteriores os explicaba como configurar un RAID1 sobre TCP/IP mediante DRBD. En esta ocasión os explico como hacerlo mediante GlusterFS ya que es un sistema de archivos que está bajo el soporte de Red Hat Inc. y está ganando muchos adeptos. Es muy fácil de instalar y configurar. Bajo mi experiencia, mucho más fácil que DRDB, así que vamos a ver de que trata y como se hace:

Hay conceptos y terminología como brick, translator, etc... que podéis consultar en http://gluster.org/community/documentation/index.php/GlusterFS_Concepts

Instalar

Como está en el repositorio, nos basta con hacer apt-get en los servidores en los que queremos tener la réplica del sistema de archivos:

sudo apt-get install glusterfs-server

Configurar

Se ha de tener en cuenta que Gluster usa el TCP/IP para comunicarse con otro servidor. Así pues, tenemos que tener configurado los cortafuegos para admitir el tráfico para cada servidor:

iptables -I INPUT -p all -s -j ACCEPT

*Si somos puristas, podríamos abrir los puertos de manera individual entre los servidores teniendo en cuenta de abrir TCP ports 111, 24007, 24008, 24009-(24009 + número de bricks entre todos los volúmenes)


Asumimos que tenemos ya creada las particiones en cada servidor (nodo01 y nodo02), formateadas (por ejemplo con Btrfs o ext4) y añadidas en nuestro fstab. 

Desde el servidor nodo01 ponemos :

gluster peer probe nodo02

El servidor nos devolverá algo como "peer probe: success"


Ahora toca crear un volumen del tipo Gluster:
gluster volume create gv0 replica 2 nodo01.midominio.net:/export/sdb1/brick nodo02.midominio.net:/export/sdb1/brick

El servidor nos devolverá algo como "volume create: gv0: success: please start the volume to access data"

Lo explicaré paso a paso:

gluster volume create gv0: Crea un volumen llamado gv0

replica: El volumen que sea del tipo replica.

2: Como mínimo dos servidores sincronizados.

nodo01.midominio.net:/export/sdb1/brick: Primer nodo
nodo02.midominio.net:/export/sdb1/brick: Segundo nodo

Es así de simple.



Problemas
  • El brick recomiendan no hacerlo en el sistema raíz (root): "volume create: gv0: failed: The brick nodo01:/users/home is is being created in the root partition. It is recommended that you don't use the system's root partition for storage backend. Or use 'force' at the end of the command if you want to override this behavior." . Así pues miraremos de crearlo en otro disco que no sea el raíz.
  • El brick recomiendan que sea una subcarpeta del sistema montado, no la raíz del sistema montado: "volume create: gv0: failed: The brick nodo01:/users/home is a mount point. Please create a sub-directory under the mount point and use that as the brick directory. Or use 'force' at the end of the command if you want to override this behavior." . Crearemos una subcarpeta.


Observaciones
  • Hemos llamado al volumen gv0, pero puede ser cualquier nombre.
  • Decir que el tipo de volumen puede ser Replicated, Distributed, Striped, Distrbuted Striped o Distributed Replicated. Si por ejemplo fuera distribuido, no tendremos los mismos datos en los n servidores, sino que tendremos los datos repartidos entre los n servidores. 
  • Podemos tener n nodos, pero que el mínimo de nodos sincronizados puede ser menor que n.
  • Existen más opciones y algunas son por defecto. Podemos mirar los manuales si deseamos algo más específico.


Ahora podemos comprobar el estado de nuestro volumen para saber si hemos realizado los pasos correctamente:

gluster volume info

Veremos algo como esto:

gluster volume info

Volume Name: gv0
Type: Replicate
Volume ID: 2af3de72-92cf-4e4e-97ab-970ecbc92878
Status: Created
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: nodo01:/users/home/CSI
Brick2: nodo02:/users/home/CSI


Con esto vemos que hemos hecho todo correcto. Ahora solo nos falta arrancar este volumen para que sea réplica:

gluster volume start gv0

El servidor nos devolverá esto: "volume start: gv0: success"

Ahora el siguiente paso es montar en sistema glusterfs el volumen gv0 creado:

root@nodo01:~# mkdir -p /mnt/gv0
root@nodo01:~# mount -t glusterfs localhost:/gv0 /mnt/gv0

¡Ya esta! Ahora todo lo que escribamos en el brick del nodo01 se replicará en el brick del nodo02.




Resumen:

  1. sudo apt-get install glusterfs-server
  2. iptables -I INPUT -p all -s -j ACCEPT
  3. gluster peer probe nodo02
  4. gluster volume create gv0 replica 2 nodo01.midominio.net:/export/sdb1/brick nodo02.midominio.net:/export/sdb1/brick
  5. gluster volume start gv0
  6. mkdir -p /mnt/gv0 
  7. mount -t glusterfs localhost:/gv0 /mnt/gv0
  

Links:


martes, 6 de mayo de 2014

Remmina inexperadamente deja de conectar a un equipo por RDP


Remmina es un cliente escritorio remoto escrito en GTK, que pretender ser útil para los administradores de sistemas y los viajeros, que necesiten trabajar mucho con otros equipos remotos. Remmina soporta protocolos de red múltiples en un interfaz integrado. Actualmente soporta RDP, VNC, XDMCP y SSH. Remmina consta de tres paquetes separados:

  • remmina: la aplicación principal de GTK+
  • remmina-gnome: el applet de escritorio GNOME
  • remmina-xfce: el panel de Xfce.
La instalación es sencilla y se hace mediante repositorios:
$ sudo add-apt-repository ppa:llyzs/ppa
$ sudo apt-get update
$ sudo aptitude install remmina remmina-gnome
Una vez terminada la instalación lo encontraremos en Aplicaciones --> Internet --> Cliente de escritorio remoto Remmina
(Fuente apuntes-para-no-olvidar)

Pues este programa funciona muy bien, pero en algunas ocasiones ha pasado que despues de meses conectando sin problemas a un servidor, un dia deja de conectar. Dice que no puede conectar con él y no ves la manera de arreglar el problema. Pues bien, parece ser que es un problema del archivo known_hosts que usa el programa.


Para arreglarlo simplemente borramos el archivo known_hosts que se encuentra dentro de nuestra carpeta personal bajo un directorio oculto llamado .freerdp :

cd ~/.freerdp
mv known_hosts known_hosts_bak


Con esto debería funcionar.

That u don't know what you've got 'til it's gone