www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 架構師社區(qū)
[導讀]作者介紹 李猛(ynuosoft),Elastic-stack產(chǎn)品深度用戶,ES認證工程師,2012年接觸Elasticsearch,對Elastic-Stack開發(fā)、架構、運維等方面有深入體驗,實踐過多種Elasticsearch項目,最暴力的大數(shù)據(jù)分析應用,最復雜的業(yè)務系統(tǒng)應用;業(yè)余為企業(yè)提供Elastic-sta

ich_media_content " id="js_content">

完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)


作者介紹

李猛(ynuosoft),Elastic-stack產(chǎn)品深度用戶,ES認證工程師,2012年接觸Elasticsearch,對Elastic-Stack開發(fā)、架構、運維等方面有深入體驗,實踐過多種Elasticsearch項目,最暴力的大數(shù)據(jù)分析應用,最復雜的業(yè)務系統(tǒng)應用;業(yè)余為企業(yè)提供Elastic-stack咨詢培訓以及調優(yōu)實施。


前言


Elastic自身設計了集群分片的負載平衡機制,當有新數(shù)據(jù)節(jié)點加入集群或者離開集群,集群會自動平衡分片的負載分布。


需求背景


公司原有大數(shù)據(jù)平臺基于公有云構建,由于種種原因,現(xiàn)在需要遷移到自建機房,Elasticsearch集群承擔了大數(shù)據(jù)平臺主要的對外查詢需求,也有部分實時計算需求基于Elasticsearch實現(xiàn),所以需要在不影響應用系統(tǒng)體驗的情況下做到平滑的遷移。本次分享講述我們如何進行平滑遷移以及如何避坑。


需要遷移的主要有兩部分:


  • 對外提供的服務API,這些API是與Elastic集群綁定的,屬于業(yè)務場景定制化開發(fā);

  • Elasticsearch集群遷移,數(shù)據(jù)需要遷移,節(jié)點也需要全部遷移。


完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)

圖示:公有云集群+自建機房集群示意圖,業(yè)務系統(tǒng)查詢圖


遷移策略


大數(shù)據(jù)平臺的Elastic集群直接對外提供實時查詢服務,任何影響Elastic集群平穩(wěn)的操作都應該避免,那我們的集群遷移策略也側重平穩(wěn),時間上可以寬松一些,遷移主要的工作有以下幾個:


  • 關閉集群自動平衡;

  • 啟動自有機房新節(jié)點與公有云自建集群組成一個集群;

  • 人工遷移集群數(shù)據(jù)到新節(jié)點;

  • 外圍訪問切換到新節(jié)點;

  • 關閉公有云節(jié)點;

  • 開啟集群自動平衡。

遷移步驟


遷移過程中有很多步驟操作,是有嚴格先后順序的,如果出錯則會造成集群動蕩,影響應用體驗。此時Elastic的版本是6.5.X,當時最新的版本,遷移完成之后也全部升級到6.8.X。


1、原有集群架構


完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)

圖示:原有集群架構,數(shù)據(jù)節(jié)點與管理節(jié)點分離


1)Elasticsearch節(jié)點有很多角色(管理節(jié)點、數(shù)據(jù)節(jié)點,協(xié)調節(jié)點),默認單節(jié)點常用角色全部開啟。所以在早期搭建Elastic集群時,就按照角色分離的職責將管理節(jié)點與數(shù)據(jù)節(jié)點分離部署,這也是后面集群遷移能夠順利進行的重要前提。多數(shù)初學者在剛剛接觸Elastic投入生產(chǎn)環(huán)境時會犯一個錯誤,節(jié)點角色不分離,當數(shù)據(jù)節(jié)點的資源消耗過度會導致集群管理節(jié)點響應變慢,從而影響整體集群響應。



#管理節(jié)點角色設置

 node.master: true

 node.data: false

#數(shù)據(jù)節(jié)點角色設置

 node.master: false

 node.data: true


2)Elastic對外提供服務時中間會增加一層負載代理,如定制服務API與實時計算應用訪問Elastic集群都需要走代理。


3)Hadoop集群與Elastic集群互相訪問是基于官方提供的ES-Hadoop驅動包,由于實現(xiàn)原理的限制,不能做代理,所以是直接訪問,都是離線任務交互。


2、配置新集群


1)因為是遷移到新集群節(jié)點,原有節(jié)點最后都需要關閉,新集群節(jié)點同樣也需要管理節(jié)點與數(shù)據(jù)節(jié)點分離,新舊節(jié)點需要平滑遷移,所以新舊節(jié)點在啟動之后就需要在同一集群中,新節(jié)點Hosts同時指向新管理節(jié)點與舊管理節(jié)點 ,關鍵設置如下:



#配置管理節(jié)點IP+PORT

discovery.zen.ping.unicast.hosts: ["多個舊管理節(jié)點 IP:PORT","多個新管理節(jié)點 IP:PORT"]


2)新集群服務器采用的全部是物理機,CPU核數(shù)很多,內存充足,掛載了多個硬盤,為了充分利用物理機性能,所以單服務器會部署多實例,主要是部署多個數(shù)據(jù)節(jié)點。在同一機器啟動多個Elastic實例,需要做資源隔離,尤其是CPU核數(shù)隔離,CPU的核數(shù)決定了Elastic默認線程池的線程數(shù),如果不做設置,默認啟動多個數(shù)據(jù)實例,會出現(xiàn)資源競爭問題,設置如下:



#配置處理器數(shù)量

processors: 數(shù)值<=(CPU核數(shù)/實例數(shù))


3)公有云與自建機房直接通過專線連接,新舊集群節(jié)點在啟動之后依然是一個集群。


完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)

圖示:新舊集群示意圖與多實例示意圖


3、禁用集群數(shù)據(jù)平衡


Elasticsearch集群有自動的數(shù)據(jù)分片平衡分配機制,默認是按照分片的數(shù)量平均分布,集群每個數(shù)據(jù)節(jié)點上的索引分片數(shù)量默認是相同的,最多有奇偶不一致。


當有新的帶有數(shù)據(jù)角色節(jié)點加入集群或者離開集群,集群會默認啟動自動平衡機制,索引分片會在數(shù)據(jù)節(jié)點之間平衡漂移,達到平均分布之后停止,頻繁的集群節(jié)點加入或者下線會嚴重影響集群的IO,影響集群響應速度,所以要盡量避免次情況發(fā)生。說到這里,在我的從業(yè)中,發(fā)現(xiàn)很多初級運維人員在部署Elastic集群時,會很喜歡設置系統(tǒng)級別Elastic實例進程自動啟動,這個其實是個很糟糕的機制,當發(fā)現(xiàn)服務器Elastic實例關閉,不是馬上重啟,而是需要人工介入分析具體原因,如果頻繁關閉重啟,這樣很容易造成集群問題。


1)第一個是禁用集群自動平衡,首先要禁止集群新創(chuàng)建索引,新索引之間分配到新的數(shù)據(jù)節(jié)點,其次防止新的數(shù)據(jù)節(jié)點啟動之后,集群分片開始平衡遷移,影響集群IO,設置如下:



#禁用集群新創(chuàng)建索引分配

cluster.routing.allocation.enable: false 

#禁用集群自動平衡

cluster.routing.rebalance.enable: false


2)第二個是限制已有索引數(shù)據(jù)的分布范圍,暫時只容許分布在舊的數(shù)據(jù)節(jié)點上,舊集群數(shù)據(jù)節(jié)點在早期部署時并未設置自定義標簽,所以只能通過設置IP范圍限制,還有就是后面在遷移數(shù)據(jù)時需要按找索引維度逐步遷移,控制集群遷移的并行度。設置如下:



#限制索引的分布范圍

"index.routing.allocation.include._ip": "多個舊集群IP"


4、啟動新集群數(shù)據(jù)節(jié)點


在禁用舊集群的數(shù)據(jù)自動平衡之后,啟動新集群數(shù)據(jù)節(jié)點,這一步是安全的,可以全部啟動,此時集群數(shù)據(jù)節(jié)點有很多,舊數(shù)據(jù)節(jié)點有數(shù)據(jù),新數(shù)據(jù)節(jié)點無數(shù)據(jù),新的數(shù)據(jù)節(jié)點無任何查詢與寫入。


由于新數(shù)據(jù)節(jié)點是全新搭建,可以提前設置節(jié)點自定義屬性,方便之后運維設置。設置如下:



#集群機架屬性

node.attr.rack: rack1

#集群數(shù)據(jù)中心

node.attr.zone: zone1

#實例節(jié)點硬盤

node.attr.disk: ssd1

#更多屬性......

node.attr.xxxx: yyy1

...


完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)

圖示:僅優(yōu)先啟動數(shù)據(jù)節(jié)點


5、切換集群訪問


Elasticsearch集群主要有幾個使用方:


1)Hadoop平臺離線數(shù)據(jù)寫入ES,從ES抽取數(shù)據(jù)。Elastic提供了Hadoop直連訪問驅動。如Hive是通過創(chuàng)建映射表與Elasticsearch索引關聯(lián)的,新的數(shù)據(jù)節(jié)點啟動之后,原有所有Hive-Es映射表需要全部重新創(chuàng)建,更換其中的IP+PORT指向;由于Hive有很多與Elastic關聯(lián)的表,所以短時間內沒有那么快替換完成,新舊數(shù)據(jù)節(jié)點需要共存一段時間,不能在數(shù)據(jù)遷移完成之后馬上關閉。



#Hive指定連接

es.nodes=多個數(shù)據(jù)節(jié)點IP+PORT


2)業(yè)務系統(tǒng)應用實時查詢。這種切換比較簡單,Elastic集群對外提供了代理訪問,業(yè)務系統(tǒng)應用訪問首先要調用大數(shù)據(jù)提供的API,這些定制化的API內部也是通過代理訪問Elastic集群。


3)大數(shù)據(jù)中心應用實時計算數(shù)據(jù)寫入。實時計算程序上游有kafka隊列,基于kafka自帶的offset機制,在新集群啟動實時計算應用,然后關閉舊集群實時計算應用,就可以完成切換。


6、手動轉移數(shù)據(jù)


為什么要手動遷移數(shù)據(jù) ?


  • 公有云與新集群機房是跨網(wǎng)段,網(wǎng)絡帶寬有限;

  • 集群中有很多大索引,單索引數(shù)據(jù)超過數(shù)百GB,這種索引移動會會很傷集群IO;

  • 新舊數(shù)據(jù)節(jié)點會共存一段時間,自動平衡會導致大量的跨網(wǎng)絡的查詢與寫入,很傷網(wǎng)絡IO。


遷移數(shù)據(jù)的原則如下:


  • 索引數(shù)據(jù)量小的優(yōu)先;

  • 離線更新的索引數(shù)據(jù)優(yōu)先;

  • 業(yè)務系統(tǒng)查詢頻率低索引數(shù)據(jù)的優(yōu)先;

  • 遷移索引數(shù)據(jù)控制并行度,每次操作控制在網(wǎng)絡帶寬限制之內。


遷移數(shù)據(jù)也是通過限制索引分布IP范圍,設置如下:



#限制索引的分布范圍

"index.routing.allocation.include._ip": "多個新集群IP"


7、關閉舊集群數(shù)據(jù)節(jié)點


關閉舊集群數(shù)據(jù)節(jié)點是一個逐步的過程,一個一個關閉,在一段時間內新舊集群數(shù)據(jù)節(jié)點需要共存,應用訪問切換并沒有那么快進行,且要支持隨時回滾操作。關閉舊集群據(jù)節(jié)點有2個前提條件,如下:


  • 舊集群索引數(shù)據(jù)必須遷移完成;

  • 集群訪問切換必須已經(jīng)完成。


完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)

圖示:關閉舊集群數(shù)據(jù)節(jié)點


8、啟動新集群管理節(jié)點


為什么要在最后啟動新集群管理節(jié)點?并且同步關閉舊集群管理節(jié)點?


  • 一個Elasticsearch集群只有一個工作管理節(jié)點,負責維護集群所有的元數(shù)據(jù)信息;其余的是備選管理節(jié)點,只是同步集群元數(shù)據(jù)信息,不參與協(xié)調管理。工作主節(jié)點關閉集群需要重新選舉工作主節(jié)點,此時集群會處于半停頓狀態(tài),雖然很快,也會有影響;

  • 舊集群已經(jīng)有5個管理節(jié)點,其中一個是工作主節(jié)點,其余4個是備選節(jié)點,因為Elastic版本是6.5.X,原有的集群腦裂因子設置是3=(5/2+1),當啟動新集群的管理節(jié)點,若網(wǎng)絡出現(xiàn)短暫通信問題,集群腦裂因子設置會無效。


切換新舊管理節(jié)點的策略如下:


  • 每啟動一個新集群管理節(jié)點 ,關閉一個舊集群備選管理節(jié)點;

  • 最后關閉舊集群工作管理節(jié)點,集群重新選舉新的工作管理節(jié)點。


完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)

圖示:啟動新集群管理節(jié)點


9、啟用集群自動平衡


在集群遷移之前,已經(jīng)禁用了集群的自動平衡機制,集群遷移結束之后,需要恢復這種機制。



#禁用集群新創(chuàng)建索引分配

cluster.routing.allocation.enable: true

#禁用集群自動平衡

cluster.routing.rebalance.enable: true


涉及技術


1、集群彈性


在我們能如此平滑的完成Elasticsearch從公有云遷移到自有機房,得益于與共用集群這個概念。


  • 個人認為這是Elasticsearch最大特性賣點,設計上任意節(jié)點都可以很容易加入集群或者離開集群,集群都可以彈性的平滑擴展,基本不影響系統(tǒng)運行穩(wěn)定;

  • 在業(yè)務系統(tǒng)發(fā)展早期,可以部署少量節(jié)點,發(fā)展后期可以部署更多節(jié)點或者部署更強的服務器,以達到最佳的性價比配置,從成本與性能平衡;

  • 自動化運維方面節(jié)約成本,相比傳統(tǒng)的關系型數(shù)據(jù)庫集群規(guī)模龐大之后,需要關注的點很多,而Elastic很少,大中型集群規(guī)模以下幾乎無需專門的Elastic運維人員。


2、集群選舉


  • 主從架構模式,一個集群只能有一個工作狀態(tài)的管理節(jié)點,其余管理節(jié)點是備選,備選數(shù)量原則上不限制。很多大數(shù)據(jù)產(chǎn)品管理節(jié)點僅支持一主一從,如Greenplum、Hadoop、Prestodb;

  • 工作管理節(jié)點自動選舉,工作管理節(jié)點關閉之后自動觸發(fā)集群重新選舉,無需外部三方應用,無需人工干預。很多大數(shù)據(jù)產(chǎn)品需要人工切換或者借助第三方軟件應用,如Greenplum、Hadoop、Prestodb。


3、節(jié)點角色


Elasticsearch支持多種節(jié)點角色,一個節(jié)點可以支持多個角色,也可以支持一種角色。


完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)

圖示:集群節(jié)點角色


節(jié)點角色說明:


  • Master,管理節(jié)點,管理集群元數(shù)據(jù)信息,集群節(jié)點信息,集群索引元數(shù)據(jù)信息;

  • Voting,投票節(jié)點,參與集群管理節(jié)點選舉投票,注意7.X以上版本才支持;

  • Data,數(shù)據(jù)節(jié)點,存儲實際數(shù)據(jù),提供初步聯(lián)合查詢,初步聚合查詢,也可以作為協(xié)調節(jié)點;

  • Ingest,數(shù)據(jù)處理節(jié)點,類似ETL處理;

  • Coordinate,協(xié)調節(jié)點,數(shù)據(jù)查詢協(xié)調、數(shù)據(jù)寫入?yún)f(xié)調;

  • Machine Learning,機器學習節(jié)點,模型訓練與模型預測。

4、協(xié)調路由


Elasticsearch集群中有多個節(jié)點,其中任一節(jié)點都可以查詢數(shù)據(jù)或者寫入數(shù)據(jù),集群內部節(jié)點會有路由機制協(xié)調,轉發(fā)請求到索引分片所在的節(jié)點。我們在遷移集群時采用應用代理切換,外部訪問從舊集群數(shù)據(jù)節(jié)點切換到新集群數(shù)據(jù)節(jié)點,就是基于此特點。


完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)

圖示:集群路由示意圖,查詢過程/更新過程


5、分片副本


分片與副本是Elasticsearch集群實現(xiàn)分布式最重要前提。


  • 分片機制,一個索引可以分成多個分片,分片數(shù)據(jù)可以分布在任意集群數(shù)據(jù)節(jié)點上,此機制可以保證我們遷移大的索引數(shù)據(jù)時,按照分片一個一個遷移,而不用一次性遷移所有的分片,有效減少磁盤IO與網(wǎng)絡IO;

  • 副本機制,一個索引主分片可以有多個副本分片,主分片與副本分片可以任意切換,無需人工切換。這種機制可以保證我們在遷移大的數(shù)據(jù)索引時,僅遷移主分片數(shù)據(jù)即可,有效減少磁盤IO與網(wǎng)絡IO。



#副本設置

index.number_of_replicas: 數(shù)值,默認1


#分片遷移API

POST /_cluster/reroute

{

    "commands" : [

        {

            "move" : {

                "index" : "test_index", "shard" : 0,

                "from_node" : "node1", "to_node" : "node2"

            }

        }

    ]}


6、分布過濾


Elasticsearch本身提供了多種索引分片分布過濾操作,特別是在集群規(guī)模比較大時,需要按照業(yè)務領域隔離集群資源。如有的業(yè)務索引是歷史數(shù)據(jù),數(shù)據(jù)量很大,僅偶爾低頻率查詢,可以做一些冷熱分離設置。



# 分布過濾設置

index.routing.allocation.include.{attribute}

index.routing.allocation.require.{attribute}

index.routing.allocation.exclude.{attribute}


總結


  • Elastic集群遷移到物理機之后,運行性能較之前有很大的提高,并行寫入性能提升好幾倍,查詢與寫入交叉影響降低很多;

  • Elastic官方文檔非常詳細的描述了各種特性功能,但并沒有針對數(shù)據(jù)遷移專門列舉一個完整的步驟,掌握Elastic最好的方式是實戰(zhàn)與理論并行,深入Elastic背后的實現(xiàn)原理,嘗試多種項目的實戰(zhàn)。


在跨越速運大數(shù)據(jù)部門任職時,基于公司實際需求,得出的一些經(jīng)驗與思考,提供后來者借鑒參考。




特別推薦一個分享架構+算法的優(yōu)質內容,還沒關注的小伙伴,可以長按關注一下:

完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)

長按訂閱更多精彩▼

完美避坑!記一次Elasticsearch集群遷移架構實戰(zhàn)

如有收獲,點個在看,誠摯感謝

免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉