[日誌處理工作之七]Elasticsearch集羣腦裂現象與保證可靠性的配置

    先說Elasticsearch配置的一個重要組成部分:操作系統。在索引過程中,尤其是有很多分片和副本時,Elasticsearch會創建若干文件。因此,OS對打開文件數量的限制不能少於32000。Linux服務器通常可以在/etc/security/limits.conf中進行修改,並且可以利用ulimit命令來查看當前值。接下來的設置與每個節點的內存空間大小有關。默認的內存空間(1024MB)可能不夠。如果在日誌文件中發現帶有OutOfMemory錯誤的記錄,則應將環境變量ES_HEAP_SIZE設爲大於1024的值。注意不應超過總可用物理內存的50%,剩餘內存可用作磁盤高速緩存,這樣可以大大提高搜索性能。

    昨天在導入數據的時候,數據量不是很大,八十幾萬個event,導入的過程中Kafka lag不斷上升,elasticsearch開始無響應,master與slave斷掉連接,重啓後無法自動發現。查資料後得知這是elasticsearch的腦裂現象,這篇博客 http://m.blog.csdn.net/blog/huwei2003/47004745 提供了處理方案,按照他的說法,處理方式如下:

    9.115.42.77 的elasticsearch的config下的elasticsearch.yml:

################################## Discovery ##################################
discovery.zen.minimum_master_nodes: 1 
discovery.zen.ping.timeout: 120s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["9.115.42.89", "9.115.42.95"]

    9.115.42.89 的elasticsearch的config下的elasticsearch.yml:
################################## Discovery ##################################
discovery.zen.minimum_master_nodes: 1 
discovery.zen.ping.timeout: 120s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["9.115.42.77", "9.115.42.95"]


   9.115.42.95 的elasticsearch的config下的elasticsearch.yml:
################################## Discovery ##################################
discovery.zen.minimum_master_nodes: 1 
discovery.zen.ping.timeout: 120s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["9.115.42.77", "9.115.42.89"]

 均啓動elasticsearch後需要等比較長的一段時間構建集羣,但是經過http://9.115.42.77:9200/_cluster/health?pretty=true發現昨天導入數據生成的shard大部分都unassigned了,導致集羣status爲red,刪除了index,重新導入。作爲indexer的logstash又報出flush exception。

因爲elasticsearch有三種protocol,上面關閉了multicast,這時就要在logstash裏爲node transport mode做配置,配置如下:

output {
  elasticsearch{
    cluster => "elasticsearch_production"
    protocol => "node"
    host => ["9.115.42.77","9.115.42.89","9.115.42.95"]
  }
}

完畢,可以正常工作。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章