Dedicated storage and scaling up

Use dedicated storage for improved performance, stability, and scalability. Available on Kubernetes and OpenShift. Not available on VMware.

Note: Storage type selection is available on three replica deployments only.
To make an informed choice on which storage type is best for you, first read and understand the OpenSearch concepts that are described in OpenSearch nodes, indices, shards, and replicas.
API Connect provides two OpenSearch storage types:
  • Shared storage

    A single pod provides data storage and OpenSearch cluster management. Shared storage is the only option on a one replica deployment.

  • Dedicated storage
    OpenSearch data storage and cluster management functions are split, and run in separate pods on each worker node:
    • The storage-os-master pod runs an OpenSearch manager eligible node that manages the OpenSearch cluster, but does not store any API event data.
    • The storage pod runs an OpenSearch data node that stores API event data.

    Dedicated storage is the default storage type for three replica deployments.

Dedicated storage facilitates horizontal scaling to support greater analytics data storage and throughput. Add worker nodes and increase the number of storage pod replicas to scale horizontally (you do not need to increase the number of storage-os-master replicas). Dedicated storage also provides greater stability and allows some OpenSearch configuration changes to be made without downtime.
Note: For OpenShift users: The example steps in this topic use the Kubernetes kubectl command. On OpenShift, use the equivalent oc command in its place. If you are using a top-level CR you must edit the APIConnectCluster CR (the top-level CR), instead of directly editing the subsystem CRs. If the subsystem section is not included in the top-level CR, copy and paste the section from the subsystem CR to the APIConnectCluster CR.
The storage type is defined in the analytics CR, in the spec.storage.type section as follows:
  • Shared storage:
      storage:
        type: shared
        shared:
          volumeClaimTemplate:
            storageClassName: $STORAGE_CLASS
            volumeSize: $DATA_VOLUME_SIZE
  • Dedicated storage:
      storage:
        type: dedicated
        shared:
          volumeClaimTemplate:
            storageClassName: $STORAGE_CLASS
            volumeSize: $DATA_VOLUME_SIZE
        master:
          volumeClaimTemplate:
            storageClassName: $STORAGE_CLASS

Changing from shared to dedicated storage

  1. Edit your analytics CR:
    kubectl -n <namespace> edit a7s
  2. Change storage type to dedicated:
      storage:
        type: dedicated
  3. If your environment does not have a default storage class, or want to use a different storage class for your storage-os-master pods, then also add the spec.storage.master section to specify the storage class, for example:
      storage:
        type: dedicated
    ...
        master:
          volumeClaimTemplate:
            storageClassName: local_storage

Changing from dedicated to shared storage

  1. Edit your analytics CR:
    kubectl -n <namespace> edit a7s
  2. Change storage type to shared:
      storage:
        type: shared
  3. Wait until all of your storage pods restart and are in the Ready state.
  4. Edit your analytics CR and remove the spec.storage.master section.
  5. Delete the data-analytics-storage-os-master PVCs:
    kubectl -n <namespace> delete pvc data-analytics-storage-os-master-<integer>

Horizontal scaling with dedicated storage

To take advantage of the horizontal scaling options with dedicated storage, see Horizontal scaling of storage pods.