您可以通過Elasticsearch(簡稱ES)的health API查看集群的健康狀態,并根據健康狀態排查并規避可能存在的風險。

前提條件

已創建阿里云ES實例,創建方法請參見創建阿里云Elasticsearch實例

操作步驟

  1. 登錄目標阿里云ES實例的Kibana控制臺。
    具體操作步驟請參見登錄Kibana控制臺
  2. 在左側導航欄,單擊Dev Tools(開發工具)。
  3. Console中,執行以下命令查看集群的健康狀態。
    GET /_cluster/health
    正常情況下,返回如下結果。
    {
      "cluster_name" : "es-cn-45xxxxxxxxxxxxk1q",
      "status" : "green",
      "timed_out" : false,
      "number_of_nodes" : 2,
      "number_of_data_nodes" : 2,
      "active_primary_shards" : 18,
      "active_shards" : 36,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 0,
      "delayed_unassigned_shards" : 0,
      "number_of_pending_tasks" : 0,
      "number_of_in_flight_fetch" : 0,
      "task_max_waiting_in_queue_millis" : 0,
      "active_shards_percent_as_number" : 100.0
    }
    status表示集群的健康狀態,取值為greenyellowred
    集群健康狀態 狀態 說明
    red 不是所有的主要分片都可用。 表示該集群中存在不可用的主分片。可以理解為某個或者某幾個索引存在主分片丟失的情況。
    yellow 所有主要分片可用,但不是所有副本分片都可用。 表示該集群中某個或者某幾個索引存在副本分片存在丟失的情況。
    green 所有主要分片和副本分片都可用。 表示集群中所有的索引都很健康,不存在丟失的分片。
    如果您的集群處于yellow狀態,此時進行密碼修改、集群升配等集群變更操作時周期會比較長。建議修復集群狀態為green后,再進行操作。造成yellow狀態的原因是索引存在副本分片丟失的情況,需要查找并修復集群中有問題的索引,命令如下:
    • 索引狀態查詢命令
      curl -u <用戶名>:<密碼> http://<host>:9200/_cat/indices                   
      通過以上命令,您可以查找有問題的索引名稱,即狀態為yellow的索引名稱。有問題的索引
    • 索引狀態修復命令

      當您設置的索引副本數大于當前節點數減1時,會導致集群處于yellow狀態。以下代碼僅針對此情況的索引的副本數進行調整。例如,您購買的集群節點數為3,但是個別索引副本數也為3,這樣集群就會處于yellow狀態。此時設置問題索引副本數為2即可。

      curl -XPUT -u <用戶名>:<密碼> http://<host>:9200/<有問題的索引名稱>/_settings -H 'Content-Type: application/json' -d '{"index":{"number_of_replicas":(<當前節點數-1>)}'              
      說明 當您完成實例重啟、擴容或其他自定義配置后,請根據阿里云ES實例的節點數量為索引設置合理的副本數,這將有效提高ES服務的可靠性和穩定性。