Scaling deployments

The following sections describe the options available for managing IBM Process Mining and IBM Task Mining scaling to satisfy many concurrent requests in a heavily loaded environment.

Horizontal scaling is accomplished by changing the number of replicas in the IBM Process Mining and IBM Task Mining component's instance. A replica is a copy of a pod that already contains a running service. By having multiple replicas of a pod, you can ensure that your instance has the available resources to handle increasing load

About this task

All of the IBM Process Mining and IBM Task Mining services can be scaled up or down in a cluster, except for the database pods.

To allow web sessions to work properly, Application Services (<instance name>-service-analytics, <instance name>-service-bpa, <instance name>-service-dr, <instance name>-service-engine, <instance name>-service-um, <instance name>-service-web, <instance name>-service-tm-nginx) have a configured session affinity = ClientIP. It is necessary to ensure that the network infrastructure commits the correct propagation of the browser workstation's IP address to the services.

If a deployment is shown publicly when you change the number of replicas, the service distributes the traffic to the available pods during the update. An available pod is an instance that can be accessed by users.

Procedure

  1. Set the scale value by using the replicas parameter in the custom resources.yaml file that the operator used to install IBM Process Mining and IBM Task Mining. For example, to change the scaling, use the following yaml:
    apiVersion: processmining.ibm.com/v1beta1
    kind: ProcessMining
    metadata:
      name: pm1
      namespace: processmining
    spec:
      version : 2.2.0
      license:
        accept: true
        cloudPak: IBM Cloud Pak for Business Automation
      defaultStorageClassName: rook-cephfs
      processmining:
        storage:
          database:
            external:
              connectionstring: ''
              credential:
                passwordkey: externalpostgrespassword
                secretname: pm-external-postgres-secret
              database: processmining
              host: $EXT_DB_HOSTNAME
              port: 5432
              user: pm_user
        replicas:
          nginx : 1
          discovery: 2
          analytics: 2
          bpa: 2
          dr: 1
          usermanagement: 1
          monitoring: 1
          acf_batch_sap_p2p: 1
          acf_eureka: 1
      taskmining: 
        install: true
        storage:
          database:
            external:
              connectionstring: ''
              credential:
                passwordkey: externalpostgrespassword
                secretname: tm-external-postgres-secret
              database: taskmining
              host: $EXT_DB_HOSTNAME
              port: 5432
              schema: tm
              user: taskminer        
        replicas:
          nginx: 1
          webapp: 2
          taskbuilder: 1
          taskprocessor: 1
    
  2. Modify the existing containers by running the kubectl apply command on the custom_resources.yaml file.
kubectl apply -f custom_resources.yaml

Results

The following values are updated after the deployment was scaled.

DESIRED
The number of wanted replicas of a pod, which you define when you create the deployment.
CURRENT
The number of replicas currently running.
READY
The number of replicas that are available to the users compared to the DESIRED state.
AVAILABLE
The number of replicas that are available to the users.