ELASTICSEARCH FAILOVER

故障轉(zhuǎn)移

當(dāng)一個ES集群中只有一個節(jié)點時,就會出現(xiàn)單點故障問題(沒有備份冗余),我們只需要再啟用一個節(jié)點就可以避免這個問題
我們只需要按照單臺部署的方式再啟用一個ES,再配置文件中修改cluster.name和第一個ES節(jié)點相同(ES集群安裝),啟動ES,他就會自動加入到ES集群中.
當(dāng)節(jié)點加入到集群中時,會自動生成和主分片數(shù)對應(yīng)的副分片數(shù),一個主分片對應(yīng)一個副分片,這樣當(dāng)集群中有某個節(jié)點出問題時,數(shù)據(jù)依舊能夠正常運轉(zhuǎn)。
當(dāng)?shù)诙€節(jié)點加入到集群后,3個 副本分片 將會分配到這個節(jié)點上——每個主分片對應(yīng)一個副本分片。 這意味著當(dāng)集群內(nèi)任何一個節(jié)點出現(xiàn)問題時,我們的數(shù)據(jù)都完好無損。
所有新近被索引的文檔都將會保存在主分片上,然后被并行的復(fù)制到對應(yīng)的副本分片上。這就保證了我們既可以從主分片又可以從副本分片上獲得文檔。
cluster-health 現(xiàn)在展示的狀態(tài)為 green ,這表示所有6個分片(包括3個主分片和3個副本分片)都在正常運行。

{
    "cluster_name":"elasticsearch",
    "status":"green",
    "timed_out":false,
    "number_of_nodes":2,
    "number_of_data_nodes":2,
    "active_primary_shards":3,
    "active_shards":6,
    "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
}

我們的集群現(xiàn)在不僅僅是正常運行的,并且還處于 始終可用 的狀態(tài)。

水平擴(kuò)容

為了應(yīng)對集群的負(fù)載壓力,有時,我們需要對集群進(jìn)行水平擴(kuò)容,再向集群中添加一個節(jié)點
具體的添加操作方法,參考ES集群安裝,按相同的配置再啟用一臺ES節(jié)點就行了,配置相同的cluster.name和不同的節(jié)點名稱就行了,這樣,我們的集群就出現(xiàn)了三個節(jié)點
這樣集群為了均衡數(shù)據(jù),會從節(jié)點一和節(jié)點二分別遷移一個分片去節(jié)點三,這樣每個節(jié)點都有2個分片了。
這樣每個節(jié)點的硬件資源將被更少的分片所使用,每個分片的性能將有所提升。
分片是一個功能完整的搜索引擎,它擁有使用一個節(jié)點上的所有資源的能力。 我們這個擁有6個分片(3個主分片和3個副本分片)的索引可以最大擴(kuò)容到6個節(jié)點,每個節(jié)點上存在一個分片,并且每個分片擁有所在節(jié)點的全部資源。
理論上來說, 目前我們擁有三個主分片,三個副本分片。如果需要擴(kuò)容,目前只能擴(kuò)容到6個節(jié)點,如果我們想要擴(kuò)容到6個以上的話,我們可以提升我們的副本分片的數(shù)量。
主分片的數(shù)目在索引創(chuàng)建時就已經(jīng)確定了下來。實際上,這個數(shù)目定義了這個索引能夠 存儲 的最大數(shù)據(jù)量。(實際大小取決于你的數(shù)據(jù)、硬件和使用場景。) 但是,讀操作——搜索和返回數(shù)據(jù)——可以同時被主分片 或 副本分片所處理,所以當(dāng)你擁有越多的副本分片時,也將擁有越高的吞吐量。
比如:

PUT /INDEX/_settings
{
   "number_of_replicas" : 2
}

這樣,將分片數(shù)量提升至2,則相當(dāng)于每個主分片對應(yīng)2個副本分片,則總分片數(shù)量就為9個,這樣就能擴(kuò)容到6個以上的節(jié)點了,通過這樣提升ES的性能
但是如果不打算擴(kuò)容,只是單獨增加索引的分片的話,是不建議這么多的,因為ES中索引的分片是需要分配ES節(jié)點的資源的,如果分片過多,而資源還是原來的那些,則會導(dǎo)致性能出現(xiàn)下滑,但是如果副本分片變多的話,則提高了數(shù)據(jù)的冗余,這樣的話,我們的數(shù)據(jù)出現(xiàn)丟失的可能性也更小了
如果這個時候有一個節(jié)點突然掉線了(比如我們擁有三個節(jié)點),如果掉線的是主節(jié)點的話,剩下的兩個節(jié)點會進(jìn)行選舉主節(jié)點,當(dāng)其中一個節(jié)點獲得超過50%的選票時,主節(jié)點選舉完畢,主節(jié)點出現(xiàn)時會將掉線節(jié)點中分片的副本分片提升為主分片進(jìn)行數(shù)據(jù)恢復(fù),此時如果掉線節(jié)點恢復(fù)重新加入到集群中,則,會重新進(jìn)行分配副本分片。如果掉線的不是主節(jié)點,這通過主節(jié)點進(jìn)行同樣的操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容