日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

ElasticSearch集群災(zāi)難:別放棄,也許能再搶救一下

來(lái)源: 責(zé)編: 時(shí)間:2024-04-07 17:02:07 192觀看
導(dǎo)讀1 前言Elasticsearch作為一個(gè)分布式搜索引擎,自身是高可用的;但也架不住一些特殊情況的發(fā)生,如:集群超過(guò)半數(shù)的master節(jié)點(diǎn)丟失,ES的節(jié)點(diǎn)無(wú)法形成一個(gè)集群,進(jìn)而導(dǎo)致集群不可用;索引shard的文件損壞,分片無(wú)法被正常恢復(fù),進(jìn)而導(dǎo)致
1 前言

5pE28資訊網(wǎng)——每日最新資訊28at.com

Elasticsearch作為一個(gè)分布式搜索引擎,自身是高可用的;但也架不住一些特殊情況的發(fā)生,如:5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

集群超過(guò)半數(shù)的master節(jié)點(diǎn)丟失,ES的節(jié)點(diǎn)無(wú)法形成一個(gè)集群,進(jìn)而導(dǎo)致集群不可用;5pE28資訊網(wǎng)——每日最新資訊28at.com

索引shard的文件損壞,分片無(wú)法被正常恢復(fù),進(jìn)而導(dǎo)致索引無(wú)法正常提供服務(wù)5pE28資訊網(wǎng)——每日最新資訊28at.com

本地盤節(jié)點(diǎn),多數(shù)據(jù)節(jié)點(diǎn)故障,舊節(jié)點(diǎn)無(wú)法再次加入集群,數(shù)據(jù)丟失5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

針對(duì)上述的情況,今天來(lái)聊一聊相關(guān)的解決方案。5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

2 基礎(chǔ)知識(shí)

5pE28資訊網(wǎng)——每日最新資訊28at.com

2.1 集群經(jīng)典架構(gòu)

5pE28資訊網(wǎng)——每日最新資訊28at.com

在聊解決方案之前,首先來(lái)看一看ES集群層面的基本知識(shí),es的集群組成通常如圖1-1所示5pE28資訊網(wǎng)——每日最新資訊28at.com

圖 1-1 es常用集群架構(gòu)圖 1-1 es常用集群架構(gòu)5pE28資訊網(wǎng)——每日最新資訊28at.com

如圖1-1所示,為生產(chǎn)環(huán)境es集群的經(jīng)典架構(gòu),主要由專有主節(jié)點(diǎn)、專有協(xié)調(diào)節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)組成:5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

  • 專有主節(jié)點(diǎn)(Master-eligible node): 具有master角色的節(jié)點(diǎn),這使其有資格被選為主節(jié)點(diǎn),只存儲(chǔ)集群元信息包含cluster、index、shard級(jí)別的元數(shù)據(jù);該種角色節(jié)點(diǎn)被選舉為master之后,將作為整個(gè)ES集群的大腦,負(fù)責(zé)維護(hù)集群層面的元信息,創(chuàng)建刪除索引等工作。該種節(jié)點(diǎn)的個(gè)數(shù)必須為奇數(shù),通常我們固定為3個(gè),如果該類節(jié)點(diǎn)丟失半數(shù),es集群將無(wú)法維持es節(jié)點(diǎn)形成一個(gè)集群。
  • 專有協(xié)調(diào)節(jié)點(diǎn)(網(wǎng)關(guān)節(jié)點(diǎn)): 該種節(jié)點(diǎn)不具有任何角色,僅僅用來(lái)處理es請(qǐng)求;比如(1)將寫請(qǐng)求的數(shù)據(jù)歸類轉(zhuǎn)發(fā)到數(shù)據(jù)所屬的節(jié)點(diǎn)(2)查詢請(qǐng)求的二次聚合計(jì)算。通常我們也會(huì)給該類節(jié)點(diǎn)保留ingest角色 ,ingest的主要作用是對(duì)數(shù)據(jù)進(jìn)行預(yù)處理;比如:字段重命名、給數(shù)據(jù)文檔打上指紋和清洗數(shù)據(jù)等功能主要通過(guò)pipeline能力進(jìn)行處理
  • 數(shù)據(jù)節(jié)點(diǎn)(Data node): 存儲(chǔ)數(shù)據(jù)和集群元信息,執(zhí)行與數(shù)據(jù)相關(guān)的操作,如CRUD、搜索和聚合。在數(shù)據(jù)節(jié)點(diǎn)上打上不同的屬性,可以使其成為hot、warm、cold數(shù)據(jù)節(jié)點(diǎn),在es7.9版本之后配置略有不同,但是原理基本不變。

5pE28資訊網(wǎng)——每日最新資訊28at.com

如果沒(méi)有顯示設(shè)置節(jié)點(diǎn)角色,es的每個(gè)節(jié)點(diǎn)都會(huì)含有以上三種角色。除此之后還有Remote-eligible node 、ml-node和Transform nodes等角色需要顯示的配置,節(jié)點(diǎn)才會(huì)有該角色。5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

2.2 集群元信息

5pE28資訊網(wǎng)——每日最新資訊28at.com

集群完全啟動(dòng)主要包含選舉主節(jié)點(diǎn)、元信息、主分片、數(shù)據(jù)恢復(fù)等重要階段;如圖2-1所示[1]。5pE28資訊網(wǎng)——每日最新資訊28at.com

圖 2-1 es集群?jiǎn)?dòng)流程圖 2-1 es集群?jiǎn)?dòng)流程5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

主節(jié)點(diǎn)選舉的過(guò)程,不是本文的重點(diǎn),而是集群元信息的選舉。被選舉出的master和集群元信息新舊程度沒(méi)有關(guān)系;master節(jié)點(diǎn)被選舉出來(lái)之后,它所要完成的第一個(gè)任務(wù),即是選舉集群元信息。5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

(1)Master選舉成功之后,判斷其持有的集群狀態(tài)中是否存在STATE_NOT_RECOVERED_BLOCK,如果不存在,則說(shuō)明元數(shù)據(jù)已經(jīng)恢復(fù),跳過(guò)gateway恢復(fù)過(guò)程,否則等待。org.elasticsearch.gateway.GatewayService#clusterChanged5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

//跳過(guò)元數(shù)據(jù)恢復(fù)if (state.blocks().hasGlobalBlock(STATE_NOT_RECOVERED_BLOCK) == false) {            // already recovered            return; } //此處省略部分代碼。 //進(jìn)入gateway恢復(fù)過(guò)程   performStateRecovery(enforceRecoverAfterTime, reason);

5pE28資訊網(wǎng)——每日最新資訊28at.com

(2)Master從各個(gè)節(jié)點(diǎn)主動(dòng)獲取元數(shù)據(jù)信息。org.elasticsearch.gateway.Gateway#performStateRecovery5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

# 獲取元信息核心代碼 final String[] nodesIds = clusterService.state().nodes().getMasterNodes().keys().toArray(String.class);        logger.trace("performing state recovery from {}", Arrays.toString(nodesIds));        final TransportNodesListGatewayMetaState.NodesGatewayMetaState nodesState = listGatewayMetaState.list(nodesIds, null).actionGet();

5pE28資訊網(wǎng)——每日最新資訊28at.com

(3)從獲取的元數(shù)據(jù)信息中選擇版本號(hào)最大的作為最新元數(shù)據(jù);元信息包括集群級(jí)、索引級(jí)。5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

## org.elasticsearch.gateway.Gateway#performStateRecovery    public void performStateRecovery(final GatewayStateRecoveredListener listener) throws GatewayException {# 省略若干行代碼## 進(jìn)入allocation階段;## final Gateway.GatewayStateRecoveredListener recoveryListener = new GatewayRecoveryListener();## listener為 GatewayStateRecoveredListener    listener.onSuccess(builder.build());    }

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

(4)兩者確定之后,調(diào)用allocation模塊的reroute,對(duì)未分配 的分片執(zhí)行分配,主分片分配過(guò)程中會(huì)異步獲取各個(gè)shard級(jí)別元數(shù)據(jù)。5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

#主要實(shí)現(xiàn)方法為如下方法   #org.elasticsearch.gateway.GatewayService.GatewayRecoveryListener#onSuccess## 主要工作是構(gòu)建集群狀態(tài)(ClusterState),其中的內(nèi)容路由表 依賴allocation模塊協(xié)助完成,調(diào)用 allocationService.reroute 進(jìn) 入下一階段:異步執(zhí)行分片層元數(shù)據(jù)的恢復(fù),以及分片分配。updateTask線程結(jié)束.

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

ES中存儲(chǔ)的數(shù)據(jù):(1)state元數(shù)據(jù)信息;(2)index Lucene生成的索引文件;(3)translog事務(wù)日志。元數(shù)據(jù)信息:5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

  • nodes/0/_state/*.st,集群層面元信息MetaData(clusterUUID 、 settings 、templates等);
  • nodes/0/indices/{index_uuid}/_state/*.st,索引層面元信息IndexMetaData( numberOfShards 、mappings等);
  • nodes/0/indices/{index_uuid}/0/_state/*.st,分片層面元信息ShardStateMetaData(version 、indexUUID、primary等)。

5pE28資訊網(wǎng)——每日最新資訊28at.com

上述信息被持久化到磁盤:持久化的state不包括某個(gè)分片存在于哪個(gè)節(jié)點(diǎn)這種內(nèi)容路由信息,集群完全重啟時(shí),依靠gateway的recovery過(guò)程重建RoutingTable和RoutingNode。當(dāng)讀取某個(gè)文檔時(shí), 根據(jù)路由算法確定目的分片后,再?gòu)腞outingTable中查找分片位于哪個(gè)節(jié)點(diǎn),然后將請(qǐng)求轉(zhuǎn)發(fā)到目的節(jié)點(diǎn)[1]。5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

?? 注意:在es7.0.0之后es的元信息存儲(chǔ)方式發(fā)生變化;es7.0.0之后元信息存儲(chǔ)改使用lucene的方式存儲(chǔ),見(jiàn)pr50928 Move metadata storage to Lucene)5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

7.10.2 專有主節(jié)點(diǎn),集群元數(shù)據(jù)5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

./|-- _state|   |-- _39h.cfe|   |-- _39h.cfs|   |-- _39h.si|   |-- node-0.st|   |-- segments_50d|   `-- write.lock`-- node.lock

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

6.8.13 專有主節(jié)點(diǎn),集群元數(shù)據(jù)5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

./|-- _state|   |-- global-230.st|   `-- node-2.st|-- indices|   |-- -hiy4JnoRfqUJHTJoNUt4Q|   |   `-- _state|   |       `-- state-4.st|   `-- ylJKVlqISGOi8EkpxHE_2A|       `-- _state|           `-- state-6.st`-- node.lock

5pE28資訊網(wǎng)——每日最新資訊28at.com

3 災(zāi)難場(chǎng)景與處理方法

5pE28資訊網(wǎng)——每日最新資訊28at.com

3.1 master節(jié)點(diǎn)丟失

5pE28資訊網(wǎng)——每日最新資訊28at.com

?? 注意本文所述的master節(jié)點(diǎn)個(gè)數(shù),假設(shè)前提均為3個(gè)5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

場(chǎng)景1 master節(jié)點(diǎn)丟失過(guò)半

5pE28資訊網(wǎng)——每日最新資訊28at.com

master節(jié)點(diǎn)是控制整個(gè)集群;當(dāng)該種節(jié)點(diǎn)角色丟失過(guò)半,由于集群中投票節(jié)點(diǎn)永遠(yuǎn)不可能達(dá)到quorum無(wú)法選主,將無(wú)法維持es節(jié)點(diǎn)形成一個(gè)集群;雖然集群無(wú)法形成一個(gè)集群,但所仍幸master-eligible節(jié)點(diǎn)存活,我們可以使用如下手段進(jìn)行處理。5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

es7.0.0版本之前

5pE28資訊網(wǎng)——每日最新資訊28at.com

  • 修改剩余節(jié)點(diǎn)的elasticsearch.yaml配置如下,修改quorum的個(gè)數(shù),然后啟動(dòng)剩余的節(jié)點(diǎn),形成一個(gè)新的集群;

5pE28資訊網(wǎng)——每日最新資訊28at.com

discovery.zen.minimum_master_nodes: 1discovery.zen.ping.unicast.hosts:- masters-0

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

  • 重建補(bǔ)充之前丟失的master-eligible節(jié)點(diǎn),加入集群之后.3 將集群配置修改為舊的配置,再逐一重啟下集群中的節(jié)點(diǎn),先從master-eligible開(kāi)始.

5pE28資訊網(wǎng)——每日最新資訊28at.com

es7.0.0(包含)版本之后.

5pE28資訊網(wǎng)——每日最新資訊28at.com

在es7.0.0版本之后,由于es修改集群的啟動(dòng)配置,新增配置discovery.seed_hosts 和cluster.initial_master_nodes;es集群第一次啟動(dòng)時(shí)稱為bootstrap,該過(guò)程將配置文件中的cluster.initial_master_node作為初始的投票節(jié)點(diǎn)Voting configurations,投票節(jié)點(diǎn)具有選舉master和commit cluster state的權(quán)利,超過(guò)半數(shù)以上同意即投票成功。如果在集群健康的場(chǎng)景下,我們需要下線超過(guò)半數(shù)的master-eligible;則必須首先使用投票配置排除API從投票配置中排除受影響的節(jié)點(diǎn)。5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

POST _cluster/voting_config_exclusions?node_names={node_names}POST _cluster/voting_config_exclusions?node_ids={node_ids}DELETE _cluster/voting_config_exclusions

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

但是如果丟失的master節(jié)點(diǎn)超過(guò)半數(shù),則可以使用新的集群處理工具elasticsearch-node unsafe-bootstrap pr37696 和elasticsearch-node detach-cluster pr379795pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

面對(duì)丟失半數(shù)master-eligible,es7.0.0(包含)版本之后的處理步驟如下:1 使用bin/elasticsearch-node unsafe-bootstrap命令讓唯一主節(jié)點(diǎn)以不安全的方式改寫投票節(jié)點(diǎn),就像重新進(jìn)行bootstrap一樣,自己使用持久化的cluster state形成一個(gè)新集群2 其他數(shù)據(jù)節(jié)點(diǎn)無(wú)法加入新集群因?yàn)閁UID不同(es使用UUID作為節(jié)點(diǎn)和集群的唯一表示,每個(gè)節(jié)點(diǎn)都會(huì)持久化當(dāng)前集群的UUID),使用bin/elasticsearch-node detach-cluster命令讓節(jié)點(diǎn)離開(kāi)之前的集群3 啟動(dòng)數(shù)據(jù)節(jié)點(diǎn)和新的master-eligible節(jié)點(diǎn)(如下補(bǔ)充兩個(gè)新的master-eligible),他會(huì)加入新集群中5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

cluster.initial_master_nodes:- {master-0}- {new-master-1}- {new-master-2}discovery.seed_hosts:- {master-ip-0}- {new-master-ip-1}- {new-master-ip-2}

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

場(chǎng)景2 master節(jié)點(diǎn)全部丟失

5pE28資訊網(wǎng)——每日最新資訊28at.com

es7.0.0版本之前

5pE28資訊網(wǎng)——每日最新資訊28at.com

1 關(guān)閉 security 功能(如果開(kāi)啟了, 最好先關(guān)閉security插件功能):5pE28資訊網(wǎng)——每日最新資訊28at.com

1.1 因?yàn)樾聠?dòng)的master節(jié)點(diǎn), 沒(méi)有數(shù)據(jù)節(jié)點(diǎn)(如果只配置了一個(gè)master的角色), security插件的初始化無(wú)法完成, 各類接口不好調(diào)用5pE28資訊網(wǎng)——每日最新資訊28at.com

1.2 如果給新啟動(dòng)的master節(jié)點(diǎn), 配置了master and data角色, 則security插件會(huì)初始化成功. 會(huì)插入index, 但是這個(gè)index會(huì)和原來(lái)的data節(jié)點(diǎn)上保存的沖突. 不知道怎么解.elastic官方xpack-security;關(guān)閉鑒權(quán):xpack.security.enabled:false2 啟動(dòng)足夠的新master-eligible節(jié)點(diǎn)形成一個(gè)新集群.5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

discovery.zen.minimum_master_nodes: 2discovery.zen.ping.unicast.hosts:- {new-masters-1}- {new-masters-2}- {new-masters-3}

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

3 修改數(shù)據(jù)節(jié)點(diǎn)的為新master的地址,并且刪除掉節(jié)點(diǎn)上的_state(因?yàn)樾录旱腸luster UUID不一致),同上5pE28資訊網(wǎng)——每日最新資訊28at.com

4 啟動(dòng)數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)被恢復(fù)加入到集群5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

es7.0.0(包含)版本之后

5pE28資訊網(wǎng)——每日最新資訊28at.com

已經(jīng)沒(méi)有cluster state了,唯一的希望是數(shù)據(jù)節(jié)點(diǎn)上的index數(shù)據(jù);恢復(fù)方式借助elasticsearch-node 工具5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

1 關(guān)閉security功能(如果開(kāi)啟了, 最好先關(guān)閉security插件功能),原因同上5pE28資訊網(wǎng)——每日最新資訊28at.com

2 啟動(dòng)足夠的新master-eligible節(jié)點(diǎn)形成一個(gè)新集群5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

cluster.initial_master_nodes:- {new-master-0}- {new-master-1}- {new-master-2}discovery.seed_hosts:- {new-master-ip-0}- {new-master-ip-1}- {new-master-ip-2}

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

3 bin/elasticsearch-node detach-cluster命令讓數(shù)據(jù)節(jié)點(diǎn)離開(kāi)之前的集群5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

./bin/elasticsearch-node detach-cluster------------------------------------------------------------------------    WARNING: Elasticsearch MUST be stopped before running this tool.------------------------------------------------------------------------You should only run this tool if you have permanently lost all of themaster-eligible nodes in this cluster and you cannot restore the clusterfrom a snapshot, or you have already unsafely bootstrapped a new clusterby running `elasticsearch-node unsafe-bootstrap` on a master-eligiblenode that belonged to the same cluster as this node. This tool can causearbitrary data loss and its use should be your last resort.Do you want to proceed?Confirm [y/N] yNode was successfully detached from the cluster

5pE28資訊網(wǎng)——每日最新資訊28at.com

4 查詢dangling索引,GET /_dangling, 改api 引入es7.9版本于 pr581765 啟動(dòng)數(shù)據(jù)節(jié)點(diǎn)并使用Import dangling indexAPI將index數(shù)據(jù)import到cluster state中(官方推薦,es7.9版本之后). 或者 配置gateway.auto_import_dangling_indices: true引入于es7.6版本pr49174(es7.6.0-7.9.0可用該配置,在7.6版本之前不需要配置默認(rèn)加載dangling索引)并啟動(dòng)數(shù)據(jù)節(jié)點(diǎn)5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

POST /_dangling/{index-uuid}?accept_data_loss=true

5pE28資訊網(wǎng)——每日最新資訊28at.com

6 導(dǎo)入完成之后,索引recovery之后即可進(jìn)行讀寫5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

注意5pE28資訊網(wǎng)——每日最新資訊28at.com

Q1: 為什么7.6.0之后需要配置,才能處理懸空索引(dangling index)才能讓數(shù)據(jù)加入新集群,7.6.0之后沒(méi)有懸空索引嗎?A1: 其實(shí)也是有的,只不過(guò)在es2版本將配置移除(對(duì)應(yīng)pr10016),默認(rèn)自動(dòng)加載dangling index(es2.0-es7.6); 具體實(shí)現(xiàn)于org.elasticsearch.gateway.DanglingIndicesState#processDanglingIndices es7.6再次引入dangling配置,es7.9引入dangling index rest api5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

Q2: 什么是 dangling 索引?A2: 當(dāng)一個(gè)節(jié)點(diǎn)加入集群時(shí),如果發(fā)現(xiàn)存儲(chǔ)在其本地?cái)?shù)據(jù)目錄中的任何分片(shard)不存在于集群中,將認(rèn)為這些分片屬于“懸空”索引。懸空索引產(chǎn)生的場(chǎng)景(1)在 Elasticsearch 節(jié)點(diǎn)離線時(shí)刪除了多個(gè)cluster.indices.tombstones.size 索引,節(jié)點(diǎn)再次加入集群集群 (2)master節(jié)點(diǎn)丟失,數(shù)據(jù)節(jié)點(diǎn)重新加入新的集群等5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

3.2 數(shù)據(jù)節(jié)點(diǎn)故障

5pE28資訊網(wǎng)——每日最新資訊28at.com

數(shù)據(jù)節(jié)點(diǎn)災(zāi)難故障之后,無(wú)法恢復(fù)加入集群;可將數(shù)據(jù)物理復(fù)制到新的節(jié)點(diǎn),然后按照master節(jié)點(diǎn)丟失的方式,將數(shù)據(jù)節(jié)點(diǎn)加入集群即可。5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

3.3 分片不能夠自動(dòng)分配

5pE28資訊網(wǎng)——每日最新資訊28at.com

查看索引分片為什么無(wú)法分配,POST_cluster/allocation/explain5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

3.3.1 分片正常

5pE28資訊網(wǎng)——每日最新資訊28at.com

如果分片數(shù)據(jù)正常,那么我們可以嘗試重試分配分片任務(wù);POST _cluster/reroute?retry_failed5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

獲取索引的shard在那些節(jié)點(diǎn)上,使用_shard_stores api5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

GET indexName1/_shard_stores

5pE28資訊網(wǎng)——每日最新資訊28at.com

使用cluster reroute重新分配5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

# 嘗試分配副本 POST /_cluster/reroute{  "commands": [    {      "allocate_replica": {        "index": "{indexName1}",        "shard": {shardId},        "node": "{nodes-9}"      }    }  ]}

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

如果是主分片無(wú)法分配,可以嘗試如下命令進(jìn)行分配5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

POST /_cluster/reroute{  "commands": [    {      "allocate_stale_primary": {        "index": "{indexName1}",        "shard": {shardId},        "node": {nodes-9},        "accept_data_loss": true      }    }  ]}

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

如果主分片確實(shí)是無(wú)法分配,只能選擇丟失該分片的數(shù)據(jù),分配一個(gè)空的主分片5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

POST /_cluster/reroute{  "commands": [    {      "allocate_empty_primary": {        "index": "{indexName1}",        "shard": {shardId},        "node": "{nodes-9}",        "accept_data_loss": true      }    }  ]}

es5.0版本之前參考;https://www.elastic.co/guide/en/elasticsearch/reference/2.4/cluster-reroute.html5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

3.3.2 分片數(shù)據(jù)損壞

5pE28資訊網(wǎng)——每日最新資訊28at.com

shard corrupted

5pE28資訊網(wǎng)——每日最新資訊28at.com

錯(cuò)誤參考Corrupted elastic index5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

shard-tool es6.5版本引入,該操作需要stop節(jié)點(diǎn)elasticsearch-shard 工具es6.5版本引入 pr33848elasticsearch-shard remove-corrupted-data 的 es7.0.0引入 pr322815pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

bin/elasticsearch-shard remove-corrupted-data --index {indexName} --shard-id {shardId}## 示列:修復(fù)索引twitter的0號(hào)分片bin/elasticsearch-shard remove-corrupted-data --index twitter --shard-id 0## 如果--index和--shard-id換成索引分片目錄參數(shù)--dir,則直接修復(fù)data和translogbin/elasticsearch-shard remove-corrupted-data --dir /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0

5pE28資訊網(wǎng)——每日最新資訊28at.com

修復(fù)完成之后,啟動(dòng)節(jié)點(diǎn),如果分片不能夠自動(dòng)分配,使用reroute命令進(jìn)行shard分片5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

POST /_cluster/reroute{  "commands":[    {      "allocate_stale_primary":{        "index":"index42",        "shard":0,        "node":"node-1",        "accept_data_loss":false      }    }  ]}

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

5版本之前可以通過(guò)索引級(jí)別配置,進(jìn)行修復(fù)index.shard.check_on_startup: fix ,該配置在es6.5版本移除 pr322795pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

translog 損壞

5pE28資訊網(wǎng)——每日最新資訊28at.com

修復(fù)translog操作,需要stop節(jié)點(diǎn)。5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

修復(fù)工具 elasticsearch-translog es5.0.0 引入pr19342elasticsearch-shard remove-corrupted-data translog的 es7.4.1開(kāi)始引入,pr47866elasticsearch-shard 可以直接清除translog,也可以像上文中指定--dir那樣進(jìn)行修復(fù)translog5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

bin/elasticsearch-shard remove-corrupted-data --index  --shard-id   --truncate-clean-translog## 示列:修復(fù)索引twitter的0號(hào)分片bin/elasticsearch-shard remove-corrupted-data --index twitter --shard-id 0 --truncate-clean-translog

5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

清除完成之后使用cluster reroute 進(jìn)行恢復(fù)5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

5版本之前可以通過(guò)索引級(jí)別配置,進(jìn)行修復(fù)index.shard.check_on_startup: fix ,該配置在es6.5版本移除 pr322795pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

segments_N文件丟失

5pE28資訊網(wǎng)——每日最新資訊28at.com

該種場(chǎng)景的文件損壞是最難修復(fù)的;官方還未提供工具,我們正在自己調(diào)研中5pE28資訊網(wǎng)——每日最新資訊28at.com

5pE28資訊網(wǎng)——每日最新資訊28at.com

4 參考

5pE28資訊網(wǎng)——每日最新資訊28at.com

[1] elasticsearch集群?jiǎn)?dòng)流程5pE28資訊網(wǎng)——每日最新資訊28at.com

[2]https://www.elastic.co/guide/en/elasticsearch/reference/7.9/dangling-indices-list.html5pE28資訊網(wǎng)——每日最新資訊28at.com

[3]https://www.elastic.co/guide/en/elasticsearch/reference/7.10/node-tool.html5pE28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-81719-0.htmlElasticSearch集群災(zāi)難:別放棄,也許能再搶救一下

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 探索Python-Patterns模塊:從設(shè)計(jì)模式到實(shí)際應(yīng)用,助力編程效率提升!

下一篇: 深入解析并行編程利器:.NET中的 Parallel 類

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久这里只有| 尤物99国产成人精品视频| 欧美日韩亚洲免费| 国产精品hd| 国产亚洲成人一区| 亚洲国产日韩欧美| 亚洲一级黄色片| 久久aⅴ乱码一区二区三区| 美女精品视频一区| 欧美喷水视频| 国产欧美日韩综合一区在线播放| 加勒比av一区二区| 一本大道久久a久久综合婷婷| 欧美一区二区三区视频在线| 欧美成人免费一级人片100| 国产精品久久久久久超碰 | 欧美日韩国产123| 国产精品亚洲精品| 亚洲第一精品影视| 亚洲免费伊人电影在线观看av| 久久视频一区| 国产精品久久午夜夜伦鲁鲁| 一区二区三区在线视频观看| 亚洲视频视频在线| 久热爱精品视频线路一| 国产精品久久久久久影院8一贰佰| 伊人影院久久| 亚洲男人的天堂在线| 欧美不卡一区| 国产一本一道久久香蕉| 一本大道久久a久久精品综合| 久久久久久久久久久久久久一区| 欧美三区在线视频| 亚洲国产成人精品久久久国产成人一区 | 欧美日韩ab| 狠狠色综合色区| 亚洲欧美综合另类中字| 欧美日韩1080p| 在线欧美日韩| 欧美在线啊v一区| 欧美午夜欧美| 亚洲精品欧美在线| 久久视频在线视频| 国产欧美亚洲精品| 夜夜嗨av一区二区三区网页| 麻豆成人在线| 国产亚洲一级| 欧美一级片一区| 国产精品99免费看 | 夜夜爽夜夜爽精品视频| 麻豆成人小视频| 国外成人在线视频网站| 午夜精品视频在线| 国产精品久久| 一本色道久久综合精品竹菊| 欧美mv日韩mv国产网站| 国模私拍视频一区| 欧美在线三级| 国产欧美日韩精品丝袜高跟鞋| 国产精品99久久久久久久vr| 欧美人与禽猛交乱配| 亚洲黄色成人| 免费欧美日韩| 亚洲国产精品ⅴa在线观看 | 久久成人在线| 国产精品一级| 亚洲欧美经典视频| 国产精品伦一区| 亚洲一级影院| 国产精品v欧美精品∨日韩| 欧美国产乱视频| 国产精品美女久久久久av超清 | 午夜免费在线观看精品视频| 欧美激情亚洲一区| 亚洲大胆人体视频| 久久久久久免费| 国产在线精品成人一区二区三区| 午夜视频一区| 国产欧美精品一区二区三区介绍| 午夜精品国产更新| 国产精品一区三区| 欧美一级艳片视频免费观看| 国产欧美大片| 久久er99精品| 狠狠色综合一区二区| 久久美女艺术照精彩视频福利播放| 国内偷自视频区视频综合| 久久久久久久尹人综合网亚洲| 国内精品美女在线观看| 久久久久久夜| 黄色日韩网站视频| 美女视频一区免费观看| 亚洲欧洲在线免费| 欧美日产一区二区三区在线观看| 9久草视频在线视频精品| 欧美调教vk| 午夜视频一区二区| 亚洲欧洲日产国产综合网| 亚洲电影免费| 欧美黄色一级视频| 99在线精品视频| 国产精品捆绑调教| 欧美在线日韩在线| 精品不卡一区二区三区| 女生裸体视频一区二区三区| 亚洲精品在线观看视频| 欧美午夜视频一区二区| 午夜激情综合网| 国语自产精品视频在线看一大j8| 乱人伦精品视频在线观看| 亚洲精品免费一二三区| 欧美日韩系列| 性色av一区二区三区在线观看| 国产综合久久| 欧美激情2020午夜免费观看| 亚洲一二三区在线| 国产综合色在线| 欧美激情一区二区三区在线| 亚洲性av在线| 尤物yw午夜国产精品视频| 欧美日本一区二区三区| 午夜影视日本亚洲欧洲精品| 在线观看日韩av电影| 欧美日韩综合在线| 久久精品一本久久99精品| 蜜桃久久av一区| 亚洲无毛电影| 激情欧美日韩一区| 欧美日韩一区二区三区在线观看免| 小嫩嫩精品导航| 亚洲国产一区二区精品专区| 国产精品久久国产愉拍 | 亚洲电影免费在线观看| 欧美国产一区二区三区激情无套| 一区二区欧美日韩| 国产精品久久久一区二区三区| 欧美日韩精品免费看| 亚洲经典自拍| 欧美日韩高清不卡| 久久久久久电影| 一区二区三区高清不卡| 国产在线视频欧美| 欧美日本在线播放| 久久久免费精品视频| 中日韩美女免费视频网址在线观看| 国产日韩av一区二区| 欧美激情久久久久| 久久激情婷婷| 亚洲图片激情小说| 亚洲高清三级视频| 国产精品视频一二| 欧美劲爆第一页| 久久久久久久高潮| 亚洲一二三区视频在线观看| 亚洲第一黄色| 国产一区二区久久久| 欧美三级资源在线| 欧美成人精品不卡视频在线观看| 欧美一级艳片视频免费观看| 夜夜夜久久久| 亚洲国产色一区| 好看的av在线不卡观看| 国产精品久久久久影院亚瑟| 欧美激情一区二区久久久| 亚洲图片你懂的| 国产精品久久久久9999吃药| 欧美激情第一页xxx| 久久久精品日韩| 亚洲欧美三级伦理| 一本到12不卡视频在线dvd| 亚洲电影天堂av| 国产日韩欧美中文在线播放| 欧美午夜免费| 欧美日韩第一区日日骚| 免费在线观看一区二区| 久久久精品免费视频| 午夜免费在线观看精品视频| 一区二区免费在线观看| 亚洲精品欧美日韩| 亚洲高清不卡在线| 伊人久久大香线蕉av超碰演员| 国产日韩亚洲欧美精品| 国产精品亚洲一区二区三区在线| 欧美日韩午夜激情| 欧美激情一区二区三区四区 | 欧美大片在线观看一区| 久久影院午夜论| 久久精品99国产精品日本| 亚洲欧美伊人| 亚洲综合色自拍一区| 亚洲校园激情| 亚洲女同在线| 亚洲欧洲av一区二区| 亚洲欧洲99久久| 亚洲欧美日韩综合aⅴ视频| 亚洲自拍电影| 亚洲欧美日韩系列| 午夜日韩福利| 欧美一级艳片视频免费观看| 欧美一区日本一区韩国一区| 欧美在线日韩在线| 久久人人爽人人| 美玉足脚交一区二区三区图片| 美女爽到呻吟久久久久|