Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

36.12. Elasticsearch の手動ロールアウト

OpenShift Container Platform 3.7 では、集計ロギングスタックで Elasticsearch Deployment Config オブジェクトが更新され、Config Change Trigger が除外されました。このため、dc を変更しても自動ロールアウトは実行されなくなります。これは、Elasticsearch クラスターで意図しない再起動を回避するものでしたが、クラスターメンバーの再起動時にシャードのリバランスが過剰に発生しまう可能性があります。

このセクションでは、ローリング再起動フル再起動 の 2 つの再起動手順を説明します。ローリング再起動はダウンタイムを発生させずに Elasticsearch クラスターに適切な変更を適用し (3 つのマスターが設定されている場合)、フル再起動は既存データを損なわずに大規模な変更を安全に適用します。

36.12.1. Elasticsearch ローリングクラスター再起動の実行

以下のいずれかの変更を行う場合は、ローリング再起動を推奨します。

  • Elasticsearch Pod の実行で再起動が必要なノード
  • logging-elasticsearch configmap
  • logging-es-* デプロイメント設定
  • 新規イメージのデプロイメントまたはアップグレード

これは今後推奨される再起動ポリシーになります。

注記

openshift_logging_use_opsTrue に設定される場合、Elasticsearch クラスターへのアクションを ops クラスターに対して繰り返す必要があります。

  1. ノードを意図的に停止する際のシャードのバランシングを防止します。

    $ oc exec -c elasticsearch <any_es_pod_in_the_cluster> -- \
              curl -s \
              --cacert /etc/elasticsearch/secret/admin-ca \
              --cert /etc/elasticsearch/secret/admin-cert \
              --key /etc/elasticsearch/secret/admin-key \
              -XPUT 'https://localhost:9200/_cluster/settings' \
              -d '{ "transient": { "cluster.routing.allocation.enable" : "none" } }'
  2. 完了したら、Elasticsearch クラスターのそれぞれの dc について oc rollout latest を実行して、最新バージョンの dc オブジェクトをデプロイします。

    $ oc rollout latest <dc_name>

    新しい Pod がデプロイされます。Pod に 2 つのコンテナーが準備できたら、以下の dc に進むことができます。

  3. クラスターのすべての dc がロールアウトされたら、シャードバランシングを再度有効にします。

    $ oc exec -c elasticsearch <any_es_pod_in_the_cluster> -- \
              curl -s \
              --cacert /etc/elasticsearch/secret/admin-ca \
              --cert /etc/elasticsearch/secret/admin-cert \
              --key /etc/elasticsearch/secret/admin-key \
              -XPUT 'https://localhost:9200/_cluster/settings' \
              -d '{ "transient": { "cluster.routing.allocation.enable" : "all" } }'