在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ElasticSearch進行master選舉的流程

阿銘linux ? 來源:阿銘linux ? 2023-02-23 09:54 ? 次閱讀

背景知識

ElasticSearch(下文簡稱ES)集群中,每一臺服務器都有自己的角色,有一部分服務器可以設定為候選Master(至少是3臺),也就是說這些服務器已經具備成為Master角色的能力,但是具體誰最終成為Master是要通過選舉才可以。

在ES配置文件里,有兩個參數來決定該節點是否是候選Master或者Data節點,如果想讓某個節點只作為Data節點,那么需要將node.master設置為false,而node.data設置為true:

    node.master: true/false
    node.data: true/false

90156326-b306-11ed-bfe3-dac502259ad0.png

上圖是一個ES集群的示意圖,其中NodeA是當前集群的Master,NodeB和NodeC是Master的候選節點,其中NodeA和NodeB同時也是數據節點(DataNode),此外,NodeD是一個單純的數據節點,Node_E是一個proxy節點。每個Node會跟其他所有Node建立連接。

節點發現

ES服務啟動后,首先要通過節點發現功能加入集群。ZenDiscovery是ES自己實現的一套用于節點發現和選主等功能的模塊,沒有依賴Zookeeper等工具。 簡單來說,節點發現依賴以下配置:

discovery.seed_hosts: ["192.168.222.101", "192.168.222.102", "192.168.222.103"]
這個配置可以看作是,在本節點到每個discovery.sedd_hosts中的節點建立一條關聯線,當整個集群所有的node形成一個聯通圖時,所有節點都可以知道集群中有哪些節點存在了。

Master選舉

上面提到,集群中可能會有多個候選Master節點,此時就要進行Master選舉,保證只有一個當選Master。如果有多個節點當選為Master,則集群會出現腦裂,腦裂會破壞數據的一致性,導致集群行為不可控,產生各種非預期的影響。

905e686e-b306-11ed-bfe3-dac502259ad0.png

腦裂示意圖

為了避免產生腦裂,ES采用了常見的分布式系統思路,保證選舉出的master被多數派(quorum)的候選Master節點認可,以此來保證只有一個Master。這個quorum通過以下配置進行配置:

discovery.zen.minimum_master_nodes: 2
這個配置對于整個集群非常重要。

誰發起Master選舉

Master選舉是由候選Master節點發起,當一個候選Master節點發現滿足以下條件時就會發起選舉:

該候選Master節點的當前狀態不是Master;

該候選Master節點通過ZenDiscovery模塊的ping操作詢問其已知的集群其他節點,沒有任何節點連接到Master;

包括本節點在內,當前已有超過minimum_master_nodes個節點沒有連接到Master。

簡單講,就是當一個候選Master節點發現包括自己在內的多數候選Master節點認為集群沒有Master時,就可以發起Master選舉。

如何選舉

ES Master選舉有一套自己的算法,該算法是基于一種稱為“狀態機復制”的機制。狀態機復制的基本原理是,在一個分布式系統中,每個節點都有一份當前的狀態,并且每個節點都可以獨立決定自己是否被選舉為Master節點。在ES集群中,每個節點都會比較當前節點和其他節點的狀態,如果當前節點的狀態最新,則當前節點將被選為Master節點。

ES的選舉工作流程大致如下:

① 首先,所有候選Master節點都會比較自己的狀態,如果自己的狀態最新,則發起投票;

② 其他節點收到投票后,也會比較自己的狀態,如果自己的狀態最新,則會再次發起投票;

③ 當某個節點收到來自其他節點的投票,且自己的狀態最新時,則會將自己的狀態發送給其他節點,并同意自己被選為Master節點;

④ 其他節點收到來自Master節點的狀態后,會將自己的狀態更新,同意將Master節點選為Master節點(有點繞口);

⑤ 一旦Master節點確定,其他節點就會向Master節點發送心跳包,以確保Master節點的活動狀態;

⑥ 如果Master節點失去連接,則其他節點會開始新的投票,以確定新的Master節點。

按照上述流程,我們描述一個簡單的場景來幫助大家理解:

假如集群中有3個候選Master節點,分別為Node_A、 Node_B、 Node_C。三個節點都認為當前沒有Master,于是都各自發起選舉。

假如此時Node_A的狀態最新,所以選舉結果都為Node_A。于是Node_A開始等選票,Node_B、Node_C都向Node_A發起投票,當Node_A接收到第一次投票(假如是Node_B發起的)時,加上它自己的一票,就獲得了兩票了(超過半數),于是Node_A成為Master。

有一點要說明,對于ES集群來說,當Master節點確立時,它就會等待其它節點join自己成為一個集群了,當所有其它非Master節點全部join到Master時,集群才算徹底創建完成。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9255

    瀏覽量

    85754
  • MASTER
    +關注

    關注

    0

    文章

    104

    瀏覽量

    11301

原文標題:你知道ElasticSearch是如何進行master選舉的嗎

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Windows安裝ElasticSearch

    Windows安裝ElasticSearch
    的頭像 發表于 02-15 17:09 ?1014次閱讀
    Windows安裝<b class='flag-5'>ElasticSearch</b>

    linux安裝配置ElasticSearch之源碼安裝

    ElasticSearch是基于Lucene這個非常成熟的索引方案,另加上一些分布式的實現:集群,sharding,replication等。以下是對其采用源碼安裝的方法1.下載
    發表于 01-11 17:27

    ElasticSearch的詞條查詢

    ElasticSearch查詢 第三篇:詞條查詢
    發表于 04-30 17:03

    docker安裝Elasticsearch操作指南

    docker安裝Elasticsearch以及分詞器
    發表于 09-16 16:53

    ElasticSearch的初步環境

    ElasticSearch最實用入門指南——初步環境
    發表于 03-31 11:32

    分析一下MySQL數據庫與ElasticSearch的實際應用

    ,可以使用ElasticSearch全文檢索引擎來解決這個問題,使得TB級數據在毫秒級就能返回檢索結果,該引擎使用倒排索引,流程優化如下圖:原作者:蟹黃瓜子 GreatSQL社區
    發表于 06-15 17:15

    Elasticsearch+Fluentd+Kafka數據的采集流程講述

    容器都正常工作之后可以查看一下elasticsearch是否生成了預期中的數據作為驗證,這里使用查看es的索引是否有生成以及數據數量來驗證:-bash: -: 未找到命令[root@master
    發表于 11-11 16:26

    elasticsearch介紹PPT

    elasticsearch介紹PPT
    發表于 12-13 21:05 ?20次下載

    如何在Python中進行Elasticsearch操作?

    ElasticSearch(ES)是一個建立在Apache Lucene之上的高度可用的分布式開源搜索引擎
    的頭像 發表于 07-20 11:12 ?7669次閱讀
    如何在Python中<b class='flag-5'>進行</b><b class='flag-5'>Elasticsearch</b>操作?

    用區塊鏈技術進行選舉投票是否能行?烏克蘭中央選舉委員會試運行區塊鏈選舉投票系統

    據外媒報道,根據烏克蘭中央選舉委員會透露,他們正在研究選舉中使用區塊鏈技術投票的可能性。Oleksandr Stelmakh是烏克蘭中央選舉委員會工作人員,他表示,當地政府已經和新經幣基金會展開合作,試運行基于新經幣區塊鏈的
    發表于 08-09 09:38 ?1013次閱讀

    Elasticsearch6.1教程

    Elasticsearch6.1教程
    發表于 07-04 14:40 ?0次下載

    ElasticSearch是什么?應用場景是什么?

    ElasticSearch是什么 ElasticSearch的功能 ElasticSearch的應用場景 ElasticSearch的特點
    的頭像 發表于 10-09 18:38 ?2480次閱讀

    Elasticsearch保姆級入門

    我們需要創建一個供 Elasticsearch 和 Kibana 使用的 network。這個 network 將被用于 Elasticsearch 和 Kibana 之間的通信。
    的頭像 發表于 09-01 15:24 ?869次閱讀
    <b class='flag-5'>Elasticsearch</b>保姆級入門

    SpringBoot 連接ElasticSearch的使用方式

    在上篇 ElasticSearch 文章中,我們詳細的介紹了 ElasticSearch 的各種 api 使用。 實際的項目開發過程中,我們通常基于某些主流框架平臺進行技術開發,比如
    的頭像 發表于 10-09 10:35 ?1154次閱讀

    在華為云上通過 Docker 容器部署 Elasticsearch進行性能評測

    Elasticsearch容器 ? 3.3 驗證Elasticsearch ? 4. 安裝Apache Benchmark (ab) 工具 ? 5. 使用 ab 工具對 Elasticsearch
    的頭像 發表于 01-13 13:36 ?52次閱讀
    在華為云上通過 Docker 容器部署 <b class='flag-5'>Elasticsearch</b> 并<b class='flag-5'>進行</b>性能評測
    主站蜘蛛池模板: 欧美福利网| 一区二区在线免费视频| 日本三级日本三级日本三级极| 日本一卡二卡3卡四卡网站精品 | 久久婷婷激情| 黄色在线观看网站| 久久女同| 天天看天天爽| www你懂的| 久久国产精品永久免费网站| 色99色| 国产精品福利视频手机免费观看| 午夜观看| 国产成人教育视频在线观看| 免费人成动漫在线播放r18| 色噜噜中文网| 四虎音影| 四虎影视在线影院4hu| 日本高清视频色www在线观看| 色亚洲视频| 天堂中文在线www| 欲色网站| 在线天堂网| 色男人社区| 国产婷婷色一区二区三区深爱网| 看真人一一级毛片| 女生张开腿让男人桶| 人与禽交免费网站视频| 激情五月婷婷综合网| 久久久噜噜噜| 久久精品视频5| 97黄网| 五月天婷婷视频在线观看| 久久黄色影片| 精品女同| 国产大片免费观看资源| 国产精品久久久久久影院| 亚洲视频在线网| 欧美一区二区不卡视频| 欧美成年性色mmm| 婷婷精品视频|