GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

Microsoft Dynamics AX 2009, Pruebas de Alta Disponibilidad: SQL Server, Application Files, AOS y Cliente AX


Estos días he estado preparando un entorno de Laboratorio de Microsoft Dynamics AX 2009, y como parte de estas tareas, he realizado algunas pruebas básicas de Alta Disponibilidad sobre dicho entorno, focalizadas en SQL Server, los Application Files de Axapta, los servicios AOS, y el Cliente de AX. En esta ocasión, quería aprovechar para presentar las pruebas de Alta Disponibilidad realizadas sobre Microsoft Dynamics AX, así como los resultados obtenidos, de interés para quienes tengan que empezar a pegarse con un entorno de estas características.

Descripción del Escenario

Partimos de una infraestructura básica de Microsoft Dynamics AX 2009, formada por los siguientes elementos y configuraciones:

  • SQL Server. Está corriendo sobre una Máquina Virtual dedicada a SQL Server, denominada VSQL08, ejecutándose sobre un Cluster de Hyper-V.
  • Application Object Server (AOS). Existen dos Máquinas Virtuales dedicadas exclusivamente para AOS, denominadas VAX01 y VAS02, ejecutándose sobre un Cluster de Hyper-V. Estas dos máquinas forman un Cluster AOS sin ningún balanceador de carga dedicado (recordemos que la funcionalidad de Load Balancing de AX es propietaria, y ajena al Network Load Balancing y al Failover Cluster). Además, la máquina VAX01 es la única configurada como Batch Server.
  • Application Files. Los Application Files están montados sobre la Máquina Virtual VAX01, de tal modo, que el AOS de la máquina VAX01 está configurado contra los Application Files de C:\Program Files, mientras que el AOS de la máquina VAX02 está configurado contra los Application Files de un Share existente en la máquina VAX01.
  • Cliente AX. Los Clientes AX, actualmente están montados sobre los propios servidores AOS (está pendiente montarlos sobre servidores Remote Desktop Session Host), es decir, sobre las máquinas VAX01 y VAX02. El Cliente AX de la máquina VAX01 está configurado para atacar al servidor AOS de VAX01 (que es como lo deja la instalación), y el Cliente AX de la máquina VAX02 está configurado para atacar al servidor AOS de VAX02 (que es como lo deja la instalación).

La versión de Sistema Operativo de todas las máquinas del Laboratorio es Windows Server 2008 R2, excepto los controladores de dominio, que actualmente son Windows Server 2003 R2 SP2.

La versión instalada del software es Microsoft Dynamics AX 2009 RTM, es decir, sin ningún Service Pack ni ningún Rollup instalado.

La versión de SQL Server instalada es SQL Server 2008 R2 Cummulative Update 6. El motivo por el que se ha subido a esta versión de SQL Server, tiene origen en ciertas mejoras introducidas en el Cummulative Update 2, en relación con las consultas parametrizadas y el Parameter Sniffing, como se describe en el contenido de los siguientes enlaces:

Este es el scenario de Microsoft Dynamics AX 2009 sobre el que vamos a realizar la siguienter pruebas básicas de Alta Disponibilidad. Empezamos.

Prueba I - Reinicio del servicio del Application Object Server (AOS)

La primera prueba es verificar qué ocurre al reiniciar el servicio de Windows de AOS, ya sea por un simple reinicio de dicho servicio de Windows, o bien, por el reinicio de la máquina (ej: después de un parcheo de Sistema Operativo).

El resultado que hemos obtenido es que después de reiniciar el servicio AOS, al interactuar con un Cliente AX que tenía una sesión abierta sobre el AOS que se acaba de reiniciar, se mostrará un error como el siguiente: The Application Object Server is unavailable. Check your configuration and network connection and try again. A continuación se muestra una pantalla capturada del mismo.

Después de reiniciar el servicio AOS, al interactuar con un Cliente AX que tenía una sesión abierta sobre el AOS que se acaba de reiniciar, se mostrará un error como el siguiente: The Application Object Server is unavailable. Check your configuration and network connection and try again

Click sobre el botón OK (que es el único botón que tenemos), y el Cliente AX se cierra. Tras esto, podemos volver a abrir el Cliente AX, y podremos trabajar con total normalidad (al menos, esa ha sido nuestra experiencia en las pruebas realizadas).

Prueba II - Pérdida de acceso de AOS a los Application Files

La segunda prueba consiste en comprobar qué ocurre al producirse una pérdida de acceso del AOS a los Application Files, algo que nos puede ocurrir por diferentes motivos, ya sean cortes de red, o reinicio de la máquina que hospeda la Shared Folder (incluso en un Failover Cluster, al producirse el Balanceo de Grupo de Recursos que hospeda la Shared Folder de los Application Files, habrá una pequeña pérdida de servicio).

Recordemos, que en nuestro escenario, el AOS de la máquina VAX01 accede a los Application Files en local, mientras que el AOS de la máquina VAX02 accede a una Shared Folder.

En nuestra prueba, con un Cliente AX conectado al AOS de VAX02, simulamos la pérdida de acceso a los Application Files existentes en una Shared Folder de VAX01, aislando dicha Máquina Virtual (a nivel de Red) en Hyper-V. Al seguir trabajando con nuestro Cliente AX, nos encontramos con el siguiente error: Error in file: \\VAX01\AX\Application\appl\DynamicsAxGuilleSQL\axapd.aoi while reading in record = 18B9A80. Windows error: =. Error code: 64 = The specified network name is no longer available. A continuación se muestra una pantalla capturada del error en el Cliente AX.

Con un Cliente AX conectado al AOS de VAX02, simulamos la pérdida de acceso a los Application Files existentes en una Shared Folder de VAX01, aislando dicha Máquina Virtual (a nivel de Red) en Hyper-V. Al seguir trabajando con nuestro Cliente AX, nos encontramos con el siguiente error: Error in file: \\VAX01\AX\Application\appl\DynamicsAxGuilleSQL\axapd.aoi while reading in record = 18B9A80. Windows error: =. Error code: 64 = The specified network name is no longer available

Los resultados de las pruebas realizada, han sido que en algunas ocasiones, una vez recuperado el acceso al Share, al reintentar hemos conseguido aparentemente funcionar correctamente con el Cliente AX, pero al seguir trabajando (ej: mostrando ventanas, introduciendo datos, etc), nos hemos encontrado con errores como el siguiente en el Visor de Sucesos del AOS: EventID 110, Source Dynamics Server 01, Object Server 01: Error while Reading file \\VAX01\AX\Application\appl\DynamicsAxGuilleSQL\axSYSen-us.ali, if the problema persists your administrator should regenérate the corresponding .ali file.

EventID 110, Source Dynamics Server 01, Object Server 01: Error while Reading file \\VAX01\AX\Application\appl\DynamicsAxGuilleSQL\axSYSen-us.ali, if the problema persists your administrator should regenérate the corresponding .ali file

Además, este error del Visor de Sucesos del AOS, lo hemos encontrado incluso en nuevas sesiones del Cliente AX (hasta que reiniciemos el servicio de AOS, momento en que hemos vuelto a la normalidad, aún con lo que implica). Otro detalle, es que al seguir trabajando sin reiniciar el AOS, aleatoriamente, se han producido mensajes de error en el Cliente AX, por ejemplo, al abrir nuevos formularios.

También, en los resultados de las pruebas realizadas, nos hemos encontrado algún caso, que por mucho que le demos a reintentar tras el anterior error de Error in file: \\VAX01\AX\Application\appl\DynamicsAxGuilleSQL\axapd.aoi while reading in record = 18B9A80. Windows error: =. Error code: 64 = The specified network name is no longer available, el Cliente AX nos volvía a mostrar el mismo mensaje de error una y otra vez, hasta que finalmente reiniciamos el servicio AOS, con lo que eso implica.

Prueba III - Configuración del Cliente AX y el Balanceo de Carga de AOS

La siguiente prueba, consiste en detener un servidor AOS, e intentar conectarse a AX con un Cliente AX configurado sólo contra dicho servidor AOS, y evidenciar qué es lo que pasa (está claro, el Cliente AX no se podrá conectar, puesto que el único servidor AOS que conoce no está disponible). Tras esto, configurar el Cliente AX con los dos servidores AOS existentes en el Cluster, y comprobar que el Cliente AX puede conectarse siempre y cuando exista al menos un servidor AOS disponible, indiferentemente de cuál sea el servidor AOS que esté vivo.

Para esta prueba, en la máquina VAX02 detenemos el servicio AOS, y seguidamente desde dicha máquina arrancamos el Cliente AX (que está configurado sólo con el AOS VAX02). Como el servicio AOS está detenido, y el Cliente AX no conoce de más servidores AOS, es incapaz de conectarse, aúnque esté funcionando correctamente el servidor AOS de VAX01. El error de conexión obtenido es el siguiente: Logon error: Connection with the Application Object Server could not be established. A continuación se muestra una pantalla capturada del mismo.

Como el servicio AOS está detenido, y el Cliente AX no conoce de más servidores AOS, es incapaz de conectarse, aúnque esté funcionando correctamente el servidor AOS de VAX01. El error de conexión obtenido es el siguiente: Logon error: Connection with the Application Object Server could not be established

Para corregir esta situación, desde la herramienta administrativa Microsoft Dynamics AX Configuration Utility, seleccionaremos la opción Create configuration, del menú Manage.

Desde la herramienta administrativa Microsoft Dynamics AX Configuration Utility, seleccionaremos la opción Create configuration, del menú Manage

En el diálogo Create Configuration, especificaremos un nombre para la nueva configuración (ej: HAconfig), y especificaremos también qué configuración deseamos utilizar como plantilla para crear la nueva (ej: Active configuration). Click OK.

En el diálogo Create Configuration, especificaremos un nombre para la nueva configuración (ej: HAconfig), y especificaremos también qué configuración deseamos utilizar como plantilla para crear la nueva (ej: Active configuration). Click OK

Creada la nueva configuración de Microsoft Dynamics AX 2009, click en el botón Add de la pestaña Connection, para añadir un nuevo servidor AOS al fichero de configuración de nuestro Cliente AX.

Creada la nueva configuración de Microsoft Dynamics AX 2009, click en el botón Add de la pestaña Connection, para añadir un nuevo servidor AOS al fichero de configuración de nuestro Cliente AX

En el diálogo Add Application Object Server Instance, especificaremos los datos de conexión al servidor AOS deseado, en nuestro caso, los correspondientes al servidor VAX01. Click OK.

En el diálogo Add Application Object Server Instance, especificaremos los datos de conexión al servidor AOS deseado, en nuestro caso, los correspondientes al servidor VAX01. Click OK

Una vez añadido el nuevo servidor AOS, click Apply para guardar y aplicar los cambios.

Una vez añadido el nuevo servidor AOS, click Apply para guardar y aplicar los cambios

Ahora, si ententamos conectarnos, no tendremos ningún problema, y además podremos comprobar que la sesión AX se establecerá contra el servidor VAX01 (ya que el servidor VAX02 está detenido), como se puede apreciar en la barra de título del Cliente AX (ver en la siguiente pantalla capturada).

Ahora, si ententamos conectarnos, no tendremos ningún problema, y además podremos comprobar que la sesión AX se establecerá contra el servidor VAX01 (ya que el servidor VAX02 está detenido)

Prueba IV – Pérdida de acceso de AOS a SQL Server

Otra prueba realizada fue simular la pérdida de acceso de un servidor AOS al SQL Server (ej: deteniendo la instancia de SQL Server, o matando las conexiones y poniendo OffLine la base de datos), algo que podría ocurrir en la práctica, por ejemplo por un balanceo del Grupo de Recursos de SQL Server, o por un parcheo de la instancia de SQL Server. Al realizar esta prueba, con un Cliente AX conectado, al intentar interactuar con el Cliente AX se obtenían errores como: Cannot select a record in LastValue (SysLastValue). UserID: , . Error accessing database connection. A continuación se muestra una pantalla capturada del mismo.

Al intentar interactuar desde un Cliente AX con SQL Server indisponible se obtenían errores como: Cannot select a record in LastValue (SysLastValue). UserID: , . Error accessing database connection

Sin embargo, en la prueba realizada, una vez restablecido el acceso a la base de datos de SQL Server, se pudo continuar trabajando con el Cliente AX sin mayor problema (ej: abrir formularios, informes, etc.).

Conclusiones

Son varias las conclusiones obtenidas de estas pruebas, algunas de ellas:

  • El reinicio de un servicio AOS ha implicado la desconexión de los usuarios que estaban conectados al mismo, que debieron volver a conectarse si deseaban seguir trabajando.
  • La pérdida de acceso a los Application Files desde un servicio AOS, ha implicado que dicho servicio AOS debiera ser reiniciado, y en consecuencia los usuarios que estaban conectados a dicho AOS fueron desconectados y debieron volver a conectarse si deseaban continuar trabajando.
  • La pérdida de acceso a SQL Server desde un servicio AOS, no ha implicado mayor problema, es decir, tras recuperar la disponibilidad del SQL Server se ha podido continuar trabajando satisfactoriamente.
  • La configuración de los Clientes AX en un Cluster de servidores AOS sin servidores de balanceo de carga dedicados, debe incluir todos los servidores AOS existentes, de tal modo, que si un servidor AOS no está disponible, el Cliente AX pueda conectarse a otro servidor AOS.

Evidentemente, la configuración de Alta Disponibilidad de un ERP como Microsoft Dynamics AX 2009, es algo delicada, por el impacto que puede llegar a tener la falta de disponibilidad de un sistema de estas características para una compañía (ej: ¿una empresa de logística en la que no pueden salir los camiones por no poder generarse los Albaranes y Rutas?).

En el presente artículo, tan sólo hemos presentado algunos detalles muy básicos a tener en cuenta en un diseño de Alta Disponibilidad de Microsoft Dynamics AX 2009, resultados de las pruebas realizadas. Existen diferentes alternativas de configuración para los componentes tratados en el presente artículo (y que quedan fuera de alcance del mismo), así como existen otros componentes a tener en cuenta (ej: Workflows), detalles que intentaremos tratar más adelante.

De momento poco más. Como siempre, confío que la lectura resulte de interés.


]
[Autor: GuilleSQL]


Comentarios

risotov - 12/05/2011 (UTC)
Necesito una ayuda, estamos implementando Ax 2009 y da el siguiente error :
"Windows no pudo iniciar Dynamics Ax Object Server
5.0$01-AXS_CSFELIPE_PROD en Equipo local. Para más información, revise registro de eventos del sistema. Si este no es un servicio de Microsoft, póngase en contacto con el proveedor del servicio y haga referencia al codigo de error específico del servcicio 100".
Con éste error llevamos algunos días con Sistema Ax 2009 caido, necesito de alguna ayudita.



Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.