Utilizar un repositorio externo para la sesión

<< Click to Display Table of Contents >>

Navigation:  Bizagi Engine > Administración del Sistema Bizagi > Configuración del servidor Bizagi > Configuración de Bizagi Engine .NET > Administración de Servidores y Clústers >

Utilizar un repositorio externo para la sesión

 

Introducción

Cuando se utiliza una configuración de clúster para el servidor de Bizagi, por defecto, cada uno de los múltiples nodos que hacen parte de ese clúster almacenarán los datos de la sesión del usuario.

Sin embargo y principalmente para contar con una mayor capacidad de escalabilidad y mejor confiabilidad, se puede optar por delegar las sesiones de manera externa a un repositorio centralizado,

Podrá hacerlo para que Bizagi utilice la funcionalidad de una base de datos para sesión (session state database), o un servidor para sesión (session state server), tal y como lo soporta el framework de .NET de Microsoft.

Generalmente, el uso de un session state server debe proveer mejores tiempos de respuesta, sin embargo el uso de una session state database soporta de mejor manera una alta concurrencia.

 

Nótese que además de proveer un esquema de alta disponibilidad, el uso de un clúster de Bizagi le permite a su solución poder escalarse fácilmente.

Para mayor información sobre la configuración de clúster para el servidor, consulte la Administración de servidores y clústers.

 

 

¿Porqué puede ayudar esta alternativa?

Esta alternativa es útil para propósitos de escalabilidad, específicamente para optimizar el procesamiento de los nodos con procesos con los cuales se espera producir una gran cantidad de casos o actividades realizadas por un mismo conjunto de usuarios, sobre un periodo corto de tiempo.

Al tener las sesiones delegadas a un repositorio central, el procesamiento de las solicitudes se distribuye de la manera más eficiente según lo soporte el algoritmo de su balanceador de cargas, y se realiza a lo largo de todos los nodos de su clúster sin necesidad de usar una configuración por afinidad de sesiones (cuando se atan las sesiones a un nodo específico para procesar todas las solicitudes de una misma sesión de usuario, conocido como sticky sessions).

Además de la escalabilidad, esta alternativa también es más confiable para el IIS dado que las sesiones almacenadas externamente (p.e directamente en SQL Server), permitirán que no finalicen ante reinicios o reciclaje de recursos del ASP.NET, o incluso ante reinicios de SQL Server.

 

 

Prerrequisitos

El uso de un repositorio externo para almacenar sesiones se apoya en la funcionalidad ofrecida por el framework de .NET Microsoft.

Esto implica que esta alternativa aplica cuando su proyecto utiliza IIS y una base de datos SQL Server de Microsoft (en caso de usar una session state database).

Tenga presente que para el uso de la session state database, se recomiendan ediciones Standard o Enterprise de SQL Server.

Para mayor información sobre esta funcionalidad, consulte https://msdn.microsoft.com/en-us/library/ms178586.aspx.

 

 

Lo que debe hacerse

En esta sección, ilustraremos cómo configurar el uso de una session state database, en cuyo caso, se llevan a cabo los siguientes pasos:

 

1. Crear la base de datos para almacenar sesiones en su instancia de SQL Server.

Este paso se realiza por medio de un utilitario que provee el mismo framework de .NET.

 

2. Configurar su Portal de trabajo de Bizagi para utilizar dicha base de datos.

Este paso puede realizarse mediante las opciones gráficas del IIS Manager, o directamente editando el archivo web.config del Portal de trabajo.

 

note_pin

Si por el contrario usted desea utilizar un session state server, entonces no necesita crear una base de datos (no hace falta seguir el paso #1), y en el paso #2 se necesita configurar el Portal de trabajo de Bizagi para que use un servidor en vez de la base de datos.

 

Procedimiento

Siga estos pasos.

 

1.  Crear la base de datos para almacenar sesiones en su instancia de SQL Server.

1.1. Abra una consola de comandos con permisos de administrador y navegue a la ruta de instalación del framework de .NET.

Se recomienda hacer uso del utilitario que provee el framework de .NET en su versión 4.0 full (dado que esta versión de framework es la que usa el Portal de trabajo de Bizagi).

Para asegurar lo anterior, podrá incluso realizar estos pasos desde su servidor de Bizagi (que por defecto, ya debe contar con la versión 4.0 full para una arquitectura de 64 bits instalada en: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\).

 

1.2. Ejecute el utilitario (llamado aspnet_regsql.exe) usando los parámetros que permiten crear las tablas y esquema de la base de datos para almacenar sesiones, y al mismo tiempo definiendo una base de datos personalizada (custom).

Utilice el siguiente comando:

aspnet_regsql.exe -S [INSTANCIA_SQL] -E -ssadd -sstype c -d [NOMBRE_BD]

 

sessionstate1_installdb

Considere:

[INSTANCIA_SQL]: Es el nombre de la instancia de SQL Server. Recuerde utilizar el backslash para instancias nombradas.

[NOMBRE_BD]: Es el nombre de dará a la base de datos personalizada.

 

Nótese que el uso de -E accede con las credenciales del usuario actual que ejecuta la consola de comandos, las cuáles serán válidas si se permiten como administrador en la instancia -permisos de sysadmin (dado que a través de la autenticación mixta en SQL Server se soporta autenticación Windows también). En caso de que no desee utilizar las credenciales del usuario actual, utilice los parámetros -U y -P (para especificar el nombre de usuario y contraseña respectivamente).

Para conocer a detalle sobre los parámetros de aspnet_regsql, consulte: https://msdn.microsoft.com/en-us/library/ms178586.aspx.

 

note_pin

Recuerde que esta alternativa de usar una session state database es recomendada para ediciones Standard o Enterprise de SQL Server.

Usted puede previamente verificar su edición de SQL Server ejecutando select @@version:

 

sessionstate1_sqledition

 

Una vez que la ejecución del comando haya finalizado, podrá verificar directamente sobre la instancia SQL Server que se haya creado la base de datos personalizada, con las tablas ASPStateTempApplications y ASPStateTempSessions:

 

sessionstate1_tablescreated

 

note_pin

Nótese que se recomienda apoyarse en una base de datos personalizada porque esta le permite tener los datos de la sesión de manera persistente -sin afectarse por reinicios de la base de datos (a diferencia de cuando se usa tempdb), y porque de esta manera se logra un configuración más independiente (a diferencia de cuando se utiliza la base de datos ASPState la cual aplica por instancia).

 

2. Configurar su Portal de trabajo de Bizagi para utilizar dicha base de datos.

Nótese que esta configuración puede realizarse directamente editando el archivo web.config del Portal de trabajo de Bizagi, o a través de las opciones del IIS Manager (las cuales presentan opciones gráficas para estos ajustes que modifican el archivo web.config).

 

Para modificar directamente el archivo web.config considere que por defecto éste se ubica en C:\Bizagi\Projects\WidgetContest\WebApplication\, y que usted deberá editar los atributos del elemento <sessionState>, de manera que quede con estos valores:

mode: SQLServer

allowCustomSqlDatabase: true

timeout: 20 (valor por defecto)

cookieless: false

sqlConnectionString: Data Source=[INSTANCIA_SQL];Initial Catalog=[Nombre_BD];User ID=[LOGIN];Password=[CONTRASEÑA];

 

Para la conexión que especifica sqlConnectionString, considere asignar estos valores:

[INSTANCIA_SQL]: Es el nombre de la instancia de SQL Server. Recuerde utilizar el backslash para instancias nombradas.

[NOMBRE_BD]: Es el nombre de dará a la base de datos personalizada, justo como se creó por medio del uso de aspnet_regsql.exe en los pasos anteriores.

[LOGIN]: La cuenta de login para la conexión.

[CONTRASEÑA]: La contraseña para ese login.

 

Por ejemplo:

<sessionState allowCustomSqlDatabase="true" cookieless="UseCookies" mode="SQLServer" sqlConnectionString="Server=MyServer\SQL2012;Database=MySessionsDB;User ID=MySQLAccount;Password=MySQLAccount" timeout="20" />

 

sessionstate2_webconfig

 

Para realizar el ajuste mediante las opciones gráficas del IIS Manager, ubique el sitio específico de su Portal de trabajo de Bizagi, y dé clic sobre Session state:

 

sessionstate2_iisman1

 

Asegúrese de marcar el uso del modo SQLServer, y especificar detalles adicionales.

 

note_pin

Si por el contrario usted desea utilizar un session state server, seleccione el modo State Server.

 

Nótese que usted deberá habilitar el uso de bases de datos personalizadas (marcando la casilla de Enable custom database):

 

sessionstate2_iisman2

 

Nótese que por defecto, un Time-out de 20 minutos se especifica.

 

Para la conexión configurada en Connection String, usted podrá editar el valor directamente o usar el botón Create... para especificar datos de la conexión de manera asistida (recomendado).

Al hacerlo, considere:

Server: Es el nombre de la instancia de SQL Server. Recuerde utilizar el backslash para instancias nombradas.

Database: Es el nombre de dará a la base de datos personalizada, justo como se creó por medio del uso de aspnet_regsql.exe en los pasos anteriores.

Credentials: Utilice la opción de especificar las credenciales (Specify credentials). Utilice el botón Set... para ingresar tanto la cuenta de login como su contraseña.

 

sessionstate2_iisman3

 

Dé clic en Ok para almacenar los cambios.

También podrá verificar después los cambios en el archivo web.config.

 

Importante

Al realizar modificaciones o personalizaciones de secciones en el archivo web.config, como por ejemplo la anterior, una de estas 2 alternativas debe considerarse al momento de realizar una actualización de versión de Bizagi:

 

1. Si se lleva a cabo por medio de Bizagi Management Console, usted deberá re-configurar y verificar que dicha configuración esté aplicada aún después de la actualización.

Nótese que por defecto, la actualización realizada por Bizagi Management Console no considera las modificaciones hechas a los archivos originales o la estructura de archivos (por lo que se sobreescriben cambios).

 

2. Podrá optar por llevar a cabo una actualización de versión manual a su vez (sin utilizar Bizagi Management Console).

De hacerlo así, asegúrese de considerar todos los componentes y archivos relevantes de la solución, para que pueda reemplazarlos por los archivos nuevos del Portal de trabajo y del servicio Programador, mientras conserve las modificaciones personalizadas (como en este caso, la ya mencionada configuración del uso del session state database).