Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/08/2007, 13:00
Avatar de Gabo77
Gabo77
 
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 18 años, 4 meses
Puntos: 6
Aplicacion en Cluster

Hola Buen día!

En la empresa donde laboro tenemos unas aplicaciones que usan endemoniadamente una BD ya sea para escritura o para lectura.

Les descriobo el entorno de la BD:

Este servidor es un Cluster y el nodo virtual lo identificaré como BD, los 2 nodos con los que cuenta son BD1 y BD2. El nodo BD2 es el que actualmente se encuentra activo, el BD1 está simplemente como soporte por si el BD2 tuviese problemas. Los dos nodos tienen Discos Duros de High Performance (De acceso I/O muy rápido) úbicados en una SAN de alta disponibilidad conectados con fibra, por lo que el FailOver se realiza ajusando la configuración deshabilitandolos de un Server y habilitandolos en el otro y despues se ajusta el nodo virtual para que apunte al nodo que será ahora el activo.

Las bases de datos están repartidas de la siguiente manera.

1.- Todas las bases de datos que mas demanda de I/O tienen, se encuentran en un recurso de la SAN.
2.- Todas las bases de datos de las aplicaciones WEB (de baja demanda de I/O) se encuentran en otro recurso de la SAN
3.- Todas los archivos de Log de todas las Bases de Datos se encuentran en otro recurso de la SAN
4.- Todas las bases de datos de Sistema (Master y TempDb) se encuentran en otro recurso de la SAN
5.- Todas las aplicaciones operativas se encuentran en otro recurso de la SAN
6.- El Sistema Operativo (Windows 2003 Server) se encuentran en C:\ (Recurso que no es de la SAN sino local al servidor)

Bien, ahora describire el entorno de las aplicaciones:

Actualmente se manejan dos esquemas por que asi se requirió, les comento.

1.- Un servidor AP1 tiene aplicaciones WEB que hacen uso de diferentes Bases de Datos que se encuentran en el Servidor BD(Cluster)
2.- En el Nodo BD2 (Nodo activo) del cluster se encuentran Scheduladas (programadas en el Scheduled Task de Windows) varias aplicaciones exe de VB6.0, (5 aplicaciones que en adelante llamaré MWI, estas son las que mas consumo de I/O a la BD tienen)

Problema

Bien, todo parece funcionar correctamente, el problema que tengo es que frecuentemente las aplicaciones sin decir "agua va!" empiezan a tener problemas de comunicación con la BD, presentando mensajes de error que van desde "No transaction is active" hasta "SQL Server Does Not Exists Or Access Denied" presentando ocasionalmente errores tambien del tipo "Type Mismatch" lo curioso del caso, es que estas mismas aplicaciones del MWI estaban antes ejecutandose tranquilamente en un Servidor Stand Alone, y no estaban presentando problema alguno, todo empezó cuando migramos al servidor Cluster.

Cuando hicimos esta migración los responsables del soporte al servidor nos comentaron que la migracion debería ser transparente para nuestras aplicaciones, ya que el Cluster esta diseñado para funjir como un servidor cualquiera, mas allá del High Availability para el que fue diseñado, pero que las conexiones a la Base y recursos debieran ser transparentes.

puntualmente un problema con las aplicaciones del MWI, es que tienen un tratamiento de error el cual sigue el siguiente flujo.

1.- Si al haber un error en el procesamiento de los datos, el MWI toma el error y llama a una función que debe registrar el error en una Tabla de Log en SQL diseñada para el seguimiento de estas aplicaciones (Errores, eventos, Warnings, etc...). Al intentar grabar el error en SQL tambien ocurre una falla.

2.- Como MWI no pudo grabar el error original en la tabla de Log, intenta grabarlo en el EventLog de Windows (ese que se examina con el EventViewer), pero desafortunadamente tampoco puede.

3.- Como MWI no pudo grabar el error original en el EventLog de Windows, intenta grabarlo en un archivo plano, que se encuentra en la misma ruta que el EXE del MWI que se está ejecutando, y tampoco lo logra.

4.- Como MWI no pudo grabar el error original en el Archivo Plano, el único recurso qu le queda para no perder la huella del error, es levantar un PopUp, el cual obviamente detiene a la aplicacion y y el ScheduledTask no levanta otra instancia hasta que se cierre esta, y esta no se cerrará hasta que alguien le de click a aceptar del error.

De esta secuencia lo que me preocupa es que posiblemente muchos de los errores que arriba les comenta de SQL, puedan ser derivados de algun problema de recursos del servidor, ya que si la aplicación no pudo escribir en un simple y llano txt, algo debe andar mal en la distribucion de recursos del servidor que deriva en errores comunes del SQL, o al menos esa es mi percepción.

Como comentario al margen, se supone que este nuevo servidor Cluster es 2 veces mas potente que el Standalone que teníamos antes, sus carácteristicas elementales son:

a) 4 Procesadores Dual Core de 3.4 Gh
b) 8 Gb de Memoria fisica
c) 2 LanCards de 2GB (para comunicacion de procesos) y 1 tarjeta de red por fibra (Para comunicación con la SAN)

Una duda que quería plantarles al respecto es: Uds saben si al armar una aplicación VB que se conecta a una BD es necesario hacer algo mas cuando se trata de un Servidor de BD en Cluster que si se tratara de un Stand Alone?


Muchas Gracias a quien se tome la molestia de leer!!


Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....