36.12. 手动 Elasticsearch Rollouts
自 OpenShift Container Platform 3.7 起,Aggregated Logging 堆栈更新了 Elasticsearch Deployment Config 对象,使其不再有 Config Change Trigger,这意味着对 dc
的任何更改都不会造成自动推出部署。这是为了防止 Elasticsearch 集群中发生意外重启,这可能会在成员重启时造成过量分片重新平衡。
本节将介绍两个重启步骤: rolling-restart 和 full-restart。如果滚动重启会在没有停机时间的情况下对 Elasticsearch 集群进行适当的更改(配置了三个 master),并完全重启会安全地应用现有数据的主要更改。
36.12.1. 执行 Elasticsearch Rolling 集群重启
当进行了以下任何更改时,建议使用滚动重启:
- 运行 Elasticsearch Pod 的节点需要重启
- logging-elasticsearch configmap
- logging-es-* 部署配置
- 新镜像部署或升级
这是推荐的重启策略。
如果 openshift_logging_use_ops
配置为 True
,则需要对 ops 集群重复执行 Elasticsearch 集群的所有操作。
防止在有意关闭节点时进行分片平衡:
$ 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 有两个就绪的容器后,您可以继续到下一个
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" } }'