Getting started with Infinispan CR

Guide
  • Red Hat Data Grid 8.2
  • Updated 07 September 2021
  • Published 27 May 2021

Getting started with Infinispan CR

Guide
Red Hat Data Grid 8.2
  • Updated 07 September 2021
  • Published 27 May 2021

After you install Data Grid Operator, learn how to create Data Grid clusters on OpenShift.

Infinispan custom resource (CR)

Data Grid Operator adds a new Custom Resource (CR) of type Infinispan that lets you handle Data Grid clusters as complex units on OpenShift.

Data Grid Operator watches for Infinispan Custom Resources (CR) that you use to instantiate and configure Data Grid clusters and manage OpenShift resources, such as StatefulSets and Services. In this way, the Infinispan CR is your primary interface to Data Grid on OpenShift.

The minimal Infinispan CR is as follows:

apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
  name: example-infinispan
spec:
  replicas: 2
Field Description

apiVersion

Declares the version of the Infinispan API.

kind

Declares the Infinispan CR.

metadata.name

Specifies a name for your Data Grid cluster.

spec.replicas

Specifies the number of pods in your Data Grid cluster.

Creating Data Grid clusters

Use Data Grid Operator to create clusters of two or more Data Grid pods.

Prerequisites
  • Install Data Grid Operator.

  • Have an oc client.

Procedure
  1. Specify the number of Data Grid pods in the cluster with spec.replicas in your Infinispan CR.

    For example, create a cr_minimal.yaml file as follows:

    $ cat > cr_minimal.yaml<<EOF
    apiVersion: infinispan.org/v1
    kind: Infinispan
    metadata:
      name: example-infinispan
    spec:
      replicas: 2
    EOF
  2. Apply your Infinispan CR.

    $ oc apply -f cr_minimal.yaml
  3. Watch Data Grid Operator create the Data Grid pods.

    $ oc get pods -w
    
    NAME                        READY  STATUS              RESTARTS   AGE
    example-infinispan-1        0/1    ContainerCreating   0          4s
    example-infinispan-2        0/1    ContainerCreating   0          4s
    example-infinispan-3        0/1    ContainerCreating   0          5s
    infinispan-operator-0       1/1    Running             0          3m
    example-infinispan-3        1/1    Running             0          8s
    example-infinispan-2        1/1    Running             0          8s
    example-infinispan-1        1/1    Running             0          8s
Next Steps

Try changing the value of replicas: and watching Data Grid Operator scale the cluster up or down.

Verifying Data Grid clusters

Check that Data Grid pods have successfully formed clusters.

Procedure
  • Retrieve the Infinispan CR for Data Grid Operator.

    $ oc get infinispan -o yaml

    The response indicates that Data Grid pods have received clustered views, as in the following example:

    conditions:
      - message: 'View: [example-infinispan-0, example-infinispan-1]'
        status: "True"
        type: wellFormed

Do the following for automated scripts:

$ oc wait --for condition=wellFormed --timeout=240s infinispan/example-infinispan

Alternatively, you can retrieve cluster view from logs as follows:

$ oc logs example-infinispan-0 | grep ISPN000094

INFO  [org.infinispan.CLUSTER] (MSC service thread 1-2) \
ISPN000094: Received new cluster view for channel infinispan: \
[example-infinispan-0|0] (1) [example-infinispan-0]

INFO  [org.infinispan.CLUSTER] (jgroups-3,example-infinispan-0) \
ISPN000094: Received new cluster view for channel infinispan: \
[example-infinispan-0|1] (2) [example-infinispan-0, example-infinispan-1]

Stopping and starting Data Grid clusters

Stop and start Data Grid pods in a graceful, ordered fashion to correctly preserve cluster state.

Clusters of Data Grid service pods must restart with the same number of pods that existed before shutdown. This allows Data Grid to restore the distribution of data across the cluster. After Data Grid Operator fully restarts the cluster you can safely add and remove pods.

Procedure
  1. Change the spec.replicas field to 0 to stop the Data Grid cluster.

    spec:
      replicas: 0
  2. Ensure you have the correct number of pods before you restart the cluster.

    $ oc get infinispan example-infinispan -o=jsonpath='{.status.replicasWantedAtRestart}'
  3. Change the spec.replicas field to the same number of pods to restart the Data Grid cluster.

    spec:
      replicas: 6