User Tools

Site Tools


netquest_documentation

This is an old revision of the document!


Descripcion

Documentación de la prueba para netquest.

Bitacora

pre

  • Configurado JVM para jboss con los siguientes parámetros:
-Xms128m -Xmx1024m -XX:MaxPermSize=256m

27/02

  • Configuro Mysql en el jboss como DefaultDS
  • Configuro Mysql en el jboss para JMS, elimino hypersonic
  • La aplicación está configurada para usar un DS propio con credenciales de root.

28/02

  • Configuro el DS de la aplicación en JBOSS con unas credenciales con menos privilegios
  • Reempaqueto la aplicación sin el DS para que use la de JBOSS
  • Sincronizo JBOSS en el nodo2
  • Sincronizo MySQL en el nodo2
  • Sincronizo /etc en el nodo2
  • Comienzo la configuración de réplica en mysql.

29/02

Objetivo:

  • Configurar la réplica de mysql
  • Eliminar nginx de rh y compilarlo con los módulos “nginx-sticky-module”, “nginx-upstream-jvm-route” y “nginx-cache-purge”
  • Configurar nginx con los 2 servidores de jboss en el pool

DONE:

  • Configurar réplica para la bbdd “exam”
  • Eliminado nginx, instalada la última versión “from source”:
nginx version: nginx/1.0.12
built by gcc 4.4.5 20110214 (Red Hat 4.4.5-6) (GCC) 
TLS SNI support enabled
  • Done, configurados los 2 jboss'es, cada uno es backup del otro, en modo failover, solo se pasarán peticiones al otro nodo si tenemos el jboss local caído.

01/03

Objetivo:

  • Configurar caché y el purgado de nginx

DONE:

  • Caché de nginx configurada, para purgar ficheros de la caché se ha de realizar lo siguiente:
http://server01/purge/dinamico

Si la URL que queremos purgar es:

http://server01/dinamico

La limpieza de caché se debe realizar desde la ip local (localhost), limitado en config.

02/03

Objetivo:

  • Instalar y configurar MysqlProxy

DONE:

  • Instalado, actualmente el datasource de “exam” accede mediante el mysql-proxy, también se puede probar accediendo a cualquiera de los nodos mediante:
mysql --port=4040 --host=server02 -p -u exam
mysql --port=4040 --host=server01 -p -u exam

0x/03

Objetivo:

  • Cambios en las ips de los nodos.
  • AWS balancing

DONE:

Management

Resumen de las acciones principales del sistema:

nginx

start

/etc/init.d/nginx start

stop

/etc/init.d/nginx stop

restart

/etc/init.d/nginx restart

Limpieza de la caché

Sin usar el método recomendado (por URL), podemos limpiar la caché mediante:

rm -fr /dev/shm/nginx*
/etc/init.d/nginx restart

Configuración

La configuración ha de realizarse en los directorios:

  • /etc/nginx
  • /etc/nginx/conf.d
  • /etc/nginx/sites

mysql

start

/etc/init.d/mysqld start

stop

/etc/init.d/mysqld stop

restart

/etc/init.d/mysqld restart

Acceso al "cluster"

El acceso debería realizarse mediante el servicio mysql-proxy o en su defecto por el nodo1 del servicio para no romper la réplica. Para conectarse:

mysql -u USUARIO -p -P4040 -h server01

Replica

Conectados al/los nodos SLAVE.

Parar

stop slave;

Arrancar

start slave;

Status

show slave status \G

Master status

Conectado al nodo MASTER:

show master status \G

mysql-proxy

start

/etc/init.d/MySQL-Proxy start

stop

/etc/init.d/MySQL-Proxy stop

restart

/etc/init.d/MySQL-Proxy stop && sleep 5 && /etc/init.d/MySQL-Proxy start

jboss

start

/etc/init.d/jboss start

stop

/etc/init.d/jboss stop

restart

/etc/init.d/jboss stop && sleep 5 && /etc/init.d/jboss start

Arranque frío

Para un cold start, se ha programado un script:

/root/netquest_cluster_ip_updater.sh

Que realiza las siguientes acciones:

  • Actualiza el fichero de hosts local con la nueva ip local y las ips locales del resto de los nodos.
  • Da la opción de reiniciar los servicios asociados:
    • mysql
    • mysql-proxy
    • jboss
    • nginx

Nota adicional: Comprobar el estado de la réplica de mysql después de un inicio en frío.

Objetivo Final (WIP)

Descripción de la arquitectura

De arriba a abajo:

  • Mediante las herramientas de Amazon se balancearán los webservers
  • Ambos webservers están configurados de manera que ataquen a ambos jboss pero priorizando el jboss local, de tal forma que el 2º JBOSS se usará en caso de caída.
  • Para obtener el máximo rendimiento de nginx, hemos de separar contenido estático de dinámico, de tal forma que el estático siempre se servirá desde nginx.
  • Adicionalmente se usará lo máximo posible la caché de nginx para reducir en la medida de lo posible los accesos a JBOSS. Se proporcionará a los programadores de un sistema de borrado de caché desde la propia aplicación.
  • Hay que concretar con el equipo de desarrollo donde sí y donde no se puede instalar la caché dentro de la aplicación web.
  • Para evitar el uso del sistema de clustering de jboss se debería tener en cuenta por parte de los programadores un sistema de recuperación de la sesión del cliente desde BBDD para que en caso de caída de un nodo, al balancearse la carga al otro, este sea capaz de comprobar mediante la COOKIE del cliente, las credenciales del mismo y que ya estaba logado.
  • En ambos nodos habrá un mysqlproxy de tal forma que cada jboss atacará al mysqlproxy local y este realizará el balanceo de querys de la forma que se puede ver en el esquema.
netquest_documentation.1330707500.txt.gz · Last modified: 2012/03/02 16:58 by dodger