OpenSearch

OpenSearchクラスタ構成のカスタマイズ方法

Verrazzanoは、OpenSearchクラスタの2つのクラスタ・トポロジをサポートしています:

  • 単一ノード・クラスタ(単一ノードによってマスター・ロール、取込みロールおよびデータ・ロールが実行されます)。
  • 個別のマスター・ノード、データ・ノードおよび取込みノードを含むマルチノード・クラスタ構成。

「インストール・プロファイル」では、Verrazzanoによって提供されるデフォルトのOpenSearchクラスタ構成について説明します。

クラスタ・トポロジの構成

Verrazzanoカスタム・リソースのspec.components.opensearch.nodesフィールドを使用して、OpenSearchクラスタのノード特性をカスタマイズできます。Verrazzanoをインストールまたはアップグレードするときに、このフィールドを使用すると、ノード・グループを使用してOpenSearchクラスタを定義できます。

次の例は、devインストール・プロファイルのOpenSearch構成(1Giのメモリーおよびエフェメラル・ストレージを含む単一ノード・クラスタ)をオーバーライドして、永続ストレージを含むマルチノード・クラスタ(3つのマスター・ノードおよび3つのデータ/取込み組合せノード)を使用するようになります。

apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: custom-opensearch-example
spec:
  profile: dev
  components:
    opensearch:
      nodes:
        - name: master
          replicas: 3
          roles:
            - master
          storage:
            size: 50Gi
          resources:
            requests:
              memory: 1.5Gi
        - name: data-ingest
          replicas: 3
          roles:
            - data
            - ingest
          storage:
            size: 100Gi
          resources:
            requests:
              memory: 1Gi
        # Override the default node groups because we are providing our own topology.
        - name: es-master
          replicas: 0
        - name: es-data
          replicas: 0
        - name: es-ingest
          replicas: 0

前述の構成のverrazzano-systemネームスペース内のポッドおよび永続ボリュームをリストすると、予期されるノードが適切なデータ・ボリュームで実行されていることが示されます

$ kubectl get pvc,pod -l verrazzano-component=opensearch -n verrazzano-system

# Sample output
NAME                                                             STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/elasticsearch-master-vmi-system-master-0   Bound    pvc-9ace042a-dd68-4975-816d-f2ca0dc4d9d8   50Gi       RWO            standard       5m22s
persistentvolumeclaim/elasticsearch-master-vmi-system-master-1   Bound    pvc-8bf68c2c-235e-4bd5-8741-5a5cd3453934   50Gi       RWO            standard       5m21s
persistentvolumeclaim/elasticsearch-master-vmi-system-master-2   Bound    pvc-da8a48b1-5762-4669-98f0-8479f30043fc   50Gi       RWO            standard       5m21s
persistentvolumeclaim/vmi-system-data-ingest                     Bound    pvc-7ad9f275-632b-4aac-b7bf-c5115215937c   100Gi      RWO            standard       5m23s
persistentvolumeclaim/vmi-system-data-ingest-1                   Bound    pvc-8a293e51-2c20-4cae-916b-1ce46a780403   100Gi      RWO            standard       5m23s
persistentvolumeclaim/vmi-system-data-ingest-2                   Bound    pvc-0025fcef-1d8c-4307-977c-3921545c6730   100Gi      RWO            standard       5m22s

NAME                                                   READY   STATUS     RESTARTS   AGE
pod/coherence-operator-6ffb6bbd4d-bpssc                1/1     Running    1          8m2s
pod/fluentd-ndshl                                      2/2     Running    0          5m51s
pod/oam-kubernetes-runtime-85cfd899d8-z9gv6            1/1     Running    0          8m14s
pod/verrazzano-application-operator-5fbcdf6655-72tw9   1/1     Running    0          7m49s
pod/verrazzano-authproxy-5f9d479455-5bvvt              2/2     Running    0          7m43s
pod/verrazzano-console-5b857d7b47-djbrk                2/2     Running    0          5m51s
pod/verrazzano-monitoring-operator-b4b446567-pgnfw     2/2     Running    0          5m51s
pod/vmi-system-data-ingest-0-5485dcd95d-rkhvk          2/2     Running    0          5m21s
pod/vmi-system-data-ingest-1-8d7db6489-kdhbv           2/2     Running    1          5m21s
pod/vmi-system-data-ingest-2-699d6bdd9c-z7nzx          2/2     Running    0          5m21s
pod/vmi-system-grafana-7947cdd84b-b7mks                2/2     Running    0          5m21s
pod/vmi-system-kiali-6c7bd6658b-d2zq9                  2/2     Running    0          5m37s
pod/vmi-system-kibana-7d47f65dfc-zhjxp                 2/2     Running    0          5m21s
pod/vmi-system-master-0                                2/2     Running    0          5m21s
pod/vmi-system-master-1                                2/2     Running    0          5m21s
pod/vmi-system-master-2                                2/2     Running    0          5m21s
pod/weblogic-operator-666b548749-lj66t                 2/2     Running    0          7m48s

コマンドkubectl describe pod -n verrazzano-system vmi-system-data-ingest-0-5485dcd95d-rkhvkを実行すると、リクエストされたメモリー量が表示されます

Containers:
  es-data:
    ...
    Requests:
      memory:   1Gi

索引状態管理ポリシーの構成

索引状態管理ポリシーは、索引内のデータを管理するようにOpenSearchを構成します。ポリシーを使用すると、古いデータを自動的にロールオーバーおよびプルーニングすることができ、OpenSearchクラスタでのディスク領域の不足を防ぎます。

次のポリシー例は、パターンmy-app-*に一致する索引を管理するようにOpenSearchを構成します。これらの索引のデータは14日ごとに自動的にプルーニングされ、索引が次の条件の少なくとも1つを満たすとロールオーバーされます:

  • 3日以上経過しています
  • 1,000件以上のドキュメントが含まれています
  • サイズが10GB以上です
apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: custom-opensearch-example
spec:
  profile: dev
  components:
    opensearch:
      policies:
        - policyName: my-app
          indexPattern: my-app-*
          minIndexAge: 14d
          rollover:
            minIndexAge: 3d
            minDocCount: 1000
            minSize: 10Gb

OpenSearchおよびOpenSearchダッシュボードのプラグインのインストール

Verrazzanoは、Verrazzanoカスタム・リソースでプラグインを提供することで、OpenSearchおよびOpenSearch Dashboardのプラグインのインストールをサポートしています。OpenSearchのプラグインをインストールするには、Verrazzanoカスタム・リソースでフィールドspec.components.opensearch.pluginsを定義します。

次のVerrazzanoカスタム・リソースの例では、OpenSearchのanalysis-stempelおよびopensearch-anomaly-detectionプラグインをインストールします:

apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: custom-opensearch-example
spec:
  profile: dev
  components:
    opensearch:
      plugins:
        enabled: true
        installList:
          - analysis-stempel
          - https://repo1.maven.org/maven2/org/opensearch/plugin/opensearch-anomaly-detection/2.2.0.0/opensearch-anomaly-detection-2.2.0.0.zip

plugins.installListでプラグインを定義するには、次の3つの方法があります:

OpenSearchダッシュボードでは、Verrazzanoカスタム・リソースでフィールドspec.components.opensearch-dashboards.pluginsを定義することで、プラグインを指定できます。

OpenSearchダッシュボードのプラグインをインストールするVerrazzanoカスタム・リソースの例を次に示します:

apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: custom-opensearch-example
spec:
  profile: dev
  components:
    opensearchDashboards:
      plugins:
        enabled: true
        installList:
          - <URL to OpenSearch Dashboard plugin ZIP file>