<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 167,  comments - 30,  trackbacks - 0
    公司內(nèi)部使用elasticsearch已經(jīng)有一年以上了,主要為后臺檢索提供服務,我們的視頻有千萬級別的數(shù)據(jù)量。
    一些復雜的檢索需求通過es很容易的就能很好的支持。相對其他組件來說還算穩(wěn)定,中間也出現(xiàn)過一些小故障,通過網(wǎng)上提供的解決方案都順利的解決掉。

    首先簡要說明下es插件,我們用了head和bigdesk兩個插件。
    head是一個與es集群交互的web管理控制臺,github地址:https://github.com/mobz/elasticsearch-head
    bigdesk為es集群提供動態(tài)的圖表與統(tǒng)計數(shù)據(jù)的監(jiān)控插件,github地址:https://github.com/lukas-vlcek/bigdesk
    另外還有一個es集群的管理工具,它提供了對es集群操作的API,github地址:https://github.com/lmenezes/elasticsearch-kopf

    本次故障原起是因發(fā)現(xiàn)了es插件bigdesk中有一臺主機采集不到監(jiān)控數(shù)據(jù),另外兩臺監(jiān)控采集數(shù)據(jù)是正常的。
    查詢了日志,從5-30號之后因為一個索引分片未成功,導致這臺機器未正常采集到監(jiān)控數(shù)據(jù),通過head插件將該索引關閉,這里無法徹底刪除索引,所以登錄服務器將索引文件刪除。
    然后,想通過服務器重啟之后看能否正常監(jiān)控到數(shù)據(jù),這里有個疑問是為什么其他節(jié)點能采集到呢?
    es節(jié)點重啟過程參考:https://www.elastic.co/guide/en/elasticsearch/reference/2.0/restart-upgrade.html
    嘗試將問題機器10.130.91.74進行重啟,但是重啟過程總是提示9380端口被占用。
    本機上通過命令 lsof -i:9380進行查看,發(fā)現(xiàn)確實存在占用9380端口的進程,然后暫時將其kill掉。之后,繼續(xù)重啟,但是仍然提示端口被占用,繼續(xù)lsof查看并未發(fā)現(xiàn)有進程占用該端口了。
    org.elasticsearch.transport.BindTransportException: Failed to bind to [9380]
            at org.elasticsearch.transport.netty.NettyTransport.bindServerBootstrap(NettyTransport.java:422)
            at org.elasticsearch.transport.netty.NettyTransport.doStart(NettyTransport.java:283)
            at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
            at org.elasticsearch.transport.TransportService.doStart(TransportService.java:153)
            at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
            at org.elasticsearch.node.internal.InternalNode.start(InternalNode.java:257)
            at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:160)
            at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:248)
            at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)
    Caused by: org.elasticsearch.common.netty.channel.ChannelException: Failed to bind to: /10.130.91.92:9380
            at org.elasticsearch.common.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:272)
            at org.elasticsearch.transport.netty.NettyTransport$1.onPortNumber(NettyTransport.java:413)
            at org.elasticsearch.common.transport.PortsRange.iterate(PortsRange.java:58)
            at org.elasticsearch.transport.netty.NettyTransport.bindServerBootstrap(NettyTransport.java:409)
             8 more
    Caused by: java.net.BindException: Cannot assign requested address
            at sun.nio.ch.Net.bind0(Native Method)
            at sun.nio.ch.Net.bind(Net.java:444)
            at sun.nio.ch.Net.bind(Net.java:436)
            at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
            at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
            at org.elasticsearch.common.netty.channel.socket.nio.NioServerBoss$RegisterTask.run(NioServerBoss.java:193)
            at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.processTaskQueue(AbstractNioSelector.java:391)
            at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:315)
            at org.elasticsearch.common.netty.channel.socket.nio.NioServerBoss.run(NioServerBoss.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)
    [2017-07-21 16:03:55,598][INFO ][node                     ] [10.130.91.74] stopping 
    [2017-07-21 16:03:55,602][INFO ][node                     ] [10.130.91.74] stopped
    [2017-07-21 16:03:55,603][INFO ][node                     ] [10.130.91.74] closing 
    [2017-07-21 16:03:55,614][INFO ][node                     ] [10.130.91.74] closed

    實際根本原因是因es配置文件中一個很關鍵的屬性配置有誤導致,network.host配置成了其他node的IP,因為其他node正常運行中,9280、9380端口都是被占用的,所以會提示這個錯誤。但是配置過程中并沒有注意到network.host不是本機IP,直接修改了如下兩個參數(shù):
    network.bind_host: 0.0.0.0
    network.publish_host: 10.130.91.92
    修改之后,es服務確實能夠啟動了,但是此時就出現(xiàn)整個集群掛了,無法提供服務,汗呀!
    主要原因還是因為沒有明白這些參數(shù)的含義貿(mào)然修改導致的故障。
    后來將配置回滾回去,對照其他es節(jié)點的配置,將network.host修改為本機IP,如果不配置則默認是localhost,啟動之后發(fā)現(xiàn)集群仍然無法使用。
    我們根據(jù)10.130.91.92上的es如下日志:
    [2017-07-21 16:00:25,882][INFO ][cluster.service          ] [10.130.91.92] removed {[10.130.91.74][EqwqlgtMSXORr1XVovSABw][cdn.oss.letv.com][inet[/10.130.91.74:9380]]{master=true},}, reason:
    zen-disco-node_failed([10.130.91.74][EqwqlgtMSXORr1XVovSABw][cdn.oss.letv.com][inet[/10.130.91.74:9380]]{master=true}), reason transport disconnected
    [2017-07-21 16:00:26,024][INFO ][cluster.routing          ] [10.130.91.92] delaying allocation for [44] unassigned shards, next check in [59.8s]
    [2017-07-21 16:11:35,764][WARN ][discovery.zen            ] [10.130.91.92] received join request from node [[10.130.91.74][f5SwMbYxTKyxBmiOHpqFGw][cdn.oss.letv.com][inet[/10.130.91.92:9380]]
    {master=true}], but found existing node [10.130.91.92][DYSZfClbQVaJj8CpofIb_g][cdn.oss.letv.com][inet[/10.130.91.92:9380]]{master=true} with same address, removing existing node
    [2017-07-21 16:11:35,764][INFO ][cluster.service          ] [10.130.91.92] removed {[10.130.91.92][DYSZfClbQVaJj8CpofIb_g][cdn.oss.letv.com][inet[/10.130.91.92:9380]]{master=true},}, added {
    [10.130.91.74][f5SwMbYxTKyxBmiOHpqFGw][cdn.oss.letv.com][inet[/10.130.91.92:9380]]{master=true},}, reason: zen-disco-receive(join from node[[10.130.91.74][f5SwMbYxTKyxBmiOHpqFGw][cdn.oss.let
    v.com][inet[/10.130.91.92:9380]]{master=true}])
    [2017-07-21 16:12:05,766][WARN ][discovery.zen.publish    ] [10.130.91.92] timed out waiting for all nodes to process published state [327] (timeout [30s], pending nodes: [[10.130.91.74][f5S
    wMbYxTKyxBmiOHpqFGw][cdn.oss.letv.com][inet[/10.130.91.92:9380]]{master=true}])
    [2017-07-21 16:12:05,767][INFO ][cluster.routing          ] [10.130.91.92] delaying allocation for [0] unassigned shards, next check in [0s]
    [2017-07-21 16:12:05,768][DEBUG][action.admin.cluster.node.stats] [10.130.91.92] failed to execute on node [D-n-v9E7TgKe8QEkD_en6w]
    java.lang.NullPointerException
    根據(jù)日志能看到:
    從10.130.91.74機器收到了請求,啟用了10.130.91.92:9380端口,但是,發(fā)現(xiàn)是10.130.91.92機器上存在了相同的地址,然后集群將10.130.91.92機器removing existing node從集群中刪除掉了。
    目前情況是三臺機器,2臺不可用,1臺可用,但是沒辦法選舉master了,因為配置中discovery.zen.minimum_master_nodes: 2 選舉master至少有2臺節(jié)點存活才可以。所以,現(xiàn)在是群龍無首了。
    最后,將網(wǎng)絡配置恢復正常,依次重啟每一臺服務器,es集群重新選舉master,集群由red狀態(tài)變?yōu)榱薵reen,服務可用。

    es網(wǎng)絡參數(shù)配置說明:
    設置綁定的ip地址,可以是ipv4或ipv6的,默認為0.0.0.0。 
    network.bind_host: 192.168.0.1  
    設置其它節(jié)點和該節(jié)點交互的ip地址,如果不設置它會自動判斷,值必須是個真實的ip地址。 
    network.publish_host: 192.168.0.1  
    這個參數(shù)是用來同時設置bind_host和publish_host上面兩個參數(shù)。 
    network.host: 192.168.0.1  

    總結:
    主要原因還是不夠細心+對配置不熟,實際端口被占用,日志中已經(jīng)很明顯的體現(xiàn)出來了。
    通讀和理解所有的配置參數(shù),做到心中有數(shù),后續(xù)再遇到問題時,切記要冷靜處理,詳細讀取每一行日志,頭腦要清晰。
    同時,也因為這次故障汲取到一些經(jīng)驗,知道了當網(wǎng)絡配置錯誤引起的問題以及es在這個過程中做了哪些事情。


    參考資料:
    http://www.cnblogs.com/xiaoheike/p/5750222.html
    http://rockelixir.iteye.com/blog/1883373
    https://www.elastic.co/guide/en/elasticsearch/reference/2.0/restart-upgrade.html
    https://github.com/mobz/elasticsearch-head
    https://github.com/lukas-vlcek/bigdesk
    posted on 2017-07-24 19:10 David1228 閱讀(11391) 評論(0)  編輯  收藏 所屬分類: JAVAJ2EEES

    <2017年7月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章檔案

    新聞分類

    新聞檔案

    相冊

    收藏夾

    Java

    Linux知識相關

    Spring相關

    云計算/Linux/虛擬化技術/

    友情博客

    多線程并發(fā)編程

    開源技術

    持久層技術相關

    搜索

    •  

    積分與排名

    • 積分 - 358574
    • 排名 - 154

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲人成高清在线播放| 瑟瑟网站免费网站入口| 在线成人a毛片免费播放| 国产精品亚洲色婷婷99久久精品| 国产成人精品久久亚洲| 最近2019免费中文字幕6| 国产亚洲综合视频| 亚洲成在人天堂在线| 日本无卡码免费一区二区三区| a视频在线免费观看| 亚洲综合色婷婷在线观看| 夜夜春亚洲嫩草影院| 97无码免费人妻超级碰碰碰碰| 一级毛片免费观看不收费| 91亚洲视频在线观看| 亚洲午夜精品一级在线播放放| 国产免费丝袜调教视频| 免费精品视频在线| 亚洲人成伊人成综合网久久| 亚洲人妻av伦理| 女人张开腿等男人桶免费视频| 国产三级在线免费| 四虎成人精品国产永久免费无码| 亚洲的天堂av无码| 亚洲午夜国产精品无码老牛影视| 妞干网手机免费视频| 午夜影院免费观看| 久久久久国色AV免费观看| 亚洲va中文字幕| 亚洲欧洲校园自拍都市| 亚洲老妈激情一区二区三区| 日本免费观看网站| 波多野结衣在线免费视频| 国内少妇偷人精品视频免费| 牛牛在线精品观看免费正| 亚洲娇小性xxxx色| 亚洲经典在线观看| 亚洲丁香色婷婷综合欲色啪| 亚洲一区二区三区免费| 免费国产一级特黄久久| 最近中文字幕mv免费高清视频7|