Elasticsearch官檔翻譯——2.6 升級(jí)

升級(jí)

升級(jí)前請(qǐng)注意:

  • 參考版本變化文檔。
  • 升級(jí)前請(qǐng)?jiān)谠陂_發(fā)環(huán)境測(cè)試升級(jí)版本蜘澜。
  • 升級(jí)前備份數(shù)據(jù)施流。不做備份的話是沒法回滾到上一版的。

Elasticsearch通潮尚牛可以使用滾動(dòng)升級(jí)步驟瞪醋,服務(wù)不會(huì)中斷。這章詳細(xì)介紹如何進(jìn)行滾動(dòng)升級(jí)和停機(jī)升級(jí)装诡。

當(dāng)前版本是否支持滾動(dòng)升級(jí)银受,請(qǐng)參照如下表格:

升級(jí)前 升級(jí)后 支持的升級(jí)方式
0.90.x 2.x 停集群升級(jí)
1.x 2.x 停集群升級(jí)
2.x 2.y 滾動(dòng)升級(jí)(y>x)

備份你的數(shù)據(jù)

升級(jí)之前請(qǐng)經(jīng)常做備份,這樣出了問題你可以回滾鸦采。升級(jí)有時(shí)候還包括Lucene版本升級(jí)宾巍,Lucene升級(jí)后更新的索引可能在原來版本的Elasticsearch上跑不起來。

備份1.0往后的版本

在1.0往后的版本做備份渔伯,使用快照這一特性會(huì)方便很多顶霞,詳細(xì)指示看這里:backup and restore with snapshots

備份0.9及以前的版本

備份0.90.x版本步驟如下:

第一步:

下面這一步防止備份的時(shí)候索引刷新到磁盤:

PUT /_all/_settings
{
  "index": {
    "translog.disable_flush": "true"
   }
}
第二步:

下面這步防止集群備份的時(shí)候锣吼,數(shù)據(jù)從一個(gè)節(jié)點(diǎn)平衡到另一個(gè)節(jié)點(diǎn)选浑。

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "none"
  }
}
第三步:備份你的數(shù)據(jù)

等再平衡和索引刷新禁用后,用你喜歡的方法開始備份數(shù)據(jù)(打成tar包玄叠,使用存儲(chǔ)快照或者備份軟件)

第四步:重新打開再平衡和索引刷新

當(dāng)備份完成古徒,不需要再從Elasticsearch讀取數(shù)據(jù)后,必須要重新打開再平衡和索引刷新:

PUT /_all/_settings
{
  "index": {
    "translog.disable_flush": "false"
  }
}

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "all"
  }
}

滾動(dòng)升級(jí)

滾動(dòng)升級(jí)允許Elasticsearch集群一個(gè)節(jié)點(diǎn)一個(gè)節(jié)點(diǎn)升級(jí)读恃,不需要停機(jī)隧膘。集群中不支持同時(shí)運(yùn)行多個(gè)版本代态,因?yàn)榉制粫?huì)從新版本分配到舊版本的節(jié)點(diǎn)上。

從這個(gè)列表中檢查當(dāng)前版本的ES是否支持滾動(dòng)升級(jí)疹吃。

滾動(dòng)升級(jí)步驟如下:

第一步:禁用分片再平衡

當(dāng)你關(guān)閉一個(gè)節(jié)點(diǎn)時(shí)蹦疑,分片分配進(jìn)程將分片從當(dāng)前節(jié)點(diǎn)復(fù)制到集群另一個(gè)節(jié)點(diǎn)上,這將會(huì)浪費(fèi)大量的I/O操作互墓”啬幔可以在關(guān)閉節(jié)點(diǎn)前禁用這個(gè)特性:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "none"
  }
}
第二步:停止不必要的索引蒋搜,并執(zhí)行同步刷新(這一步可選)

你可以在升級(jí)期間愉快的進(jìn)行索引操作篡撵,當(dāng)然,如果你使用如下命令豆挽,停止不必要的索引育谬,并執(zhí)行同步刷新,分片恢復(fù)速度會(huì)更快:

POST /_flush/synced

同步刷新是錦上添花的操作帮哈。如果出現(xiàn)索引掛起的現(xiàn)象操作就會(huì)失敗膛檀,為了安全起見有必要多試幾次。

第三步:?jiǎn)蝹€(gè)節(jié)點(diǎn)停機(jī)并升級(jí)

升級(jí)前關(guān)閉一個(gè)節(jié)點(diǎn)娘侍。

注意:當(dāng)使用zip或tar包升級(jí)咖刃,默認(rèn)情況下Elasticsearch home目錄下的config,data憾筏,log嚎杨,plugins等目錄都會(huì)被覆蓋。
最好解壓到不同的目錄氧腰,這樣升級(jí)期間就不會(huì)刪除原來的目錄了枫浙。自定義的目錄可以通過path.conf和path.data來設(shè)置。
RPM或DEB包會(huì)把目錄放到 合適的位置古拴。

使用rpm/deb安裝包升級(jí):

  • 使用rpmdpkg安裝新包箩帚,所有的目錄都會(huì)被放到合理的位置,配置文件不會(huì)被覆蓋黄痪。

使用zip或tar包解壓安裝:

  • 解壓安裝包紧帕,確保不要覆蓋configdata目錄。
  • 從舊的安裝目錄拷貝conf目錄到新安裝目錄桅打,或者使用--path.conf選項(xiàng)到外部的config目錄
  • 從舊的安裝目錄拷貝data目錄到新的安裝目錄是嗜,或修改config/elasticsearch.yml中的path.data設(shè)置data目錄為原來的目錄。
第四步:?jiǎn)?dòng)升級(jí)過的節(jié)點(diǎn)

啟動(dòng)升級(jí)后的節(jié)點(diǎn)并確認(rèn)加入到集群中油额,可以通過日志或下面的命令來確認(rèn):

GET _cat/nodes

第四步:重新打開分片再平衡

當(dāng)節(jié)點(diǎn)加入集群后叠纷,使用以下命令重啟分片再平衡:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "all"
  }
}
第六步:等待節(jié)點(diǎn)恢復(fù)正常

等待集群分片平衡結(jié)束后,再升級(jí)下一個(gè)節(jié)點(diǎn)潦嘶。這一過程可以使用下面的命令檢查:

GET _cat/health

等到status這一列由yellow變成green涩嚣,Green表示主分片和副本都分配完了崇众。

重點(diǎn):滾動(dòng)升級(jí)過程中,高版本上的主分片不會(huì)把副本分配到低版本的節(jié)點(diǎn)航厚,因?yàn)楦甙姹镜臄?shù)據(jù)格式老版本不認(rèn)顷歌。
如果高版本的主分片沒法分配副本,換句話說如果集群中只剩下了一個(gè)高版本節(jié)點(diǎn)幔睬,那么節(jié)點(diǎn)就保持未分配的狀態(tài)眯漩,集群健康會(huì)保持yellow
這種情況下麻顶,檢查下有沒有初始化或分片分配在執(zhí)行赦抖。
一旦另一個(gè)節(jié)點(diǎn)升級(jí)結(jié)束后,分片將會(huì)被分配辅肾,然后集群狀態(tài)會(huì)恢復(fù)到green队萤。

沒有使用同步刷新的分片恢復(fù)時(shí)間會(huì)慢一點(diǎn)。分片的狀態(tài)可以通過_cat/recovery
請(qǐng)求監(jiān)控:

GET _cat/recovery

第七部:重復(fù)上述步驟

當(dāng)集群穩(wěn)定并且節(jié)點(diǎn)恢復(fù)后矫钓,對(duì)剩下的節(jié)點(diǎn)重復(fù)上述過程要尔。


停集群升級(jí)

當(dāng)升級(jí)跨越大版本的Elasticsearch時(shí),需要停集群重啟:從0.x到1.x或1.x到2.x等新娜。滾動(dòng)升級(jí)不支持跨大版本的集群赵辕。
按照以下步驟進(jìn)行停機(jī)群升級(jí):

第一步:禁用分片分配

當(dāng)你關(guān)閉一個(gè)節(jié)點(diǎn)時(shí),分片分配進(jìn)程將分片從當(dāng)前節(jié)點(diǎn)復(fù)制到集群另一個(gè)節(jié)點(diǎn)上概龄,這將會(huì)浪費(fèi)大量的I/O操作还惠。可以在關(guān)閉節(jié)點(diǎn)前禁用這個(gè)特性:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "none"
  }
}

如果從0.90.x升級(jí)到1.x旁钧,使用以下配置:

PUT /_cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.disable_allocation": true,
    "cluster.routing.allocation.enable": "none"
  }
}
第二步:執(zhí)行同步刷新

停止不必要的索引吸重,并執(zhí)行同步刷新,分片恢復(fù)速度會(huì)更快:

POST /_flush/synced

同步刷新是錦上添花的操作歪今。如果出現(xiàn)索引掛起的現(xiàn)象操作就會(huì)失敗嚎幸,為了安全起見有必要多試幾次。

第三步:關(guān)閉并升級(jí)全部的節(jié)點(diǎn):

關(guān)閉集群全部節(jié)點(diǎn)的ES服務(wù)寄猩,每個(gè)節(jié)點(diǎn)使用和 滾動(dòng)重啟 一樣的方法升級(jí)每個(gè)節(jié)點(diǎn)嫉晶。

第四步:?jiǎn)?dòng)集群

如果你有專門的master節(jié)點(diǎn)群(master節(jié)點(diǎn)就是node.master為true并且node.data為false的節(jié)點(diǎn)),最好先啟動(dòng)它們田篇。等待它們形成集群并選舉出主節(jié)點(diǎn)替废。這個(gè)過程可以通過日志檢查。

一旦達(dá)到 最小可選舉主節(jié)點(diǎn)個(gè)數(shù)時(shí)泊柬,將會(huì)形成一個(gè)集群并選舉出主節(jié)點(diǎn)椎镣。然后就可以通過_cat/health_cat/nodes API監(jiān)控節(jié)點(diǎn)加入雞群的情況:

GET _cat/health
GET _cat/nodes

使用上述API檢查節(jié)點(diǎn)是否成功加入集群。

第五步:等待集群恢復(fù)至yellow

只要節(jié)點(diǎn)加入集群兽赁,節(jié)點(diǎn)上的主分片就開始在本地恢復(fù)状答。最初_cat/health將會(huì)返回red狀態(tài)冷守,表示有主分片還沒分配。
一旦每個(gè)節(jié)點(diǎn)的本地分片都恢復(fù)了惊科,狀態(tài)將會(huì)變成yellow拍摇,表示所有的主分片都分配了,但并不是所有副本都有分配馆截。這就是期待的效果充活,畢竟分片平衡還被禁用中。

第六步:重啟平衡

延后副本分配蜡娶,直到所有節(jié)點(diǎn)都加入集群混卵,master就可以給本地已有分片拷貝的節(jié)點(diǎn)分配副本了。這時(shí)所有節(jié)點(diǎn)都在集群中翎蹈,可以安全得重啟分片平衡了淮菠。

PUT /_cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": "all"
  }
}

如果從0.90.x升級(jí)到1.x男公,使用以下配置:

PUT /_cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.disable_allocation": false,
    "cluster.routing.allocation.enable": "all"
  }
}

集群此時(shí)開始分配副本到所有節(jié)點(diǎn)荤堪,這時(shí)索引和搜索操作都是安全的了。但是如果你等恢復(fù)結(jié)束后再操作索引分片會(huì)恢復(fù)得快一點(diǎn)枢赔。

你可以通過 _cat/health_cat/recovery監(jiān)控這個(gè)過程

一旦_cat/health返回結(jié)果的 status列返回 green澄阳,說明所有的主分片和副本都分配完畢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末踏拜,一起剝皮案震驚了整個(gè)濱河市碎赢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌速梗,老刑警劉巖肮塞,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異姻锁,居然都是意外死亡枕赵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門位隶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拷窜,“玉大人,你說我怎么就攤上這事涧黄±好粒” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵笋妥,是天一觀的道長(zhǎng)懊昨。 經(jīng)常有香客問我,道長(zhǎng)春宣,這世上最難降的妖魔是什么酵颁? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任狈孔,我火速辦了婚禮,結(jié)果婚禮上材义,老公的妹妹穿的比我還像新娘均抽。我一直安慰自己,他們只是感情好其掂,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布油挥。 她就那樣靜靜地躺著,像睡著了一般款熬。 火紅的嫁衣襯著肌膚如雪深寥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天贤牛,我揣著相機(jī)與錄音惋鹅,去河邊找鬼。 笑死殉簸,一個(gè)胖子當(dāng)著我的面吹牛闰集,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播般卑,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼武鲁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蝠检?” 一聲冷哼從身側(cè)響起沐鼠,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叹谁,沒想到半個(gè)月后饲梭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡焰檩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年憔涉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锅尘。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡监氢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出藤违,到底是詐尸還是另有隱情浪腐,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布顿乒,位于F島的核電站议街,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏璧榄。R本人自食惡果不足惜特漩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一吧雹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涂身,春花似錦雄卷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至悴能,卻和暖如春揣钦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漠酿。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工冯凹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人炒嘲。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓宇姚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親摸吠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子空凸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容