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_ops
が True
に設定される場合、Elasticsearch クラスターへのアクションを ops クラスターに対して繰り返す必要があります。
ノードを意図的に停止する際のシャードのバランシングを防止します。
$ 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" } }'
完了したら、Elasticsearch クラスターのそれぞれの
dc
についてoc rollout latest
を実行して、最新バージョンのdc
オブジェクトをデプロイします。$ oc rollout latest <dc_name>
新しい Pod がデプロイされます。Pod に 2 つのコンテナーが準備できたら、以下の
dc
に進むことができます。クラスターのすべての 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" } }'