36.12.2. Elasticsearch フルクラスター再起動の実行
Elasticsearch のメジャーバージョンの変更など、変更プロセス中にデータ整合性が損なわれる危険性がある変更の場合は、フル再起動を推奨します。
openshift_logging_use_ops
が True
に設定される場合、Elasticsearch クラスターへのアクションを ops クラスターに対して繰り返す必要があります。
logging-es-ops
サービスに変更を行う場合は、パッチとして代わりにコンポーネント "es-ops-blocked" および "es-ops" を使用します。
Elasticsearch クラスターが停止しているときに、Elasticsearch クラスターへのすべての外部通信を無効にします。以下を実行して、非クラスターロギングサービス (
logging-es
やlogging-es-ops
など) を編集して、Elasticsearch Pod に一致しないようにします。$ oc patch svc/logging-es -p '{"spec":{"selector":{"component":"es-blocked","provider":"openshift"}}}'
シャードの同期フラッシュを実行して、シャットダウン前にディスクへの書き込みを待機している保留中の操作がないようにします。
$ 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 \ -XPOST 'https://localhost:9200/_flush/synced'
ノードを意図的に停止する際のシャードのバランシングを防止します。
$ 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 scale dc <dc_name> --replicas=0
縮小したら、Elasticsearch クラスターのそれぞれの
dc
についてoc rollout latest
を実行して、最新バージョンのdc
オブジェクトをデプロイします。$ oc rollout latest <dc_name>
新しい Pod がデプロイされます。Pod に 2 つのコンテナーが準備できたら、以下の
dc
に進むことができます。デプロイメントが完了したら、Elasticsearch クラスターのそれぞれの
dc
に対して、ノードのスケールアップを実行します。$ oc scale dc <dc_name> --replicas=1
拡大したら、ES クラスターへのすべての外部通信を有効にします。以下のコマンドを再度実行して、非クラスターロギングサービス (
logging-es
やlogging-es-ops
など) を編集して、Elasticsearch Pod に一致させるようにします。$ oc patch svc/logging-es -p '{"spec":{"selector":{"component":"es","provider":"openshift"}}}'