SESION 5 4 Junio 2011 Práctica IV: Despliegue de una

Anuncio
SESION 5
4 Junio 2011
Práctica IV: Despliegue de una aplicación sobre
cloud
El objetivo de esta práctica es realizar el despliegue de un servidor web con
tolerancia a fallos y balanceo de carga sobre la plataforma cloud creada en la
práctica anterior.
opennebula1
OpenNebula
front-end
opennebula2
- runs 'oned' daemon
- exports (NFS) /srv/cloud
+
KVM host
KVM host
VM
VM
10.2.21.Z
10.2.21.X
10.2.21.W
10.2.21.Y
1 Configuramos la red para que puedan comunicarse todas las VMs (“Public Bridge”)
1.1 Creamos el bridge “br0”con yast:
• Network Device → Network Settings → Add
• Device Type: Bridge
• Le ponemo la ip que queremos (10.2.21.X). La ip de la interfaz de red física se
configurará automáticamente a 0.0.0.0
• En “Bridges Devices“ seleccionamos la interfaz con la cual enlazar el bridge ( la
interface real que estamos usando )
• Guardamos los cambios y salimos del yast
1.2 Creamos las siguientes reglas de iptables para tener acceso al/del exterior
• iptables -A INPUT -i br0 -p udp -m udp --dport 53 -j ACCEPT
• iptables -A INPUT -i br0 -p tcp -m tcp --dport 53 -j ACCEPT
• iptables -A INPUT -i br0 -p tcp -m tcp --dport 67 -j ACCEPT
• iptables -A INPUT -i br0 -p udp -m udp --dport 67 -j ACCEPT
• iptables -A FORWARD -i br0 -o br0 -j ACCEPT
Curso “Introducción al clustering y virtualización de sistemas”
Asociación de Profesores de Informática de Aragón (APIA)
1.3 Volvemos a crear la imagen Master pero con el bridge cambiado a “br0” con el virtmanager:
• Creamos la máquina virtual con la opción “Tengo un disco con un sistema
operativo instalado” y configurar como en la práctica anterior:
• Seleccionamos el disco del master “diskOS11.4-master-configurado.raw”
• En “adaptadores de red” le ponemos que utilice la fuente “br0”
• Le ponemos otro nombre para no confundirlo con el antiguo master
• Y finalizamos la creación de la nueva imagen máster
2 OpenNebula en Acción
2.1 Creamos los nodos en los que se ejecutarán nuestras máquinas virtuales
• onehost create opennebula1 im_kvm vmm_kvm tm_nfs
• onehost create opennebula2 im_kvm vmm_kvm tm_nfs
2.2 Listamos los nodos de nuestro cloud
• onehost list
2.3 Si ha ocurrido algún error podemos ver el log en:
• cat $HOME/var/oned.log
2.4 Si todo va bien, continuamos...
2.5 Configuramos la red de nuestro cloud para que se asignen automáticamente las ips(en
este punto destacar respecto de la practica anterior que debemos utilizar el bridge br0 )
• mkdir $HOME/templates
• cd templates
• wget http://bifi.es/apia2011/sesion5/files/create_network.net
• Y modificamos las ips por las que nos correspondan ( podemos utilizar desde la
110 hasta la 199 )
• onevnet create create_network.net
2.6 Comprobamos que se ha creado correctamente
• onevnet list
2.7 Nos descargamos el template opensuse.one de la máquina virtual a desplegar con wget
y lo guardamos con en $HOME/templates/opensuse.one
2.8 Copiamos una de las imágenes de la práctica anterior al directorio de imagenes
• cp <PATH a diskOS11.4-master-configurado.raw>
/srv/cloud/one/images/diskOS11.4-master-configurado.raw
2.9 Si fuera necesario modificamos el template con la ruta a la imagen
2.10 Arrancamos una máquina virtual
• onevm create opensuse.one im_kvm vmm_kvm tm_nfs
2.11 Para ver el estado de las máquinas virtuales:
• onevm list
2.12 Si no alcanza el estado “running”, comprobamos el log de la máquina virtual que
acabamos de crear
• tail -200 $HOME/var/X/vm.log (cambiamos la X por el número de la máquina
virtual)
2.13 Para ver la consola de la máquina virtual tenemos que utilizar virt-manager. Veremos
que se queda esperando el disco. Eso es debido a que Virt-manager detecta el disco
como vda y opennebula como sda. Así que para que arranque tendremos que modificar
Curso “Introducción al clustering y virtualización de sistemas”
Asociación de Profesores de Informática de Aragón (APIA)
el fichero /boot/grub/menu.lst dentro de la imagen master para que arranque con sda.
2.14 Volvemos a lanzar la máquina virtual y comprobamos que arranca perfectamente
3 Configuración necesaria en el nodo de cómputo (sólo cliente)
3.1 Instalamos ruby (si no se encuentra ya instalado)
• zypper install ruby
3.2 Importamos el directorio de instalación de Opennebula. Para ello añadimos la siguiente
línea en el fichero /etc/fstab:
• opennebula1:/srv/cloud /srv/cloud
nfs defaults
00
3.3 Y lo montamos
• mount /srv/cloud
4 Instalación Interfaz Gráfica SunStone
4.1 Instalamos los paquetes necesarios:
• gem install json
• gem install sinatra
• gem install thin
4.2 Arrancamos la aplicación (en opennebula1)
• $ONE_LOCATION/bin/sunstone-server -H 10.2.21.X start
4.3 Abrimos la interfaz en un navegador
• http://10.2.21.X:4567/
5 Tolerancia a fallos
5.1 En este punto vamos a modificar la configuración de nuestro cloud para que soporte
tolerancia a fallos, es decir, si hay algún problema en alguno de nuestros nodos hosts, las
máquinas virtuales que estaban corriendo en dicho host se desplegarán en otro de los
nodos del cloud.
5.2 Para ello vamos a modificar el fichero de configuración
$ONE_LOCATION/etc/oned.conf descomentando las siguientes líneas:
HOST_HOOK = [
name = "error",
on
= "ERROR",
command = "host_error.rb",
arguments = "$HID -r n",
remote = "no" ]
HOST_HOOK = [
name = "disable",
on
= "DISABLE",
command = "host_error.rb",
arguments = "$HID -r n",
remote = "no" ]
5.3 También podemos modificar el fichero de configuracion oned.conf para que la
monitorización de los hosts y máquinas virtuales se efectue con más frecuencia. Esto
hará que los cambios de estado se visualicen más rápido ( ya está modificado en el
fichero que se adjunta )
Curso “Introducción al clustering y virtualización de sistemas”
Asociación de Profesores de Informática de Aragón (APIA)
•
•
HOST_MONITORING_INTERVAL = 60
VM_POLLING_INTERVAL = 60
5.4 Reiniciamos el servidor:
• one stop
• one start
5.5 Lo probamos deshabilitando un nodo (opennebula2):
• onehost disable <host_id>
5.6 o desconectando el cable de red
5.7 Veremos que la máquina virtual es desplegada automáticamente al cabo de unos
minutos en el otro host que forma nuestro cloud.
6 Balanceo de Carga
opennebula2
opennebula1
OpenNebula
front-end
+
- runs 'oned' daemon
- exports (NFS) /srv/cloud
KVM host
NGINX load-balancer
KVM host
NGINX webserver
NGINX webserver
VM
VM
10.2.21.Z
10.2.21.X
10.2.21.W
10.2.21.Y
6.1 Por último, otra funcionalidad que nos ofrece un sistema en cloud, es la posibilidad de
hacer balanceo de carga entre nuestras máquinas virtuales. En este punto vamos a
desplegar un servidor web con balanceo de carga entre las máquinas virtuales que
tengamos arrancadas.
6.2 Los siguiente puntos los tenemos que realizar tanto en el nodo host del servidor
(opennebula1) como en la imagen master con la que luego desplegaremos las máquinas
virtuales:
6.2.1
•
Añadimos el siguiente repositorio mediante yast:
http://download.opensuse.org/repositories/openSUSE:/11.4:/Contrib/standard
•
Instalamos los paquetes necesarios:
zypper install php5 php5-xcache nginx-0.8
6.2.2
6.2.3
Nos descargamos el fichero nginx-server.conf y nginx-client.conf y lo
sustituimos por el que hay en /etc/nginx/ correspondiente, pero con el nombre
Curso “Introducción al clustering y virtualización de sistemas”
Asociación de Profesores de Informática de Aragón (APIA)
original “nginx.conf”
6.2.4
Modificamos este fichero con las @ips correspondientes (SOLO en el server
- opennebula1):
• “proxy_pass http://10.2.21.X” , sustituimos la X por la que ip que
corresponda
• “upstream 10.2.21.X {“ , por la misma ip que en el proxy_pass
• y en los servers ponemos las ips de nuestras VMs
6.2.5
•
Arrancamos nginx
service nginx start
6.3 Modificamos los runlevels para que arranque en los niveles 3 y 5
6.4 Para problarlo:
6.4.1
•
•
•
Creamos un fichero en la imagen master para descargarnos remotamente:
dd if=/dev/zero of=/srv/www/htdocs/test_file.raw count 800000
Apagamos la imagen master
Desplegamos 2 VMs
6.4.2
Nos intentamos descargar esta imagen desde un equipo ajeno a nuestro cloud
(le pedimos prestado un ordenador a otro grupo ) y mediante wget y varias
terminales descargamos la misma imagen 2 veces simultáneamente:
•
wget http://10.2.21.X/test_file.raw
•
Mediante el virt-manager podemos ver la carga del sistema y podemos
ver que la descarga se está llevando a cabo en ambos servidores.
Curso “Introducción al clustering y virtualización de sistemas”
Asociación de Profesores de Informática de Aragón (APIA)
Descargar