記錄 Elastic Stack 的升級過程(一)

一、背景

公司生產環境的ELK集群上線于2016年10月,當時使用的穩定版本如下:

Elasticsearch  2.3.4
Logstash 2.3.4-1 
Filebeat 2.3.4
Kibana 4.5.3-1

可以看到,上面雖然都同屬于Elastic公司的開源產品,但版本號較為混亂。于是Elastic公司在主版本2之后,統一了Elastic Stack所有的產品版本號,直接跳到5。并且,5版本相較于2版本,有了較大幅度的優化和更新。

截止本文完成時,Elastic Stack的最新穩定版本剛剛更新至6.2.1。考慮到產品穩定性和升級難度,我們決定將整個ELK集群統一升級至次新版本5.6.7,該版本是5版本的最新穩定版本。

本次升級首先在開發環境的ELK集群上操作。在升級的過程中,主要參考了Elastic Stack的官方文檔,但是也踩到了很多文檔中沒有提到的坑。因此 ,我決定將這次的升級過程較為完整的記錄下來,以備升級生產環境時使用。

本次升級按照如下順序:

Elasticsearch
Kibana 
Logstash 
Filebeat

二、Elasticsearch

Elasticsearch 升級主要參考:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/rolling-upgrades.html#upgrade-node

1. JDK版本要求

Elasticsearch 5.6.7 要求JDK版本最低為1.8,而當前為1.7,故需要先升級JDK,步驟:

下載JDK 1.8
地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

卸載舊JDK
rpm -e jdk

安裝新JDK
rpm -ivh XX.rpm

修改環境變量
修改/etc/profile中的路徑為1.8的路徑:

image.png

重啟或執行source /etc/profile使之生效

2. 升級前準備

具體步驟如下:

停止Logstash
升級Elasticsearch前,先停止Logstash服務,對外不再接受Filebeat的日志(Filebeat服務無需關閉)。

禁用集群的分片自動分配功能

curl -XPUT http://IP:9200/_cluster/settings -d' 
{ 
"transient" : { 
"cluster.routing.allocation.enable" : "none" 
} 
}' 

同步數據
curl -XPOST http://IP:9200/_flush/synced

關閉所有節點的服務
service elasticsearch stop

升級Elasticsearch

注意,這里使用rpm安裝時,不要使用-Uvh選項升級,而是先卸載舊的版本,再使用-ivh安裝。另外,舊的配置文件不建議繼續使用,而是將所配置內容替換到新版的配置文件中,除了個別配置外大部分仍然兼容。

對每一個Elasticsearch節點, 我們都要執行如下操作:
卸載舊版本
rpm -e elasticsearch
注意,卸載后,舊的配置文件會以rpmsave后綴保留。

安裝新版本
rpm -ivh XX.rpm

卸載所有插件
進入/usr/share/elasticsearch目錄,執行bin/elasticsearch-plugin list列出所有插件,然后執行 bin/elasticsearch-plugin remove xxx 卸載對應的插件即可。

禁用ES_HEAP_SIZE配置
Elasticsearch 2.4中的內存調優參數ES_HEAP_SIZE現已不再支持,即配置文件/etc/sysconfig/elasticsearch中的ES_HEAP_SIZE配置,已經挪至/etc/sysconfig/jvm.options中。具體請參考:
https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/jvm-options.html

刪除配置bootstrap.mlockall
配置文件/etc/elasticsearch/elasticsearch.yml中,配置bootstrap.mlockall : true在新版中已不再被支持,需要刪除,否則會出現如下錯誤:

image.png

啟動Elasticsearch
service elasticsearch start

開啟集群的分片自動分配功能

curl -XPUT http://IP:9200/_cluster/settings -d' 
{ 
"transient" : { 
"cluster.routing.allocation.enable" : "all" 
} 
}' 

等待集群恢復完畢
恢復完畢后,執行curl 'IP:9200/_cat/health?v',如果顯示狀態為green,表示恢復正常,升級成功:

image.png

啟動Elasticsearch時遇到的問題

升級Elasticsearch后,啟動時可能會出現一些問題,包括:

node.lock錯誤

啟動失敗,日志中出現如下錯誤:


image.png

該錯誤是由于elasticsearch使用到的相關路徑的權限有問題,執行:chown -R elasticsearch:root path,將日志路徑、數據文件路徑、配置路徑都進行權限設置。

bootstrap checks錯誤

啟動失敗,執行service elasticsearch status出現elasticsearch dead but subsys locked, 并且日志中出現如下錯誤:

image.png

image.png

上面的錯誤,是因為有些必要的配置沒有通過Elasticsearch的檢查,我們首先保證啟用如下配置:

max file descriptors
修改/etc/security/limits.conf,如下:

image.png

max number of threads
修改/etc/security/limits.d/90-nproc.conf* soft nproc 1024* soft nproc 2048

memory locking
/etc/elasticseach/elasticsearch.yml中,添加配置 bootstrap.system_call_filter=false
最后,確保/etc/sysconfig/elasticsearch中啟用如下三個配置:

image.png

三、Kibana

Kibana5 已不再兼容Elasticsearch 2。因此,升級Elasticsearch 后,必須也要升級Kibana。

升級Kibana

具體步驟如下:

  • 停止Kibana
    service kibana stop

  • 卸載舊版本
    rpm -e kibana

  • 安裝新版本
    rpm -ivh XX.rpm

  • 升級配置
    手動將舊的配置文件中的配置,替換到新版配置文件中的對應條目中,但注意要確定這些配置在新版本中能否兼容。

  • 啟動Kibana
    service kibana start

注意事項

升級過程中,有如下幾點需要注意:

[root@elk kibana]# adduser kibana
[root@elk kibana]# chown -R kibana:kibana /opt/kibana/optimize
[root@elk kibana]# service kibana start

啟動Kibana時遇到的問題

依次升級完Elasticsearch和Kibana后,查看Kibana,可能會出現如下錯誤:


image.png

解決辦法可以參考https://github.com/elastic/kibana/issues/9888,執行curl -XDELETE http://ip:port/.kibana刪除以前創建的Kibana索引,然后重啟Kibana。

四、Logstash

Logstash的升級主要參考:https://www.elastic.co/guide/en/logstash/5.6/upgrading-logstash-5.0.html

升級Logstash

開發環境部署了兩套Logstash作為負載均衡,我們需要依次進行升級:

  • 升級JDK至1.8
    同Elasticsearch,Logstash也需要JDK1.8,升級方法參考Elasticsearch。

  • 卸載舊版本
    rpm -e logstash

  • 安裝新版本
    rpm -ivh XX.rpm

配置Logstash

安裝完畢后,可以發現,Logstash的配置目錄中有些變化,多了jvm.optionslog4j2.propertieslogstash.ymlstartip.options

image.png

我們可以按需修改logstash.yml中的日志和數據路徑:

image.png

image.png

注意,這些路徑需要提前建立好,并執行chown -R logstash:root path授予logstash:root權限。

啟動Logstash

一定要注意,新版的Logstash不再支持service啟動方式,需要使用sudo initctl start logstash,具體參考:https://www.elastic.co/guide/en/logstash/6.2/running-logstash.html

另外,新版Logstash的conf配置中,也不再支持workers這個參數設置,需要刪掉,否則會出現如下錯誤:

image.png

Logstash成功啟動后,若Filebeat上傳了新的日志,就可以在新版的Kibana中查詢到。

五、Filebeat

由于某些原因,Filebeat 在2017已經由2.3.4升級到了的5.0.0。因此,本次屬于次版本升級,較為方便。Filebeat的升級主要參考:https://www.elastic.co/guide/en/beats/libbeat/5.6/upgrading-minor-versions.html

運行rpm -Uvh XX.rpm進行升級,然后重啟Filebeat即可。另外,由于Filebeat服務部署在了很多節點上,一個個升級非常麻煩,所以可以利用Fabric或Ansible等工具進行遠程批量的升級。

六、總結

除了上面提到的一些問題,可能還有很多坑暫時沒有發現,需要一步一步填。另外,ELK集群的4個重要組件升級完畢后,還有一些輔助的組件或插件也需要升級,如Elasticsearch的管理工具Curator、Kopf等,我將在下一篇文章中進行闡述。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容