在開始前先來介紹下背景:個人日誌採集系統採用ELK(logstash(收集)、elasticsearch(存儲+搜索)、kibana(展現)三個軟件的簡稱)開源架構,在elasticsearch搭建了三臺Linux節點,IP地址分別爲:10.0.48.108,10.0.48.97,10.0.48.98,elasticsearch 2.4.6和kibana4.5.4部署在前兩個節點服務器上,logstash2.3.1部署在最後一臺服務器上,部署過程遇到許多問題,特地記錄下來,之後有新的問題出現也會持續更新。html
1、問題1java
今天在啓動集羣的時候108節點上出現ES【elasticsearch 集羣健康值未鏈接】問題,而97上的ES能正常啓動狀況下咱們用head插件查看elasticsearch集羣狀態以下圖:linux
(圖1)安全
出現這個問題,我最早想到的是去重啓該節點,經過命令:service elasticsearch restart,而後用命令:service elasticsearch status查看ES的狀態,返回的狀態結果以下:服務器
[[WARN ][transport.netty ] [NODENAME] exception caught on transport layer [[id: 0x9634070f]], closing connection java.net.NoRouteToHostException: No route to host at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152) at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105) at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79) at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318) at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42) at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)
從提示來看是由於找不到路由的緣由,首先想到問題可能的緣由是防火牆緣由致使的,然而我在配置的時候已經打開了9200,9300等ES用到的端口,一時也不知道怎麼解決,而後就去Google了一下錯誤提示,找到的答案都是關閉防火牆,竟然都這麼說,我就是去關閉了防火牆,不過很顯然是毫無做用。後來看到又看到有人說是selinux安全策略致使的,因而也去用命令:setenforce 0關閉了,仍是不起做用。到此一直折騰這個問題好久,都沒找到最終解決方法,最後仍是在這裏看到有人說多是一個系統bug,可是應該不影響ES啓動纔對,仔細一些它也對,它僅僅是一個警告(WARN)級別的提示,由此我才從這個坑裏面退了出來。架構
竟然不是這個問題,那麼就確定是其餘啥緣由了,但是一直找啊找就是不知道啥問題啊,看日誌每秒鐘寫進去的都是剛剛那個警告信息,沒有其餘錯誤啊,到這裏完全絕望!最後實在沒辦法只有重裝ES咯,不過還要ES中寫入的數據不會清空。而後重裝,配置,竟然還真就能夠了,這真是奇妙,不過問題緣由我仍是不知道,因而我就回想最近對Linux系統的一些操做,後來終於想起我前些天把JDK給卸載了,從新安裝了一個新的,我猜想SE安裝前就關聯了JAVA的,若是後來改變了,那就會影響到SE。socket
2、解決問題後的思考elasticsearch
(1)有時候看到的錯誤提示,可能不是咱們想要的東西,只是表象,解決問題的時候不要鑽牛角尖測試
(2)在生產系統的話,任何可能的操做均可能影響其餘系統,還好我這裏是測試環境,之後必定要注意spa
(3)解決問題的時候要多嘗試,不要怕麻煩,像我這裏重裝ES也是實在沒辦法才選擇的,若是早一點這麼選擇,我也不會耽擱一天時候就找緣由
3、問題待續
有時間再寫..........