Configuración de múltiples servicios Programador

<< 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 >

Configuración de múltiples servicios Programador

Introducción

Cada proyecto de Bizagi necesita un servicio llamado el Programador (incluido por la instalación de Bizagi Engine).

El Programador es un agente ejecutado por Bizagi el cual está a cargo de realizar el mantenimiento del sistema, las tareas fuera de línea -asíncronas- y otros trabajos que se ejecuten en un segundo plano y que pueden ser programados (configurados para ser lanzados periódicamente).

Cuando ejecuta sus procesos en una plataforma .NET, el Programador se instala como servicio de Windows con un nombre que hace referencia al nombre del proyecto específico.

 

El Programador puede ser configurado en clúster para soportar balanceo de cargas de estas tareas que son ejecutadas en segundo plano.

La siguiente imagen ilustra una configuración de alta disponibilidad, donde se involucra un servicio redundante del Programador:

 

Standard_scheduler_setup

Sin embargo, para proyectos que requieren significativamente ejecutar tareas en segundo plano, usted puede instalar y instancias adicionales del Programador, ya sea instalándolas en servidores aparte (nodos del clúster), instalándolas en el mismo servidor, o bajo cualquier combinación de las anteriores:

 

Multiple_scheduler_setup

note_pin

Al configurar múltiples servicios del Programador, nótese que aunque se pueden configurar varias instancias sobre un mismo nodo, siempre será más recomendable configurarlos lo más independientemente posible (de manera que cada nodo utilice su propio servidor dedicado y recursos).

Esto se debe a que así se evitan los puntos únicos de fallo (ante una eventual falla en un nodo, no se afectará más de una instancia del Programador).

Por ejemplo, usted podrá optar por diversos servidores separados ejecutando el Programador (según las necesidades de su proyecto), incluso de manera aislada al Portal de trabajo de Bizagi.

 

¿Por qué configurar múltiples servicios del Programador?

Por defecto, cada proyecto de Bizagi opera con una instancia del servicio Programador.

Sin embargo, usted puede configurar múltiples servicios del Programador y cada uno de estos trabajará en un lote de tareas de segundo plano, de manera paralela.

Esto le permite lograr uno de los siguientes 2 aspectos, o ambos:

 

1. Configuración de un sistema con arquitectura de alta disponibilidad.

En esta configuración, usted puede tener un clúster de Bizagi para contar con capacidades de balanceo de cargas, donde cada nodo es un Bizagi Engine operacional con sus 2 componentes principales: el Portal de Trabajo de Bizagi (web application) y el Programador.

De esta manera, la arquitectura de su sistema evita únicos puntos de fallo (de manera que si un nodo falla, el otro continúe trabajando y no haya interrupción del servicio).

Para más información sobre la configuración del clúster de Bizagi, consulte Administración de Servidores y Clústers.

 

2. Escalabilidad del Programador.

En algunos escenarios y de acuerdo a las características de la implementación del proyecto, el uso de más de un servicio de Programador procesando las tareas en segundo plano, es útil para asegurar que las tareas en segundo plano no permanecen mucho tiempo en una cola.

De acuerdo al análisis específico de la cantidad de tareas que el Programador necesita procesar en un tiempo dado y su SLA esperado (p.e dado por su análisis de dimensionamiento), usted puede instalar y configurar más de una instancia del Programador en el mismo servidor y sin la necesidad de hacer lo mismo para el Portal de Trabajo (escalar únicamente el Programador).

 

 

Antes de empezar

Los pasos que se describen a continuación, partes desde un proyecto ya configurado (Bizagi Engine configurado adecuadamente, sea en clúster o en una arquitectura de servidor único).

Observe que a pesar de tener múltiples servicios del Programador, se distribuirá la carga de las tareas en segundo plano entre ellos, identifique el siguiente tratamiento:

 

1. Sólo un Programador va a ejecutar el mantenimiento del sistema

El mantenimiento del sistema que es llevado a cabo por el Programador, involucra mover la información desde las tablas transaccionales en la base de datos y se lleva a cabo en horas no laborales.

Cuando se tiene múltiples Programadores, es importante predefinir qué Programador estará encargado de ejecutar el mantenimiento del sistema, de tal manera que pueda configurarlo adecuadamente (un Programador "maestro").

 

2. Cada Programador tomará un lote de 10 tareas

Cuando cada servicio de Programador está listo para procesar tareas (de acuerdo a la definición del intervalo del Programador, como se describe en Configuración de parámetros de Bizagi), bloqueará previamente un lote de 10 tareas aunque vaya a trabajar con una a la vez y sea incierto cuánto tiempo tomará procesar la primera (o el lote completo).

El lote de 10 tareas y las tareas en segundo plano procesadas por el Programador en general, siguen el algoritmo de prioridad PEPS (una cola Primero en Entrar, Primero en Salir).

Lo anterior implica que la cantidad de tareas entrantes a procesar en un momento dado (en un periodo de tiempo muy corto), no excede las 10 tareas, entonces es común que el uso de servicios de Programador adiciona no balanceen las cargas entre ellos.

 

 

¿Qué necesita hacer?

Para configurar múltiples servicios del Programador, lleve a cabo los siguientes pasos:

 

1. Instale los servicios del Programador adicionales.

Esto se hace ya sea a través de la opción clústers de la Consola de Administración o a través de una instalación manual.

Se deben tener en cuenta consideraciones de nombramiento especiales cuando instale múltiples servicios del Programador en el mismo servidor.

 

2. Configure los servicios del Programador adicionales.

Recuerde que sólo un Programador debe ejecutar el mantenimiento del sistema.

Las configuraciones adicionales orientadas al número de hilos ejecutados por cada Programador son opcionales para optimizar el paralelismo.

 

 

Procedimiento

Siga estos pasos.

 

1. Instale los servicios del Programador adicionales

Los Programadores adicionales son creados a través de la opción clústers de la Consola de Administración cuando se crea un primer servicio del Programador en dicho servidor.

Para ver más información sobre la configuración del clúster de Bizagi donde incluye un Programador adicional, consulte Administración de Servidores y Clústers.

 

Si está instalado múltiples servicios del Programador en el mismo servidor, lleve a cabo lo siguiente:

 

1.1 Cree una copia (clone) de la carpeta de Scheduler.

Copie, pegue y renombre la carpeta localizada por defecto en C:\Bizagi\Projects\[su_proyecto]\Scheduler\.

Haga esto por cada servicio del Programador adicional que requiera en ese mismo servidor.

En este ejemplo, vamos a tener 3 servicios en el servidor:

 

Schedulers_Folder

 

1.2 Edite los archivos .bat dentro de las nuevas carpetas Scheduler.

Como una mejor práctica, asegúrese de editar todos los archivos .bat para mostrarlos listos cuando se necesiten.

 

Schedulers_bats

 

Edite install.bat, installx64.bat, uninstall.bat y uninstallx64.bat cambiando el nombre del servicio del Programador, de tal manera que es único dentro del mismo servidor:

 

Schedulers_install

 

Observe que en este ejemplo, usamos el mismo nombre seguido de un sufijo numérico.

Para el servicio número tres, tenemos:

 

Schedulers_installother

 

Guarde los cambios cuando termine.

 

1.3 Ejecute el archivo installx64.bat (o install.bat si aplica) para instalar cada nuevo servicio del Programador.

Dé clic en el archivo .bat de instalación de acuerdo a la arquitectura de su sistema para instalar el servicio.

Haga esto por cada servicio del Programador adicional que se desee instalar.

Asegúrese de tener privilegios de administrador y que tuvo una ejecución exitosa:

 

Schedulers_installed

 

Al final, debe ver sus servicios de programador adicionales instalados y listados en sus servicios de Windows:

 

Schedulers_services

 

No inicie los servicios en este punto (necesitara editar primero su configuración).

 

2. Configure los servicios del Programador adicionales

Define cuál de todos los servicios de Programador llevará a cabo las tareas de mantenimiento.

Considere todos sus servicios de Programador dentro de la solución (solo 1 dentro de todos los nodos que pueda tener en un clúster, incluyendo los múltiples servicios que pueda tener en cada nodo).

 

Podemos llamar al primero como el Programador "maestro" y este no requerirá configuraciones adicionales.

Para todos los otros servicios de programador, edite el archivo .config localizado por defecto en C:\BIZAGI\PROJECTS\[your_project]\SchedulerN3\BizAgi.Scheduler.Services.exe.config e incluya la siguiente llave dentro del elemento <appSettings>:

<add key="DisableAsynchCaseClosing" value="1"/>

 

Schedulers_slaves

 

note_pin

Al configurar más de una instancia del Programador en un mismo nodo, es fundamental que también edite la ubicación de la carpeta temporal que usa cada Programador por aparte (para evitar inconvenientes que puedan surgir cuando múltiples servicios intenten acceder a los mismos archivos de manera simultánea).

Para especifica el uso de una carpeta temporal diferente para cada instancia de Programador, edite la llave Project asegurándose se asignar un valor diferente, no repetido, en cada archivo de configuración.

Por ejemplo, usar para 2 instancias en un mismo nodo:

<add key="Project" value="Scheduler1" /> y <add key="Project" value="Scheduler2" />.

 

En este punto puede guardar los cambios e iniciar el servicio del Programador (un inicio libre de errores valida que todos trabajen juntos):

 

Schedulers_startup
 

 

Consideraciones cuando use Actividades Asíncronas

Como una configuración adicional, puede poner a punto los parámetros de procesamiento de los Programadores incluyendo la siguiente llave en sus respectivos archivos .config (dentro del elemento <appSettings>) para configurar el número de hilos que usará cada servicio del Programador:

<add key="MaxThreadsForAsynchWorkitems" value="[numero_de_hilos]"/>

 

Esta llave es útil especialmente cuando su proyecto espera un gran número de ejecuciones de tarea asíncronas, en grandes bloques.

 

note_pin

Cuando seleccione modificar el número de hilos usados por el servicio del Programador (por defecto usa uno), asegúrese de considerar un balanceo apropiado de cargas entre el número de servicios del programador que usará y el numero de hilos que ejecuta cada uno en paralelo.

 

Tenga en cuenta que al modificar este valor debe ser analizado y probado adecuadamente, de acuerdo al número estimado de tareas en segundo plano, las características y el estimado del procesamiento involucrado en cada una de estas tareas y lo más importante, de acuerdo a las características del hardware subyacente (e.g número de núcleos y procesadores de sus servidores).

Se recomienda vigilar este valor y optimizarlo como sea necesario mientras lleve a cabo las pruebas de aceptación para este escenario para usar la distribución más adecuada.

 

Cuando use múltiples servicios del programados para procesar múltiples actividades asíncronas, se recomienda incluir la siguiente llave:

<add key="DisableInterfaceErrorLogger" value="1"/>

 

Esta llave optimiza el desempeño debido a que omite el log en el archivo .csv para los threshold y los timeout y previene los incidentes potenciales cuando múltiples servicios escriben en el mismo archivo.

 

 

 

Notas importantes

Cuando se tienen multiples servicios del programador, todos estos servicios deben ser detenidos antes de hacer un deployment de proceso.

De igual manera, con esta configuración, considere sus múltiples servicios del programados cuando actualice la versión de Bizagi de tal manera que detenga y actualice todos (e.g actualizar el archivo mpas reciente de la librería usada por ellos).