記一次es集羣啓動異常

異常起因

由於致命查詢導致es集羣所有節點掛掉後,各節點重啓後報SERVICE_UNAVAILABLE/1/state not recovered / initialized警告,其中有個節點始終無法加入集羣,導致主節點一直等待無法初始化
猜測原因是由於集羣三個節點都是master節點與data節點混合在一起,隨着集羣索引增多,數據量增加,master節點的負載較大,節點反應慢,導致集羣發生腦裂

解決方法

master節點和data節點分離,原來已有的節點全部配置爲data節點,
單獨新開一個es實例啓動做master節點(這裏簡單演示只配置了一個master節點,生產環境建議最少3個),這裏爲了使data節點快速確定master位置,我們將所有的data節點配置單撥到該主節點, 配置如下
discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: [“master_ip:9300”]

啓動步驟

  1. 先單獨啓動master節點,爲避免大量的IO和網絡開銷,要設置關閉自動分片,這樣也能加快重啓速度
curl -XPUT localhost:9200/_cluster/settings -d '{
  "transient" : {
    "cluster.routing.allocation.enable" : "none"
  }
}'
  1. 啓動data節點加載分片數據,查看集羣健康狀態,觀察分片數據初始化情況,等待所有主分片初始化完成
curl -XGET localhost:9200/_cat/health?v
  1. 通過以上接口查看到集羣主分片數據都已經加載完成後,修改集羣配置開啓自動分片,等待所有副本分片完全加載,查看集羣健康狀態爲green
curl -XPUT localhost:9200/_cluster/settings -d '{
  "transient" : {
    "cluster.routing.allocation.enable" : "all"
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章