Configurar el planificador para ejecutar un trabajo en una instancia o un miembro de clúster

Puede configurar el planificador de HCL Commerce para ejecutar un trabajo en una instancia o miembro de clúster de HCL Commerce en particular. Puede resultar útil si desea dedicar un servidor a trabajos planificados.

Por qué y cuándo se efectúa esta tarea

Para aislar un trabajo planificado para un miembro de clúster o una instancia específicos:
  • Modifique los servidores de aplicaciones que ejecutan la instancia de HCL Commerce para proporcionar al planificador un identificador exclusivo.
  • Cree o actualice un trabajo planificado para que se ejecute en una única instancia de HCL Commerce.

Para identificar exclusivamente cada proceso de servidor que ejecuta HCL Commerce, es necesario el siguiente parámetro JVM: com.ibm.commerce.scheduler.SchedulerHostName

El valor debe ser exclusivo en todos los servidores que ejecutan la instancia de HCL Commerce. Esto le permitirá crear un trabajo planificado que se ejecute en un servidor determinado del clúster. Un valor recomendado sería: node name. server name. Será único en toda la celda.

Este valor se puede especificar utilizando la WebSphere Application Server Administrative Console y especificando esta propiedad de sistema en los valores de JVM de la aplicación de HCL Commerce:

Para crear un trabajo que se ejecute en un host determinado, cuando llame al mandato AddJob para crear el nuevo trabajo de planificación, especifique el parámetro de host y utilice el valor que identifica exclusivamente el proceso del planificador que ha de ejecutar el trabajo planificado.

Si desea cambiar manualmente un trabajo existente, actualice la columna SCCHOST en la tabla SCHCONFIG que corresponda al trabajo que desee ejecutar en una instancia determinada. Cuando modifique la columna SCCHOST, asegúrese de que el valor se ha especificado en minúsculas. Por motivos de rendimiento, el planificador supone que el parámetro de host se especificará en minúsculas. El mandato AddJob deja en automáticamente en minúsculas el valor de host, pero no hay nada en la base de datos para mantener esta limitación.

Procedimiento

  • En un entorno de desarrollo o de prueba, para configurar el planificador para que ejecute un trabajo en un host, realice los pasos siguientes para cada nodo del clúster:
    1. Abra la WebSphere Application Server Administrative Console.
    2. Seleccione Servidores > Servidores de aplicaciones.
    3. Seleccione el nombre de Transaction server. Por ejemplo, server1.
    4. En el panel Servidores de aplicación, en la cabecera Infraestructura de servidor, seleccione Java y gestión de proceso > Definición de proceso.
    5. En el panel Definición de proceso, en la cabecera Propiedades adicionales, seleccione Java Virtual Machine.
    6. En la ventana del medio, en la derecha, en la cabecera Propiedades adicionales, seleccione Propiedades personalizadas.
    7. Pulse New. Se abrirá una nueva página para que añada otras propiedades de JVM.
    8. En el campo Nombre, introduzca com.ibm.commerce.scheduler.SchedulerHostName.
    9. En el campo Valor, escriba el identificador exclusivo de la instancia del planificador en este proceso Java.
    10. En el campo Descripción, entre el parámetro de nombre de host para que lo utilice esta instancia del planificador.
  • En los entornos de producción, para configurar el programador a fin de que ejecute un trabajo en un host, haga lo siguiente para cada nodo del clúster:
    Añada una variable de entorno al contenedor Docker del nodo. El nombre de la variable es SCHEDULER_ID, y su valor es el identificador exclusivo de la instancia del planificador. Por ejemplo, a continuación se muestra cómo declarar la variable en Docker Compose:
    version: "2"
    services:
    
      app:
        image: ts-app:latest
        environment:
          - SCHEDULER_ID=host1
  • Para una implementación de Kubernetes, se necesitan pasos adicionales para establecer valores exclusivos SCHEDULER_ID para distintas instancias Transaction server.
    1. Obtenga el paquete Git HCL Commerce o modifique el origen existente.

      Para obtener más información sobre cómo obtener los archivos HCL Commerce más recientes, consulte HCL Commerce eAssemblies.

    2. Abra el directorio hcl-commerce-helmchart\stable\hcl-commerce\templates\ y localice el archivo ts-app.yaml.
    3. Cree una copia del archivo. Por ejemplo, ts-app-scheduler1.yaml.
    4. Abra el archivo para editarlo.
      • Añada la variable de entorno SCHEDULER_ID y asigne un valor exclusivo para cada pod.
        env:
        
        - name: "SCHEDULER_ID"
          value: "SCHEDULER_1"
      • Modifique la siguiente línea.
        name: {{ $.Values.common.tenant }}{{ $.Values.common.environmentName}}{{ $envType }}$.Values.tsApp.name
        A:
        name: {{ $.Values.common.tenant }}{{ $.Values.common.environmentName}}{{ $envType }}$.Values.tsApp.name-scheduler
    5. Guarde y cierre el archivo.
    6. Repita este proceso para cada pod del planificador.
    7. Implemente o vuelva a implementar el gráfico Helm HCL Commerce con estas modificaciones.

      Con esta modificación, se despliegan los pods del planificador adicionales, con ID de planificador exclusivos. A continuación, puede planificar trabajos para un determinado nodo haciendo referencia a SCHEDULER_ID.

Resultados

El planificador está ahora configurado para ejecutar trabajos en nodos o pods determinados del clúster.