日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

elasticsearch最大节点数_Elasticsearch选举原理之Bully算法

發布時間:2025/4/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elasticsearch最大节点数_Elasticsearch选举原理之Bully算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Elasticsearch采用了master-slave模式, ES會在集群中選取一個節點成為主節點,只有Master節點有資格維護全局的集群狀態,在有節點加入或者退出集群的時候,它會重新分配分片,并將集群最新狀態發送給集群中其它節點,主節點會以周期性ping的方式以驗證其它節點是否存活。Elasticsearch的選舉算法基于Bully選舉算法,簡單的說,在bully算法中,每個節點都有一個編號,只有編號最大的存活節點才能成為master節點。

1. 選舉時間點

選舉的時間點有兩個

  • 某個新節點加入了集群或者某個節點從宕機中恢復
  • 集群中的某個節點檢測到leader崩潰
  • 2. 選舉流程

    選舉的流程說明如下

  • 節點node向所有比自己大的節點發送選舉消息(選舉為election消息)
  • 如果節點node得不到任何回復(回復為alive消息),那么節點node成為master,并向所有的其它節點宣布自己是master(宣布為Victory消息)
  • 如果node得到了任何回復,node節點就一定不是master,同時等待Victory消息,如果等待Victory超時那么重新發起選舉
  • 筆者借助網上的一組圖片詳細闡述Bully的選舉流程,圖片來自于

    Bully Election Algorithm Example?www.cs.colostate.edu

    假設有如下6節點組成的集群,每個節點都會維護和其它節點的聯系,p6節點是當前集群的master節點

    在某個時間點master節點p6發生了宕機

    P3節點是整個集群中最先發現master節點宕機的節點,p3節點通知了比自己編號大的p4,p5節點,p6節點

    因為p6節點已經宕機,只有p4,p5節點向p3節點發出響應,并通知p3節點他們會取代p6節點成為master節點

    P4節點向P5,P6節點發送通知

    因為p6節點已經宕機,所以只有p5節點作出了響應

    P5節點向P6節點發起選舉通知,P6節點沒有響應,于是P5節點成為了整個集群的master節點

    P5節點成為了整個集群的master節點

    3. Elasticsearch編號比較

    Elasticsearch編號比較的判斷依據有兩個,首先是ClusterState版本號的比較,版本號越大優先級越高,然后是節點id的比較,id越小優先級越高。ClusterState是Master向集群中各個節點發送的集群狀態,這個狀態有一個版本號碼,如果集群狀態發生了變化,比如集群新增了節點成員或者有節點成員退出了,那么這個版本號就會加一,比對這個版本號的目的是讓擁有最新狀態的節點成為Master的優先級最高。

    4. Bully算法缺陷

    4.1 Master假死

    Master節點承擔的職責負載過重的情況下,可能無法即時對組內成員作出響應,這種便是假死。如果上圖中的P6節點假死,于是P5節點成為了Master節點,但是在P6節點負載減輕之后,P6節點又對組內成員作出了響應,P6節點又會成為Master節點,如此反復,整個集群狀態就會非常不可靠。

    Elasticsearch是如何解決這個問題的呢?在Bully算法中,Master節點P6因為負載重,來不及對P3節點作出響應,所以P3節點通知P4,P5節點進行選舉。在Elasticsearch中,P3節點發現Master P6對自己長時間不作出響應,P3節點會請求其它節點判斷P6節點是否存活,如果有1/2以上節點都認定P6存活,那么P3就會放棄發起選舉

    4.2 腦裂問題

    腦裂問題指的是一個集群中出現了兩個及以上的Master節點。

    比如上圖中集群因為網絡原因分成了兩個部分,一個部分稱為partition1包含P3,P5,P6節點,另一部分稱為partition2包含P2,P1,P4節點,這兩個partition因為網絡原因比如路由器短時故障造成不能相互通信的問題。

    那么網絡分區一根據Bully算法選舉出了P6作為master,而網絡分區二選舉出了P4作為master,這就是腦裂問題。

    Elasticsearch腦裂解決方案

    Quorum算法

    腦裂問題是所有集群選舉算法都要面對的一個問題,Elasticsearch集群機制采用了最小參與節點的方案解決的。假設elasticsearch集群中有資格投票的實例個數是n,節點想要成為master必須要得到n/2 +1票數(在本示例中是4)。上圖中的分區一P6和分區二中的P4,任何一個master節點所在的分區集群的候選節點數目都小于4,更不可能得到4個選票,所以整個Elasticsearch集群處于癱瘓狀態

    我們也可以強制指定elasticsearch節點在有M個候選節點的情況下能選舉出一個主節點,但是如果配置數小于上文提到的 n/2 +1 那么會出現腦裂的情況,M的配置參數如下

    discovery.zen.minimum_master_nodes

    如果產生了腦裂情況,為了避免腦裂的Master生成錯誤數據對整個集群產生影響。Master更新集群狀態時還作出了如下防護,Master有兩種指令,一種是send指令,另一種是commit指令,Master將最新集群狀態推送給其它節點的時候(這是send指令),Master節點進入等待響應狀態,其它節點并不會立刻應用該集群狀態,而是首先會響應Master節點表示它已經收到集群狀態更新,同時等待Master節點的commit指令。Master節點如果在discovery.zen.commit_timeout配置時間內都沒有收到discovery.zen.minimum_master_nodes個數的節點響應,那么Master節點就不會向其它節點發送commit指令。如果Master收到了足夠數量的響應,那么Master會向集群發出提交狀態的指令,此時其它節點應用集群最新狀態,Master節點再次等待所有節點響應,等待時間為discovery.zen.publish_timeout,如果任何一個節點沒有發出提交響應,Master再次更新整個集群狀態更新。

    4.3 Master降級

    Master主動降級發生在兩種情況。

    第一種是master發現自己能連接到的其它節點數目小于n/2 + 1,那么master自動降級為candidate。

    第二種是Master在ping其它節點時候,如果發現了其它master,那么當前的master會比較cluster_state的version,如果當前master的version小,那么主動降級為candidate并主動加入另外一個master節點

    4.4 網絡負載問題

    從上圖中可以看到,集群中每個節點成員都會維護和其它所有成員的交互,整個集群維護的網絡連接的總數是n*(n-1),如果集群中節點的數目非常的多,那么網絡連接數目也會非常的多,網絡負載會比較大,但是好在elasticsearch節點數目往往比較少,所以這個缺陷對elasticsearch集群來說不會產生什么影響。在前一篇關于集群發現的文章https://zhuanlan.zhihu.com/p/109570606中提到,elasticsearch可以通過參數限制單播的最大連接數目,該值默認為10

    discovery.zen.ping.unicats.concurrent_connects 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的elasticsearch最大节点数_Elasticsearch选举原理之Bully算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。