Mostrando entradas con la etiqueta Virtuemart. Mostrar todas las entradas
Mostrando entradas con la etiqueta Virtuemart. Mostrar todas las entradas

HOW-TO eBusiness Cluster (Parte 3 - Fin)

REPLICACION DE MySQL.-




IN ANOTHER LIFEEEEEE !

CONFIGURACIONES DEL DNS.-



Editar el archivo /etc/bind/named.conf.local para que quede así:

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

// Aqui van mis zonas tanto directa como inversa

zone "tacruel.net" {
type master;
file "/etc/bind/zones/db.tacruel.net";
};

// zona gay
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.168.1";
};


Ingresamos nuestro forwarding /etc/bind/named.conf.options y nos queda asi:

//

// Do any local configuration here

//


// Consider adding the 1918 zones here, if they are not used in your

// organization

//include "/etc/bind/zones.rfc1918";


// Aqui van mis zonas tanto directa como inversa


zone "tacruel.net" {

type master;

file "/etc/bind/zones/db.tacruel.net";

};

// zona gay

zone "1.168.192.in-addr.arpa" {

type master;

file "/etc/bind/zones/db.192.168.1";

};



Editamos el archivo de las interfaces /etc/network/interfaces:

# 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
#allow-hotplug eth0
#iface eth0 inet static

auto eth0
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1



Al archivo /etc/resolv.conf se le agrega la siguiente información:

domain tacruel.net
search tacruel.net
nameserver 192.168.1.101


Después se crea las zonas e inicio con la resolucion directa que es nuestro archivo /etc/bind/zones/db.tacruel.net y su contenido es:

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA tacruel.net. root.tacruel.net. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS tacruel.net.
@ IN A 192.168.1.101
www IN CNAME tacruel.net.
host1 IN CNAME www
host2 IN CNAME www
@ IN AAAA ::1


Ahora nuestra zona gay en el archivo /etc/bind/zones/db.192.168.1 y su contenido es:

;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA tacruel.net. root.tacruel.net. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS tacruel.net.
101 IN PTR tacruel.net.
11 IN PTR host1.tacruel.net.
8 IN PTR host2.tacruel.net.


El archivo /etc/hosts debe tener la siguiente configuración:

#127.0.0.1 localhost

#127.0.1.1 nodo2.home nodo2


#Aquí nuestro cluster

127.0.0.1 localhost.localdomain localhost

192.168.1.101 ns.tacruel.net ns

192.168.1.11 host1.tacruel.net host1

192.168.1.8 host2.tacruel.net host2


# The following lines are desirable for IPv6 capable hosts

::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts



SCRIPT PARA EL ARRANQUE DE PROCESOS AL INICIO DE SESION:

#! /bin/sh
# /etc/init.d/lanzapen
#

# Inicio Script del Cluster hecho por PEN y la mara.-

case "$1" in
start)
ifconfig eth1 172.16.1.1 up
pen 443 -l /var/log/pen.log -p /var/log/pen.pid -w /var/www/html/pen.html -h -f -d -e 192.168.1.8:443 192.168.1.11:443

;;
esac

exit 0

Por cierto:
  • Solo utilizamos la inicialización del PEN ya que no necesitaremos detener, reiniciar ni recargar el servicio debido a que PEN tomo el control de la terminal y utilizado de la forma en que lo hemos puesto no termina de arrancar el sistema.-
  • Si quieres saber más de como crear scripts sh, bueno googlea.-

UN PAR DE TONTERAS:

  • Para facilitarnos un poco las cosas al estar trabajando en equipo (ja!) utilizamos SSH, si quieres saber más dale una mirada a esto.
  • También travesiamos vinagre.-
  • Si lo hacen en Bleach y Naruto, por qué no nosotros ? .... si .... relleno:


Marely chateando con Sofie, Toño viendo .... documentales ?


Qué que queeee!


Uno de los pocos momentos que si estabamos disque trabajando


Digan no al tequila, al menos los lunes


Para la primera defensa, creo que he visto demasiado Anime & KDoramas


Trabajando o descargando películas ?


3 noches sin dormir


Subida clandestinamente, no le digan a Marely


Bueno, hasta aquí.-

HOW-TO eBusiness Cluster (Parte 2)

joomla! + Virtuemart.-




Joomla! es una herramienta de desarrollo web para crear sitios de contenido (CMS). Es una aplicación de código abierto construida mayoritariamente en PHP bajo una licencia GPL. Este administrador de contenidos puede trabajar en Internet o intranets y requiere de una base de datos MySQL, así como preferiblemente de un servidor HTTP Apache.-

Virtuemart es un módulo para joomla! con el cual se facilita la creación de un sitio dedicado al comercio electrónico.-

Como dijimos al final de la Parte 1, no vamos a reinventar la rueda:

Después de todo lo anterior, agregamos una nueva plantilla para el sitio y empezamos a levantar inventario. Generamos:
  • Casas Editoras.-
  • Libros por Casas Editoras.-

PEN.-



PEN es un balanceador de carga basado en TCP, brinda un servicio de balanceo de carga de trabajo cuando detecta un servidor abajo. Su función es brindar alta disponibilidad. Pen nos va a servir para tener una web siempre disponible. Actua como proxy entre 2 servidores puede servir de forma temporal para dar servicio web en un dominio determinado sin necesidad de redireccionar DNS. Cuando PEN detecta un servidor inalcanzable inmediatamente escanea en busca de otro servidor activo y elige el que se uso mas recientemente.-

Penlogd
  • El balanceo de carga produce muchos logs, pero penlog nos permite guardar en un solo archivo todos los log producidos por el web server.-

Webstats
  • La opcion -w puede ser usada para obtener estadisticas de señales en formato de html.-

Portabilidad
  • PEN puede ser utilizado en los siguientes sistemas FreeBSD, Linux, HP-UX y Solaris. A la vez corre en Windows, MacOS X.-

Para instalar:

#aptitude install pen

Esta es la linea ocupada para ejecutar el balanceo para el puerto 80:

#pen 80 -l /var/log/pen.log -p /var/log/pen.pid -w /var/www/html/pen.html -h -f -d -e 192.168.1.11:80 192.168.1.8:80

Para el puerto 443:

#pen 443 -l /var/log/pen.log -p /var/log/pen.pid -w /var/www/html/pen.html -h -f -d -e 192.168.1.11:443 192.168.1.8:443

PEN puede soportar hasta 15 servidores.-

VRRPD.-




VRRPD es la implementación del protocolo de VRRP, su finalidad principal es un protocolo que elige un servidor master en una LAN y un master de respuesta con una IP virtual. Para configurar el protocolo se siguieron los siguientes pasos:

#aptitude install vrrpd

Agregar la siguiente linea en la maquina del servidor maestro:

#vrrpd –i eth0 –v 10 – p 200 192.168.1.111

En el esclavo se agrega la linea seria la siguiente:

#vrrpd - i eth0 –v 10 – p 100 192.168.1.111

Después se debe asegurar que los dos servidores tengan la IP virtual 192.168.1.111

#ip addr show eth0

Con la opción ps ax podemos ver el estado del demonio

#ps ax

Para más detalles de los parámetros:

#man vrrpd


OpenSSL.-



Primero que nada, abri una consola como root. Para ver si esta instalado el OpenSSL digita:

#apt-cache search openssl

Si no lo esta:

#apt-get install openssl

Ya instalado, podemos librementre crear los certificados digitales.-

Creación de una CA (Autoridad Certificadora):

Para comenzar nos situamos en el directorio root de nuestro servidor web, en nuestro caso /var/www/app, creamos una carpeta ya que los comandos que ejecutaremos generan archivos y es prudente tenerlos ordenados:

host1:/var/www/app# mkdir CA
host1:/var/www/app# cd CA

Con el siguiente comando creamos un CA para certificados X509 con algoritmo de encriptación rsa de 2048 bytes. Con el -keyout le indicamos que la clave privada de nuestra CA se almacene en el fichero mipri.pem y la clave publica -out en el mipub.pem. Seguidamente nos pedirá un password para nuestra CA y se lo damos (Apuntarlo o memorizarlo ya que sirve para los próximos pasos). También nos pedirá una serie de datos por ejemplo país, nombre de empresa, que nos identifica como CA. Observar que le he añadido el parámetro -days con 3650, de esta manera indicamos que la CA no expire en 10 años.

host1:/var/www/app/CA# openssl req -x509 -newkey rsa:2048 -keyout mipri.pem -days 3650 -out mipub.pem

Creando el certificado digital:

Podremos hacer tantos como queramos los pasos son los mismos, ahora bien: Primero generamos la clave privada del que sera nuestro certificado digital: Con esto generamos la clave privada la cual tendrá un algoritmo de cifrado triple des (-des3) de 2048 y se almacenara en el archivo (-out) serv-priv.pem y con el comando -passout pass: indicamos la passfrase para nuestra clave privada yo le he puesto dlinux. Teniendo en cuenta que el algoritmo solo se puede hackear a fuerza de verga es importante tener en cuenta que entre mas digitos tenga la clave mas tiempo tardaran e descifrarla.

host1:/var/www/app/CA# openssl genrsa -des3 -out serv-priv.pem -passout pass:dlinux 2048


Generar la petición de certificado:

Ahora vamos a generar la petición del certificado, antes de hacer un certificado , hay que hacer una petición donde se define el propietario del certificado.

host1:/var/www/app/CA# openssl req -new -subj "/DC=tacruel.net/OU=net/CN=tacruel" -key serv-priv.pem -passin pass:dlinux -out petic-certificado-serv.pem

Observamos que le indicamos (req -new) con lo que indicamos que es una petición con el parámetro -subj le indicamos a quien pertenece el certificado, para ello ponemos entre comillas cada uno de los apartados que identifican separados por /. A la petición le indicamos que usara la clave privada que hemos hecho en el anterior comando -key serv-priv.pem y le indicamos el password que usemos en el anterior (-passing pass):dlinux y como salida (-out) le indicamos que genere el siguiente archivo petic-certificado-serv.perm

Emitir el certificado:

Finalmente ya podemos emitir el certificado. Para definir las características de un certificado openssl dispone del directorio /etc/ssl donde hay un archivo openssl.cnf con lo que podemos definir las características. Pero hay una forma mas simple de darle estas características, mediante la generación de un archivo de configuración por parte nuestra. Por tanto con nano generamos un archivo que contenga lo siguiente:

basicConstraints = critical,CA:FALSE
extendedKeyUsage = serverAuth

Y lo guardamos por ejemplo con el nombre config1.txt , en el archivo le indicamos el basicConstraints =critical,CA:FALSE para que cumpla con el X509v3 y con la RFC3280 (dogma de fé). Y también le indicamos que el certificado servirá para un servidor con lo siguiente extendedKeyUsage=serverAuth, por ejemplo un servidor web que es lo que queremos certificar. Y ahora con el archivo hecho, hacemos el certificado:

host1:/var/www/app/CA# openssl x509 -CA mipub.pem -CAkey mipri.pem -req -in petic-certificado-serv.pem -days 3650 -extfile config1.txt -sha1 -CAcreateserial -out servidor-cert.pem

Indicamos que sera un certificado del tipo x509 cuya CA (-CA) esta definida en el archivo mipub.pem (lo hemos hecho lo primero) y que usa como clave privada (-CAkey) el archivo mipri.pem y que el certificado a generar tendrá las especificaciones definidas en el apartado anterior (-req -in) las cuales están en el archivo de petición petic-certificado-serv.pem.

El certificado tendrá una validez de diez años (-days 3650). Y le indicamos que el certificado es para un servidor, como esto lo tenemos en nuestro archivo de configuración se lo indicamos poniendo -extfile y nuestro archivo config1.txt y utilizaremos un algoritmo de cifrado SHA (-sha1). Luego como es nuestro primer certificado le indicamos que la CA lo numere con lo cual le pondrá 2 , ya que el 1 es la CA -CAcreateserial y finalmente le decimos donde generar el certificado (-out) en el archivo servidor-cert.pem

Una vez lanzado el comando nos pedirá el password de la CA que lo emite y el archivo se generará.

Ciertas configuraciones:

Copien los archivos servidor-cert.pem y servidor-priv.pem en /etc/apache2/ssl si no existe el directorio ssl hay que crearlo, solo sirve para guardar esto en algún lado y que apache sepa de él. Al apache2 hay que indicarle que también escuche por el puerto 443 que es el del Secure Socket Layer (ssl) para eso se modifica el fichero /etc/apache2/ports.conf para que ponga:

Listen 80
Listen 443





Ahora tenemos que decirle a apache que soporte el ssl para ello:

host1:/var/www/app/CA# a2enmod ssl

Y con esto ya solo nos queda configurar nuestro fichero de sites-availables donde tenemos nuestra configuración para poder acceder a nuestro site mediante https.

Editamos el archivo /etc/apache2/sites-availables/default y creamos el virtual host adecuado para el puerto 443:



Poniendo en el DocumentRoot el lugar donde tenemos nuestra pagina. Le indicamos que utilizamos certificados (SSLEngine on) y le decimos donde tiene que que leer el certificado (SSLCertificateFile) y la clave privada de este (SSLCertificateKeyFile).-

Ahora solo nos queda parar y arrancar nuestro apache:

host1:/etc/apache2/sites-enabled# /etc/init.d/apache2 stop
Stopping web server: apache2 ... waiting .
host1:/etc/apache2/sites-enabled# /etc/init.d/apache2 start
Starting web server: apache2Apache/2.2.9 mod_ssl/2.2.9 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.
Server tacruel.net:443 (RSA)
Enter pass phrase:
OK: Pass Phrase Dialog successful.
.
host1:/etc/apache2/sites-enabled#

Se observa que les pide password , el cual es el password del certificado.

Evitar petición de password:

Como se vio en el paso anterior, siempre nos va a pedir el password el cual es el password de nuestro certificado.Como lo del password puede ser un problema ya que ahora si la maquina se arranca y cuando arranque el apache, se quedara parado hasta metáis el password. La solución chafa (la que adoptamos) es ponerle en el archivo /etc/sites-availables/default una directiva (fuera de los virtual host):

SSLPassPhraseDialog exec:/etc/apache2/claveputa

Donde claveputa es un archivo bash que creamos nosotros para que se invoque cuando apache arranque y le proporcione la clave. El contenido del archivo es:

#!/bin/sh
echo dlinux

Observar que simplemente es un echo con el password. Ahora solo le tienen que dar permiso de ejecución:

#chmod 700 claveputa

En la Parte 3 veremos:
  • Replicación de MySQL.-
  • Configuraciones del DNS.-
  • Script para para el control de los demonios.-
  • Un par de tonteras.-

Bueno, hasta aquí.-

HOW-TO eBusiness Cluster (Parte 1)



EL PROYECTO.-

Un vendedor de libros ha descubierto que el comercio electrónico es una gran opción para vender sus productos por medio de la internet, para lo cual contrata los servicios de Ingenieros de Sistemas Informáticos para levantar una aplicación que le permita tener su negocio on line en todo momento trabajando con usuarios y sesiones. El propósito de este vendedor es no perder ninguna venta por lo cual requiere un proxy o un cluster que le brinde Alta Disponibilidad para que en caso de tener problemas en un servidor no sea necesario detener las ventas sino más bien que el otro servidor dentro del proxy o cluster tome las riendas de la transacción.

LA METODOLOGÍA.-

Para realizar este proyecto se ha utilizado un cluster con un equipo de entrada y dos servidores otorgando los servicios necesarios para el funcionamiento de este. En el equipo principal se encuentra levantado el comando PEN sirviendo como demonio, el cual es el encargado de recibir las peticiones de DNS por medio del puerto 443 (que es donde escucha https, es decir http seguro) y redireccionarlas al equipo inmediato el cual es un servidor (al cual denominamos maestro) que mantiene corriendo la aplicación del e-bussines por medio de Apache2, PHP5, joomla!, Virtuemart y MySQL. Y para el caso de perder la comunicación con este contamos con un servidor (al cual denominamos esclavo) que contiene los mismos servicios que el maestro corriendo de forma auxiliar al mismo. El encargado de hacer este cambio en caso de error es nuestro "demonio" PEN corriendo en el equipo de entrada.-

El balanceo de carga en nuestro cluster esta a cargo de VRRPD, un demonio basado en el Protocolo de Redireccionamiento de Ruteo Virtual originario de algunos equipos de CISCO.-

EL ENTORNO.-



LAMP Maestro:
  • Intel Celeron 2GHz
  • 512MB RAM
  • 60GB HD
  • Debian GNU/Linux 5.0 "Lenny" kernel 2.6.26
  • Apache 2.2.9
  • PHP 5.2.6-1
  • MySQL 5.0.51a-24
  • MySQL Administrator 1.2.12
  • joomla! 1.5.10
  • Virtuemart 1.1.3
  • OpenSSL 0.9.8g
  • VRRPD 1.0
  • SendMail 8.14.3
  • nano 2.0.0
  • Dia 0.96.1

LAMP Esclavo:
  • Intel Centrino M 1.73GHz
  • 512MB RAM
  • 60GB HD
  • Debian GNU/Linux 6.0 "Squeeze" kernel 2.6.26
  • Apache 2.2.11
  • PHP 5.2.9-4
  • MySQL 5.0.51a-24
  • MySQL Administrator 1.2.12
  • joomla! 1.5.10
  • Virtuemart 1.1.3
  • OpenSSL 0.9.8g
  • VRRPD 1.0
  • SendMail 8.14.3
  • nano 2.0.0

Proxy:
  • Intel Pentium 1.6GHz
  • 256MB RAM
  • 60GB HD
  • Debian GNU/Linux 5.0 "Lenny" kernel 2.6.26 (sin entorno gráfico)
  • PEN 0.18.0-1
  • Bind9

1 Switch CentreCom MR815T
Cables UTP Cat-5

LA RED.-



LA MARA.-



Por cierto:
  • Son las 3:23 a.m.
  • De izquierda a derecha: Omar Guzmán, Antonio Escobar y Marely Cárcamo.
  • No hay cigarros !!!!

INSTALACION DEL LAMP.-

Para que reinventar la rueda, mira esta perfecta guía

En la Parte 2 veremos la instalación y configuración de:
  • joomla! + Virtuemart
  • PEN
  • VRRPD
  • OpenSSL

Bueno, hasta aquí.-