36.12.2. 执行 Elasticsearch 完整集群重启
当更改 Elasticsearch 的主要版本或其他更改时,建议您完全重启,这可能会在更改过程中造成数据完整性。
如果 openshift_logging_use_ops
配置为 True
,则需要对 ops 集群重复执行 Elasticsearch 集群的所有操作。
对 logging-es-ops
服务进行更改时,使用 "es-ops-blocked" 和 "es-ops" in patch
禁用 Elasticsearch 集群的所有外部通信,同时禁用它。编辑非集群日志记录服务(如
logging-es
和logging-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 有两个就绪的容器后,您可以继续到下一个
dc
。部署完成后,对于 Elasticsearch 集群都有每个
dc
,扩展节点:$ oc scale dc <dc_name> --replicas=1
扩展完成后,启用到 ES 集群的所有外部通信。编辑非集群日志记录服务(如
logging-es
和logging-ops
)来再次运行 Elasticsearch Pod:$ oc patch svc/logging-es -p '{"spec":{"selector":{"component":"es","provider":"openshift"}}}'