Translate - ترجم - Traduire - 翻訳する

jueves, 3 de mayo de 2012

0 Ubuntu 10.04/12.04 server + KVM + Bonding

INTRODUCCIÓN


Muy buenos días tardes o noches, hoy comencé a reiniciar el blog, ya que ahora tiene un fin, y es DIVULGAR el conocimiento que he adquirido en muchos temas, y en particular en mi carrera =D, que en este caso es Ciencias de la Computación, sin mas presentaciones hoy les traigo una problemática que he tenido en el área de Comunicaciones de la Facultad de Matemáticas, la cual se encarga no solo de la interconectividad(intranet) sino de la telefonía, pagina web, etc., y seguridad de las mismas. Es la falta de equipos "fisicos" o hardware de altas prestaciones, como lo son los servidores, ya sean DELL, APPLE, IBM, SUN, así como sus Arquitecturas i386, ARM, AMD64, etc etc etc. Bien, cuando entre a trabajar, solo existía una maquina que daba el servicio de virtualización, un servidor SUNFIRE de Sun MicroSystems, bastante bueno el equipo, sin embargo corría Windows server 2000, es decir no entre a inovar a el area, ademas no es un tema nuevo, sin embargo es un tema poco explotado (hoy en dia si ya hay incluso servidores y Sistemas operativos dedicados como es el caso de VMWareSphere y Parallels. Regresando al tema, el servicio era muy pobre, ademas de que al pobre servidor le ponen a virtualizar Win7 y otros SO que consumen muchos recursos de hardware solo para que puedan correr el SO, y ademas estos Guest(huéspedes) se dedicaban a realizar tareas, o tener servicios muy poco demandantes para el consumo en virtualización, es decir simplemente se desperdiciaba espacio, procesamiento, va!, recursos del sistema Host(Anfitrión), entonces vine con la idea de usar linux para crear guests que no consuman tanto y rindan el doble, ya que con linux para ser mas exactos Ubuntu 10.04 el cual era el LTS del momento, tenemos muchas herramientas mas que necesarias y suficientes para cualquier tarea que se requiera, desde un servidor Apache(http) hasta incluso un sistema autónomo e inteligente en cluster para ser IDS/IPS/FIREWALL/PROXY/ROUTER/... del cual hablaremos en otro post. Bien ahora resulta(en aquel entonces no sabia que existía KVM, sigue siendo relativamente es nuevo) entonces el encargado, mi jefe en el area, me dice tienes razón, investiga como hacer maquinas virtuales en linux(a es que no me supe explicar y el penso que yo quería mudar el sistema xD), así que investigue y di con este estupendo paravirtualizador/virtualizador/emulador de hardware de código libre y para Linux ademas de ser la solucion de Ubuntu en cuanto a virtualización. Antes de empezar a joder nuestro sistema Linux, ya lo he instalado en las siguientes maquinas: 1.-Dell 2.-SunFire 3.-Apple Xserve 3.1 y cada uno tiene sus características muy llamativas en cuanto a errores y configuraciones. Ahora bien lo primero es entender un poco de KVM y Virtualización, lo cual uds deben aprender xD, yo solo dare pautas para lograr una instalación exitosa y resolver dudas y obvio como dar mantenimiento, ya que ODIO que los post en la red digan -así se hace-, y LO EMULAN VIRTUALIZANDO EL HARDWARE ya sea VirtualBox o VMWare, y al final cuando sigues sus "tutoriales" nunca compila/funciona/es para tu arquitectura, estas personas no responden tus dudas o simplemente jamas tuvieron problemas ni dieron mantenimiento a el problema que "resolvieron" y terminamos en las mismas... Regresando al tema, pueden conseguir mas información en:

https://help.ubuntu.com/community/KVM
http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine​  https://help.ubuntu.com/community/UbuntuBonding 
PREÁMBULO


Kernel-based Virtual Machine o KVM, (en español, Máquina virtual basada en el núcleo) es una solución para implementar virtualización completa con Linux. 
Está formada por un módulo del núcleo (con el nombre kvm.ko) y herramientas en el espacio de usuario, siendo en su totalidad software libre. 
El componente KVM para el núcleo está incluido en Linux desde la versión 2.6.20. 
KVM permite ejecutar máquinas virtuales utilizando imágenes de disco que contienen sistemas operativos sin modificar. 
Cada máquina virtual tiene su propio hardware virtualizado: una tarjeta de red, discos duros, tarjeta gráfica, etc. 
KVM fue creado, y está mantenido, por Qumranet. 

KVM utiliza una versión modificada de QEMU como front-end. Se está trabajando para utilizar más características de la Virtualización Technology presente en las últimas CPUs de Intel (Core 2 Duo E6300 en adelante para equipos de escritorio y Core 2 Duo T5600 y superiores para equipos portátiles) y AMD. Se han realizado pruebas de rendimiento con Xen (utilizando virtualización hardware en lugar de para virtualización) y, para algunas cargas de trabajo, ha resultado ser más rápido. Para otras, no tanto. 
Una de las características que KVM posee es el «overcommit» que es el uso de memoria​excediendo aún la memoria física del host.

REQUISITOS

Antes que nada KVM necesita un procesador x86 con soporte Virtualización Technology. Puede ejecutar huéspedes GNU/Linux (32 y 64 bits) y Windows (32 bits), sin embargo se puede virtualizar sin tener el soporte VT, sin este soporte puede que la máquina virtual sea lenta o tenga problemas de compatibilidad, ahora para tener este servicio corriendo en una maquina lo recomendado es un servidor autorizado (HP, DELL, ACER, etc.), ahora requisitos mínimos son un procesador de doble núcleo Intel core 2 duo t5600 o AMD-V, memoria RAM mínima 2g ya que ​se comparte con las máquinas virtuales, sistema operativo Linux (en nuestro caso Ubuntu server 10.04LTS) 

Lo primero y antes que todo es verificar que el hardware soporte Virtualización.( algunos servidores no tienen activada esta funcionalidad de fábrica, se tiene que configurar en el BIOS setup) desde Linux (Ubuntu) introducimos el siguiente comando: 
$ kvm-ok 
este comando debe retornarnos lo siguiente "INFO: Your CPU supports KVM extensions", pero si dice esto INFO: Your CPU does not support KVM extensions, las máquinas virtuales ​correrán, pero más lento. NOTE: Si se ve el mensaje "KVM acceleration can/can NOT be used". Se malentiende ya que significa si está actualmente disponible (activado en el BIOS) y no que no sea soportado. O usando análogamente el comando: 
$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo 
Si ahí encontramos vmx o svm para Intel o AMD respectivamente significa que nuestro procesador tiene la posibilidad de ejecutar KVM, pero si no sale nada con ese comando entonces no tenemos un procesador que soporte a KVM, como dije antes aun podremos usar la virtualización por software. 

Se recomienda usar un software y hardware de 64 bits ya que este puede soportar máquinas de 32 y 64 Linux, Windows , Mac. esto lo podemos comprobar de la siguiente manera: 
$ egrep -c ' lm ' /proc/cpuinfo si retorna 0 es que no tenemos 64bits 
si nos retorna algo diferente de cero introducimos este comando : 
$ uname -m esto nos retornara x86_64 si el SO es de 64 bits 


INSTALACIÓN

Ahora instalamos los paquetes necesarios para tener corriendo KVM, lo primero es actualizar el SO al más actual para evitar problemas de compatibilidad o repositorios no accesibles, esto lo hacemos con los comandos: 
$ apt-get update 
$ apt-get upgrade 
Cuando finalice de actualizar debemos reiniciar la máquina. 

Ahora una vez iniciada la maquina host, instalamos los paquetes necesarios: 
$ apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils 
este comando es para Ubuntu 10.04, para versiones anteriores usamos este comando: 
$ aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils 
este comando instala los siguientes paquetes: 
>libvirt-bin instala libvirtd lo necesario para administrar instancias qemu y kvm usando libvirt 
>qemu-kvm es lo necesario de KVM (librerías, drivers etc.) 
>ubuntu-vm-builder es un poderoso script para poder usar la línea de comandos para crear invitados(máquinas virtuales) 
>bridge-utils como su nombre lo dice, nos sirve para generar puentes de la red con las máquinas virtuales 
Al terminar la instalación, hay que hacer cosas importantes antes de crear máquinas virtuales:

1.- ver quienes tendrán derecho a crear máquinas virtuales (ver grupos) 
2.- verificar si tenemos derecho de escritura en algunas librerías (ver derechos) 
para este fin primero checamos los grupos con el comando : 
$ groups 
esto nos retorna adm dialout cdrom floppy audio dip video plugdev fuse lpadmin admin sambashare kvm libvirtd , como podemos ver al final están los grupos importantes, para que ese usuario pueda trabajar con kvm tenemos que agregarlo a esos grupos. si no aparece algo similar debemos agregar el usuario a los grupos de la siguiente manera: 
$ adduser "usuario" kvm (análogamente a libvirtd) 
​saldrá algo similar Adding user '<username>' to group 'kvm' ... 

Bien ahora después de ver que estemos en los grupos necesarios probamos la instalación de kvm para esto introducimos este comando: 
$ virsh -c qemu:///system list 
esto nos retornara como una tabla vacía: 
Id Name State 
--------------------------------------- 
esto está correcto, sin embargo si nos retorna libvirt: Remote error : Permission denied error: ​failed to connect to the hypervisor tenemos problemas de lectura y escritura 
en la librería /var/run/libvirt/libvirt-sock. Para resolver esto simplemente hay que darle permisos necesarios (srwxrwx---) al usuario que los necesite. 

Con esto ya está instalado el Administrador de máquinas virtuales. Ahora si lo instalamos en una distro server, tenemos de dos caldos, ya sea instalar el entorno visual o simplemente instalarlo desde línea de comandos. 

La primera es instalar el Desktop mínimo de gnome kde o el que más nos guste en el servidor(yo use gnome core minimal : sudo apt-get install xorg gnome-core), una vez instalado instalamos lo necesario para poder manejar las redes como un netmanager o similar, ahora para manejar las máquinas virtuales visualmente debemos instalar el "virt-manager" y de este hay dos caldos también podemos bajar el más actual e instalarlo o usar la versión simple que viene en los repositorios, en este caso como solo son para administrar de una manera sencilla, usamos el siguiente comando : 
$ apt-get install virt-manager 
el cual nos instalara el gestor visual, y pues instalar máquinas virtuales es tan sencillo que instalar un programa en Windows xD 
este paquete ya incluye unas cositas importantes que si queremos instalar desde línea de comandos necesitamos, una de ellas es virt-viewer, pero ojo este lo necesitaríamos en la máquina de la cual administraremos la máquina virtual (ojo no el host) ya que funciona como un VNC, y ya viene incorporado el bridge-utils, más que nada con solo instalar el virt-manager instala todo lo anteriormente mencionado solo que esto es para entorno visual. 

Ahora para instalar máquinas virtuales desde la línea de comandos, en el caso de que simplemente nos podemos conectar SSH a la maquina anfitrión (host) necesitamos usar el script antes mencionado. para esto introducimos el siguiente comando: 
$ virt-install --prompt 
este comando le pedirá opciones para comenzar la instalación, ahora si deseamos instalar con un solo comando(existen más formas de instalación, esto es por comodidad ya que se puede un xml, clonar o con una imagen ya hecha) el cual es : 
$ virt-install -[options] 
pero para ahorrarnos un poco de lectura usamos el siguiente comando, que más que necesario para crear máquinas virtuales: 
$ virt-install --connect qemu:///system -n NOMBRE -r 256 --vcpus=1 -f /home/userlab
/MaquinasVirtuales/NOMBRE.img -s 20 -c /home/userlab/Isos/ISOAINSTALAR.iso --vnc --noautoconsole --os-type linux --accelerate --network=bridge:virbr0 --hvm 

en ese comando podemos notar lo siguiente, --connect qemu:///system es decir que la máquina virtual estará conectada al hypervisor qemu sobre system, -n el cual será el nombre del Dominio que tendrá la máquina virtual, -r es el tamaño de memoria RAM que usara esa máquina virtual, --vcpus es el numero virtual de cpus que tendrá la máquina, -f es el directorio y ruta donde se encuentra el disco duro virtual ( en este caso de no existir, lo crea) este puede ser .img o .qow2 el cual es el estándar de kvm, 
-s es el tamaño del disco duro que se reservara para el disco virtual. 
​-c es el directorio o ruta donde se encuentra ya sea la imagen de disco (.iso) o el disco en sí. 
--vnc instala un servidor vnc para la máquina virtual el cual está en el host pero permite ver la máquina virtual 
--noautoconsole este evita que intente conectarse a la consola tty instalada en las versiones de linux, no importa si esta en auto al final necesitamos usarlo, 
--os-type el tipo de sistema operativo el cual correremos, Windows, linux, Mac etc., o la distro que es. 
--accelerate esto nos permite usar las tecnologías virtuales es decir saca todo el provecho de la virtualización por hardware 
​--network=bridge: este nos especifica que de network podemos poner simplemente la interface ya sea eth0, pero diciéndole que es bridge le especificamos que usara una interface virtual la cual esta puenteada en este caso virbr0, existe el comando default, el cual indica que es la interface por defecto a internet 
--hvm nos indica que usaremos el potenciador del kernel para hacer más eficiente la virtualización

EXTRAS

BRIDGE & BONDING 

ahora antes de usar este comando debemos conocer todo lo que podemos usar es decir para cada comando que podemos usar de hardware, en el caso del --network podemos introducir el comando: 
$ virsh 'net-list --all' 
ahora esto nos lleva a otro punto, el cual es las interfaces puenteadas, primero que nada en el caso del servidor DELL que usamos tenemos dos interfaces para internet, 
eth0 y eth1, además como estamos detrás de un switch decidimos colocar un bonding, es decir la suma de los puertos, en este caso de las interfaces, para que solo sea una interface, en este caso bond0, ahora necesitamos instalar algunas librerías para poder lograr el bonding por software, ( dependiendo de bonding es necesario configurar el switch para que funcione, sino el switch se dará cuenta que ambas interfaces tienen la misma MAC y botara las conexiones) el comando es el siguiente: 
$apt-get install ifenslave 
el cual instala los paquetes necesarios para el bonding por software, ahora podemos configurar los alias o hacer las configuraciones desde /etc/network/intefaces, ojo en versiones más nuevas de Ubuntu 10.04 algunos scripts y archivos son obsoletos, pero siguen haciendo su trabajo. 
Bien una vez instaladas podemos hacer lo siguiente: 
$nano /etc/network/interfaces 
lo cual nos abrirá el archivo de configuración de las interfaces de red, el cual contiene las configuraciones de internet, en caso de no haber configurado anteriormente este archivo tendrá lo siguiente: 
# This file describes the network interfaces available on your system 
# and how to activate them. For more information, see interfaces(5). 

# The loopback network interface 
auto lo

​iface lo inet loopback 

# The primary network interface 
auto eth0 
iface etho inet dhcp 
en este archivo dependiendo de nuestras configuraciones haremos lo siguiente: 
1.- ver que estén todas las interfaces funcionales, 
2.- antes de configurar el puente, debemos cerciorarnos que el bond funcione con queremos que lo haga 
3.- configurar el puente de las interfaces virtuales, en este caso todas las máquinas virtuales se ​quedaran sin internet, si esto ocurre simplemente cambiar la interface de salida en el XML o desde virsh o desde virt-manager. 

bien ahora configuramos el archivo interfaces de esta manera: 
auto lo 
iface lo inet loopback 

auto bond0 
​iface bond0 inet dhcp 
bond-slaves none 

auto eth0 
iface eth0 inet manual 
bond-master bond0 
bond-primary eth0 eth1 

auto eth1 
iface eth1 inet manual 
bond-master bond0 
bond-primary eth0 eth1 

y modificamos o creamos el archivo /etc/modprobe.d/bonding.conf ($ nano /etc/modprobe.d/bonding.conf) y agregamos lo siguiente : 

alias bond0 bonding 
options bonding mode=4 miimon=100 downdelay=200 updelay=200 

en donde decimos que al alias bond0 se comportara como bonding y tendrá las opciones mode=0 (existen 6 tipos, 4 de ellos necesitan configurar el switch, los otros dos son por software) miimon = 100 dice que verifique que las interfaces estén funcionando cada 100 milisegundos, downdelay es si no responde en 200 milisegundos darle de baja y esperar 200 milisegundos para levantarla nuevamente (updelay). después de configurar esto ya sea static o dhcp reiniciamos el servicio de internet con : 
$ /etc/init.d/networking restart (esto nos puede decir que es deprecated (obsoleto) pero aun funciona. 

y dependiendo del modo que escojamos en el caso del servidor DELL fue 4 ((802.3ad) IEEE 802.3ad Dynamic link aggregation.) deberemos configurar el switch ( en el caso de cisco ya viene para implementarlo con unos cuantos clics) si no ocurre ningún error y levanta la interface bond, lo podemos verificad con un ifconfig: 
$ ifconfig 
lo cual nos debe mostrar algo como esto: 


user@ondevice:~$ ifconfig 
bond0 Link encap:Ethernet HWaddr 00:1d:7d:09:8b:e0 
inet addr:10.100.0.101 Bcast:10.100.255.255 Mask:255.255.0.0 
inet6 addr: fe80::21d:7dff:fe09:8be0/64 Scope:Link 
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 
RX packets:37764013 errors:0 dropped:0 overruns:0 frame:0 
TX packets:39725170 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:0 
RX bytes:37822531889 (37.8 GB) TX bytes:41877178152 (41.8 GB) 
 
eth0 Link encap:Ethernet HWaddr 00:1d:7d:09:8b:e0 
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 
RX packets:2378 errors:0 dropped:0 overruns:0 frame:0 
TX packets:1030 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:1000 
RX bytes:462854 (462.8 KB) TX bytes:86837 (86.8 KB) 
Interrupt:31 Base address:0xe000 

​eth1 Link encap:Ethernet HWaddr 00:1d:7d:09:8b:e0 
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 
RX packets:37761635 errors:0 dropped:0 overruns:0 frame:0 
TX packets:39724140 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:1000 
RX bytes:37822069035 (37.8 GB) TX bytes:41877091315 (41.8 GB) 
Interrupt:32 Base address:0x4000 

En este podemos ver que las interfaces están como esclavas de bond0, así que por ahora podemos ver que está funcionando, también podríamos usar el siguiente comando: 
$ cat /proc/net/bonding/bond0 
lo cual nos mostrara algo por el estilo: 

Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008) 

Bonding Mode: IEEE 802.3ad Dynamic link aggregation 
Transmit Hash Policy: layer2 (0) 
MII Status: up 
MII Polling Interval (ms): 100 
Up Delay (ms): 200 
Down Delay (ms): 200 

802.3ad info 
LACP rate: fast 
Aggregator selection policy (ad_select): stable 
bond bond0 has no active aggregator 

Slave Interface: eth0 
MII Status: up 
Link Failure Count: 0 
Permanent HW addr: 00:0c:29:f5:b7:11 
Aggregator ID: N/A 

Slave Interface: eth1

​MII Status: up 
Link Failure Count: 0 
Permanent HW addr: 00:0c:29:f5:b7:1b 
Aggregator ID: N/A 

nos muestra exactamente lo mismo que ifconfig (claro las más son diferentes ya que son ejemplos) como podemos ver las interfaces son esclavas de bond0 
si todo está funcionando como debe y no ocurre ningún error ( los errores simplemente pueden ser ortográficos sobre el archivo interfaces) ahora configuramos el bridge(puente para las máquinas virtuales). 
​En /etc/network/interfaces agregamos lo siguiente y modificamos unas cositas: 

auto virbr0 
iface virbr0 inet static 
address 192.168.0.2 
netmask 255.255.255.0 
network 192.168.0.0 
broadcast 192.168.0.255 
gateway 192.168.0.1 
​# dns-* options are implemented by the resolvconf package, if 
# installed 
dns-nameservers 192.168.0.1 
dns-search domain.com.pl 
bridge-ports bond0 
bridge_stp off 
bridge_fd 0 
bridge_maxwait 0 

lo agregamos al final del documento ya que al iniciar los servicios levanta en orden como se declaran. Como podemos ver se llama virbr0 esto se debe que al instalar las bridge utils de linux esta nos crea esta interface por defecto, una interface virtual que viene configurada como NAT para las máquinas virtuales, esto es ellas tienen internet pero no podemos acceder a ellas desde internet, esta configuración es para que tengamos a las máquinas virtuales a la misma altura que el host, es decir que puedan tomas ips de el mismo dominio o red. y antes de cerrar y reiniciar el servicio debemos poner la interface bond0 en manual, para que la interface MASTER ahora sea virbr0 y no bond0 (ojo es muy importante sino ambas interfaces tendrán ip y no queremos eso, queremos solo una ip, la cual debe estar en la interface que hace el puenteo con internet. es decir esto debe quedar de la siguiente manera: 

eth0 --->\, 
bond0 --->virbr0 ----> internet. 
eth1 --->/' 

Ahora reiniciamos el servicio: 
$ /etc/init.d/networking restart 
y vemos con ifconfig que solo virbr0 debe tener ip, en este caso la ip que le proporcionamos (192.168.0.2) o simplemente lo podemos dejar como dhcp y comentar todas las líneas con # excepto las que digan bridge. 

Ahora esto debe dejar listo las máquinas virtuales, al momento de crear máquinas virtuales con cualquier método verificar que la interface con puente sea seleccionada.

Ahora bien ya tenemos todo listo ya sabemos instalar las máquinas y cómo hacer que tengan ip ​del mismo nivel que el host. Ahora bien y como administramos la máquina virtual, como accedamos a ella por internet, o incluso de una maquina en LAN, aquí entra el VNC o Virt-viewer, es decir si estamos en una maquina conectada en LAN introducimos :
$ virt-viewer -c qemu+ssh://usuario@ip_del_host/system Domino_de_maquina_virtual
esto nos permite un túnel ssh entre la máquina y el host, para hacer una conexión tipo vnc con el hypervisor, y en específico con el servidor VNC de la máquina virtual, que pasa cuando no sabemos el nombre o dominio de la máquina virtual, para esto nos conectamos al servidor host de máquinas virtuales, ya sea por ssh o telnet, e introducimos el comando :
$ virsh
esto nos abrirá otra Shell la cual es exclusiva de virsh, en ella podemos introducir: 
​$ list --all 
este comando nos mostrara todas las máquinas virtuales instaladas en ese servidor, en la tablita podemos ver 3 cosas, el id de la maquina el cual es un numero entero, el dominio, el cual es el nombre identificador de la máquina virtual, y su estado el cual es encendido/pausado/apagado (start/pause/shutdown), (esta Shell tiene más opciones como borrar modificar etc, simplemente escribirnos help para poder ver todas las opciones,) ahora sabiendo el nombre número y estado podemos trabajar con ese dominio y cerrar la conexión con el host, e conectarnos con virt-viewer (nuevamente usar el virt-viewer es desde la maquina en LAN), el comando para instalarlo es: 
​$ apt-get install virt-viewer (este ya viene incluido en virt-manager) 
Ahora si estamos desde Ubuntu cualquier versión, este ya incluye un visor de escritorios remotos por vnc, se llama vinagre, se encuentra en Internet>visor de escritorios remotos. este se configura también con túnel ssh, es decir al darle conectar seleccionamos vnc, y aparecerán campos a llenar, en el primero donde va anfitrión ponemos 
127.0.0.1:5900 (ojo si el id de la máquina virtual es diferente de cero, entonces hacemos una suma, el puerto 5900 le sumamos el número de id, si es 3 hacemos 5900+3, y quedaría 127.0.0.1:5903) ahora en la casilla usar equipo colocamos la ip del host, en este caso algo como <usuario@ip_del_host> y simplemente le damos conectar, ahora introducimos el password del usuario y listo podremos manipular la máquina virtual si aún no le otorgamos ip fija. (En caso de ip fija es más conveniente instalarle ssh para manipularle de una manera más rápida). Ahora desde Windows solo instalamos un visor de escritorios remotos y lo configuramos de igual manera, y listo. =D.
 

Just Linovaxion Copyright © 2013 - |- Template created by O Pregador - |- Powered by Blogger Templates