1000+節(jié)點(diǎn)的cdh集群主服務(wù)遷移全過程
一.?遷移背景:
? ?由于種種原因,線上cdh集群的管理服務(wù)Cloudera Manager所在主機(jī)不能正常使用,Cloudera Manager相關(guān)的服務(wù)需要遷移到新的主機(jī)運(yùn)行,且生產(chǎn)遷移不能影響任何生產(chǎn)環(huán)境的使用。

二. 遷移準(zhǔn)備
? ? 本次遷移主要涉及到的是Cloudera Manager相關(guān)的管理服務(wù),下面我們回顧一下Cloudera Manager整體技術(shù)架構(gòu)以及各個組件的核心作用和對應(yīng)的數(shù)據(jù)存儲。

? ? 從Cloudera Manager整體技術(shù)架構(gòu)我們可以發(fā)現(xiàn),其核心點(diǎn)就是server部分,本次我們需要遷移的真是server部分,server部分包含的組件及作用具體如下:
1.1 Cloudera Manager Server
? ? ?默認(rèn)支持兩個存儲方式,嵌入式?PostgreSQL 數(shù)據(jù)庫和外部MySQL、PostgreSQL 或 Oracle 數(shù)據(jù)庫用來存儲數(shù)據(jù),此部分的存儲數(shù)據(jù)對于集群很重要的,其中包括,集群、服務(wù)、角色的配置以及定義?Cloudera Manager 及其托管主機(jī)部署的其他必要信息。所有這部分的存儲需要及時的備份和監(jiān)控。
說明:這部分我們線上歷史使用的是嵌入式?PostgreSQL 數(shù)據(jù)庫,且和server部分部署在同一個節(jié)點(diǎn),所以也做了從嵌入式?PostgreSQL 數(shù)據(jù)庫遷移數(shù)據(jù)到外部PostgreSQL 數(shù)據(jù)庫。此部分本文不做詳解,可自行參考對應(yīng)資料。
1.2 Activity?Monitor
此部分一般也會選用數(shù)據(jù)庫來存儲,主要存儲的是?MapReduce 作業(yè)的監(jiān)控?cái)?shù)據(jù),默認(rèn)的存儲時間是14天,這部分我們可以根據(jù)實(shí)際使用情況進(jìn)行自定義配置,具體詳情會在安裝錄屏課中做詳細(xì)的講解. 經(jīng)驗(yàn)來說保持默認(rèn)值即可。
?1.3 Service?Monitor
? ? ? ?默認(rèn)的存儲路路徑在主機(jī)的?/var/lib/cloudera-service-monitor/ ,這個服務(wù)組件主要監(jiān)控收集有關(guān)集群中已配置角色和服務(wù)的指標(biāo),并運(yùn)行主動健康測試。這些運(yùn)行狀況測試與空閑和使用時間無關(guān),因?yàn)樗鼈兛偸窍嚓P(guān)的。無論集群中的活動水平如何,服務(wù)監(jiān)視器都會收集指標(biāo)和運(yùn)行狀況測試結(jié)果。即使在空閑集群中,這些數(shù)據(jù)也會繼續(xù)增長。默認(rèn)值也是10G左右,也可以在配置項(xiàng)中自定義更改。
1.4Host Monitor
默認(rèn)的存儲路徑/var/lib/cloudera-host-monitor/,默認(rèn)的存儲也是占用10G大小,主機(jī)監(jiān)視器收集有關(guān)主機(jī)級感興趣項(xiàng)目的指標(biāo)(例如:磁盤空間使用情況、RAM、CPU 使用情況、交換等),并通知主機(jī)健康測試。無論集群中的活動水平如何,主機(jī)監(jiān)視器都會收集指標(biāo)和運(yùn)行狀況測試結(jié)果。即使在空閑集群中,這些數(shù)據(jù)也會繼續(xù)相當(dāng)線性地增長。
1.5 Event Server
默認(rèn)的本地存儲路徑:/var/lib/cloudera-scm-eventserver/,
事件服務(wù)器是一個托管的?Lucene 索引,它收集集群內(nèi)發(fā)生的相關(guān)事件,例如健康測試的結(jié)果、當(dāng)日志條目與一組用于識別感興趣消息的規(guī)則匹配時創(chuàng)建的日志事件,并使它們可用于搜索、過濾和附加操作。您可以在 Cloudera Manager 管理控制臺的診斷>事件選項(xiàng)卡上查看和過濾事件。您還可以使用 Cloudera Manager API 輪詢此數(shù)據(jù)。
三.?開始遷移
整個的遷移分兩部分來完成,?cloudera-manager-server部分和Cloudera Management Service部分。下面是cloudera-manager-server部分的遷移(此部分是遷移的重點(diǎn))。
1.cloudera-manager-server遷移流程如下
第一步:確定安裝?Cloudera Manager 的新主機(jī)。并將新主機(jī)添加到現(xiàn)有的cm管理的集群中(具體步驟參考 cm添加agent的詳細(xì)步驟)
第二步:在新的節(jié)點(diǎn)安裝Cloudera Manager Server服務(wù)。
重要的:需要確保目標(biāo)主機(jī)上的?Cloudera Manager?Server 版本必須與源主機(jī)上的版本匹配。
第三步:需要將/opt/cloudera/parcel-repo,/opt/cloudera/csd,/var/lib/cloudera-scm-server/路徑下的所有數(shù)據(jù)從老節(jié)點(diǎn)拷貝到新的主機(jī)對應(yīng)的路徑下。
重要的:確保文件目錄的權(quán)限為cloudera-scm。
第四步:更新/etc/cloudera-scm-server/db.properties文件中包含數(shù)據(jù)庫名稱、數(shù)據(jù)庫實(shí)例名稱、用戶名和密碼。
重點(diǎn):如果數(shù)據(jù)庫不可用,需要遷移數(shù)據(jù)到新的數(shù)據(jù)庫中,具體的可以參考數(shù)據(jù)庫遷移的資料。
特別注意,如果使用的是mysql進(jìn)行數(shù)據(jù)的存儲,不要遺漏了對應(yīng)路徑下依賴jar包:/usr/share/cmf/lib/mysql-connector-java.jar
第五步:更改所有所有主機(jī)的agent相關(guān)的配置文件,然后重啟所有agent服務(wù)。

補(bǔ)充說明:
這一部分的操作可以使用腳本批量化操作,這里給大家分享一個我們自己使用的ansible的批量執(zhí)行的Playbooks?的配置文件。
cat?change_agent_ip.yml
自動獲取cm中所有agent節(jié)點(diǎn)ip的腳本
cat ds_get_agent.py
執(zhí)行操作腳本:
cat run.sh
第六步:啟動新節(jié)點(diǎn)的Cloudera Manager Server
重點(diǎn):如果遷移過程中沒有遷移數(shù)據(jù)庫,在啟動新的Cloudera Manager Server服務(wù)前需要關(guān)閉老的Cloudera Manager Server,否則會出現(xiàn)Cloudera Manager Server腦裂的問題,當(dāng)然也可以在Cloudera Manager Server配置文件中添加對應(yīng)的參數(shù)來規(guī)避。同時下面配置文件中關(guān)于jvm內(nèi)存的配置,也需要和老節(jié)點(diǎn)保持一致。
cat /etc/default/cloudera-scm-server
上述步驟操作完成,新節(jié)點(diǎn)的cm web 即可正常打開,此時需要重啟一下Cloudera Management Service。

2. Cloudera Management Service部分遷移
? ? ?這一部分的遷移主要是集群cm控制臺進(jìn)行操作,相對來說比較簡單,對應(yīng)服務(wù)的數(shù)據(jù)因?yàn)槎际潜O(jiān)控類型的數(shù)據(jù),所以如果想要保留,把對應(yīng)的目錄數(shù)據(jù)同步到新節(jié)點(diǎn)即可,如果不保留,將現(xiàn)有的服務(wù)組件刪除,在新節(jié)點(diǎn)上重新添加即可。具體細(xì)節(jié)這里不在贅述。
四.? 遷移后驗(yàn)證
在完成步驟三中的所有操作之后,等待5分鐘左右,如果沒有問題,cm頁面上會恢復(fù)到健康狀態(tài)。這時還是需要手動驗(yàn)證幾個點(diǎn),看是不是有異常。
1.觀察服務(wù)和主機(jī)的監(jiān)控指標(biāo)數(shù)據(jù),是否正常更新展示。
2.找一個slave節(jié)點(diǎn),對其操作重啟操作,看是否可以正常完成。
3.修改某個服務(wù)的非核心配置文件,看頁面上是否有配置變更的提示,然后再頁面上分發(fā)配置,看是否可正常完成。
4.如有條件,也可添加一個新的節(jié)點(diǎn)到集群,驗(yàn)證是否可以正常添加節(jié)點(diǎn)。
? ? ? ? 本文由滌生大數(shù)據(jù)強(qiáng)哥分享,強(qiáng)哥前百度資深大數(shù)據(jù)運(yùn)維,現(xiàn)任某上市公司大數(shù)據(jù)運(yùn)維專家崗,運(yùn)維集群數(shù)十個,節(jié)點(diǎn)上千臺,是資深的cdh運(yùn)維專家,在cdh運(yùn)維這塊有著豐富的經(jīng)驗(yàn)和深入的理解。
?? ? ? 滌生大數(shù)據(jù)運(yùn)維課程全部基于生產(chǎn)標(biāo)準(zhǔn)服務(wù)器錄制課程,實(shí)戰(zhàn)使用,目前十幾家中小公司買我們的運(yùn)維課程拿過去直接就可以用,目前也在幫外部公司外包運(yùn)維。大數(shù)據(jù)運(yùn)維課程老師阿里樹哥,前百度強(qiáng)哥,包括我都是管理上千節(jié)點(diǎn)集群的人,此外課程還由騰訊,美團(tuán)小伙伴合作錄制。
? ? ?全網(wǎng)獨(dú)家大數(shù)據(jù)運(yùn)維實(shí)戰(zhàn)課程, 大數(shù)據(jù)運(yùn)維課程適合哪些人?
1.大數(shù)據(jù)運(yùn)維在職的人進(jìn)階,進(jìn)一步提升拿高薪
2.準(zhǔn)備轉(zhuǎn)行大數(shù)據(jù)運(yùn)維的人(試不試需要評估,因?yàn)檫\(yùn)維相對難度大)
3.大數(shù)據(jù)開發(fā)儲備學(xué)習(xí)準(zhǔn)備去中小公司的人:既懂開發(fā)也懂運(yùn)維去小公司很吃香,做管理層,大數(shù)據(jù)架構(gòu)。
