OpenSearchのスケーリングとサイズ変更

OpenSearchのスケーリングとサイズ変更による正常なステータスのリストア

このドキュメントでは、割り当てられていないシャードやディスク容量の不足により、OpenSearchクラスタのヘルスが正常ではなくなった後に、リカバリする方法について説明します。

また、クラスタのデータ・ノードをスケール・アップし、ボリューム・サイズを増やす方法についても説明します。Verrazzanoオペレータのボリューム・サイズの変更は、マスター・ノードのボリューム・サイズにも影響するため、StatefulSetのボリューム・サイズの変更に対応するために、追加のステップを実行する必要があります。

最初に、次を実行します:

# Edit the Verrazzano operator
$ kubectl -n verrazzano-system edit deploy verrazzano-operator

その後、次の部分を変更して、ES_DATA_NODE_REPLICASの数字を3に、ES_DATA_STORAGE200Giに増やします:

- name: ES_DATA_NODE_REPLICAS
  value: "3"

- name: ES_DATA_STORAGE
  value: "200"

OpenSearchデータ・ノードのスケーリング

OpenSearchデータ・ノードをスケーリングするには、次の手順に従います。

  1. 新しいデータ・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:
    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/health
    
    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/indices
    
  2. グリーンの状態になったら、元のデータ・ノードの-0ポッドを置き換えます:
    $ kubectl -n verrazzano-system scale deploy verrazzano-operator --replicas=0
    $ kubectl -n verrazzano-system scale deploy verrazzano-monitoring-operator --replicas=0
    $ kubectl -n verrazzano-system delete pod/vmi-system-es-data-0-xxxxxxxxx-xxxx pvc/vmi-system-es-data-0
    $ kubectl -n verrazzano-system scale deploy verrazzano-operator --replicas=1
    $ kubectl -n verrazzano-system scale deploy verrazzano-monitoring-operator --replicas=1
    
  3. 新しいデータ・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:
    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/health
    
    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/indices
    
  4. グリーンの状態になったら、元のデータ・ノードの-1ポッドを置き換えます:
    $ kubectl -n verrazzano-system scale deploy verrazzano-operator --replicas=0
    $ kubectl -n verrazzano-system scale deploy verrazzano-monitoring-operator --replicas=0
    $ kubectl -n verrazzano-system delete pod/vmi-system-es-data-1-xxxxxxxxx-xxxx pvc/vmi-system-es-data-1
    $ kubectl -n verrazzano-system scale deploy verrazzano-operator --replicas=1
    $ kubectl -n verrazzano-system scale deploy verrazzano-monitoring-operator --replicas=1
    
  5. 新しいデータ・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:
    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/health
    
    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/indices
    

これで、3つのデータ・ノードが正常になり、ボリュームが200GBになります。

マスター・ノードのStatefulSetへの対応

次に、マスター・ノードに対応します。StatefulSetでは、ボリュームテンプレートに関連付けられたボリュームのサイズを直接変更できないため、次の手順に従う必要があります:

  1. 最初に、次を実行します:

    $ kubectl -n verrazzano-system scale deploy verrazzano-operator --replicas=0
    $ kubectl -n verrazzano-system scale deploy verrazzano-monitoring-operator --replicas=0
    $ kubectl -n verrazzano-system get sts vmi-system-es-master -o yaml > vmi-system-es-master.yaml
    
  2. 前のコマンドvmi-system-es-master.yamlで作成されたファイルを編集します

    a.次で始まる行を削除します:

    creationTimestamp:
    generation:
    resourceVersion:
    selfLink:
    uid:
    status:
    

    b.statusより下の行をすべて削除します:

    c.次のセクションを編集して、ストレージをVerrazzanoオペレータと同じ値に増やします:

    storage: 200Gi
    

    d.そのファイルを保存します。

  3. 次のコマンドではStatefulSetが削除されますが、関連付けられたポッドは引き続き実行されます。

    $ kubectl -n verrazzano-system delete sts vmi-system-es-master --cascade=orphan
    
  4. 次に、このコマンドを実行して、定義した新しいボリューム・サイズでStatefulSetを再作成します:

    $ kubectl -n verrazzano-system apply -f vmi-system-es-master.yaml
    
  5. 次のステップでは、既存のマスター・ノード・ポッドが一度に1つずつ削除されるため、次のノードに移る前にクラスタが正常になります:

    $ kubectl -n verrazzano-system delete pod/vmi-system-es-master-0 pvc/elasticsearch-master-vmi-system-es-master-0
    
  6. 新しいマスター・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:

    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/health
    
    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/indices
    
  7. クラスタが正常な場合は、次のマスター・ノードに進みます:

    $ kubectl -n verrazzano-system delete pod/vmi-system-es-master-1 pvc/elasticsearch-master-vmi-system-es-master-1
    
  8. 新しいマスター・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:

    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/health
    
    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/indices
    
  9. クラスタが正常な場合は、次のマスター・ノードに進みます:

    $ kubectl -n verrazzano-system delete pod/vmi-system-es-master-2 pvc/elasticsearch-master-vmi-system-es-master-2
    
  10. 新しいマスター・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:

    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/health
    
    $ kubectl -n verrazzano-system exec -it vmi-system-es-master-0 -- curl http://127.0.0.1:9200/_cat/indices
    
  11. クラスタが正常な場合は、オペレータを再スケーリングします:

    $ kubectl -n verrazzano-system scale deploy verrazzano-operator --replicas=1
    $ kubectl -n verrazzano-system scale deploy verrazzano-monitoring-operator --replicas=1
    

Verrazzanoカスタム・リソースの更新

今度はVerrazzano CRを編集し、アップグレード時に、上の変更が上書きされないようにします。次の手順に従います:

  1. Verrazzano CRのネームスペースと名前を取得します:
    $ kubectl get vz -A
    
  2. Verrazzano CRを編集します:
    $ kubectl -n <namespace> edit vz <name>
    
    a.変更して、次の内容を組み込みます:
    spec:
      components:
        elasticsearch:
          installArgs:
          - name: nodes.data.replicas
            value: "3"
          - name: nodes.data.requests.storage
            value: 200Gi
    
    b.変更内容を保存します。

これで、プロセスは完了です。