Elasticsearchのスケーリングとサイズ変更
このドキュメントでは、割り当てられていないシャードやディスク容量の不足により、Elasticsearchクラスタのヘルスが正常ではなくなった後に、リカバリする方法について説明します。
また、クラスタのデータ・ノードをスケール・アップし、ボリューム・サイズを増やす方法についても説明します。Verrazzanoオペレータのボリューム・サイズの変更は、マスター・ノードのボリューム・サイズにも影響するため、StatefulSetのボリューム・サイズの変更に対応するために、追加のステップを実行する必要があります。
最初に、次を実行します:
# Edit the Verrazzano operator
$ kubectl -n verrazzano-system edit deploy verrazzano-operator
その後、次の部分を変更して、ES_DATA_NODE_REPLICAS
の数字を3
に、ES_DATA_STORAGE
を200Gi
に増やします:
- name: ES_DATA_NODE_REPLICAS
value: "3"
- name: ES_DATA_STORAGE
value: "200"
Elasticsearchデータ・ノードのスケーリング
Elasticsearchデータ・ノードをスケーリングするには、次の手順に従います。
- 新しいデータ・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:
$ 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
- グリーンの状態になったら、元のデータ・ノードの
-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
- 新しいデータ・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:
$ 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
- グリーンの状態になったら、元のデータ・ノードの
-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
- 新しいデータ・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:
$ 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では、ボリュームテンプレートに関連付けられたボリュームのサイズを直接変更できないため、次の手順に従う必要があります:
-
最初に、次を実行します:
$ 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
-
前のコマンドvmi-system-es-master.yamlで作成されたファイルを編集します
a.次で始まる行を削除します:
creationTimestamp: generation: resourceVersion: selfLink: uid: status:
b.statusより下の行をすべて削除します:
c.次のセクションを編集して、ストレージをVerrazzanoオペレータと同じ値に増やします:
storage: 200Gi
d.そのファイルを保存します。
-
次のコマンドではStatefulSetが削除されますが、関連付けられたポッドは引き続き実行されます。
$ kubectl -n verrazzano-system delete sts vmi-system-es-master --cascade=orphan
-
次に、このコマンドを実行して、定義した新しいボリューム・サイズでStatefulSetを再作成します:
$ kubectl -n verrazzano-system apply -f vmi-system-es-master.yaml
-
次のステップでは、既存のマスター・ノード・ポッドが一度に1つずつ削除されるため、次のノードに移る前にクラスタが正常になります:
$ kubectl -n verrazzano-system delete pod/vmi-system-es-master-0 pvc/elasticsearch-master-vmi-system-es-master-0
-
新しいマスター・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:
$ 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
-
クラスタが正常な場合は、次のマスター・ノードに進みます:
$ kubectl -n verrazzano-system delete pod/vmi-system-es-master-1 pvc/elasticsearch-master-vmi-system-es-master-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
-
クラスタが正常な場合は、次のマスター・ノードに進みます:
$ kubectl -n verrazzano-system delete pod/vmi-system-es-master-2 pvc/elasticsearch-master-vmi-system-es-master-2
-
新しいマスター・ノード・ポッドの準備が整うまで待機し、クラスタのヘルスを確認します:
$ 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
-
クラスタが正常な場合は、オペレータを再スケーリングします:
$ kubectl -n verrazzano-system scale deploy verrazzano-operator --replicas=1 $ kubectl -n verrazzano-system scale deploy verrazzano-monitoring-operator --replicas=1
Verrazzanoカスタム・リソースの更新
今度はVerrazzano CRを編集し、アップグレード時に、上の変更が上書きされないようにします。次の手順に従います:
- Verrazzano CRのネームスペースと名前を取得します:
$ kubectl get vz -A
- Verrazzano CRを編集します:
a.変更して、次の内容を組み込みます:$ kubectl -n <namespace> edit vz <name>
b.変更内容を保存します。spec: components: elasticsearch: installArgs: - name: nodes.data.replicas value: "3" - name: nodes.data.requests.storage value: 200Gi
これで、プロセスは完了です。