簡體   English   中英

Elasticsearch和Logstash的故障轉移

[英]Failover for elasticsearch and logstash

我正在努力配置logstash和elasticsearch。 在我的logstash配置文件輸出部分。

elasticsearch {
    codec => json_lines
    cluster => "firstEsearch_cluster"
    protocol => "http"
    host => "192.168.56.3"
    port => "9200"
}

如果我這樣做,我就能夠與elasticsearch實例進行通信

但是現在我在不同的機器上有多個用於彈性搜索的節點,在這些機器上我復制數據以從故障中恢復並且機器在同一網絡中

現在當我的機器192.168.56.3失敗並且192.168.56.4192.168.56.5正在運行elasticsearch的其他節點時,由於機器192.168.56.3已關閉,因此無法將日志發送到elasticsearch集群。 所以

  1. logstash的輸出配置應該是什么,這樣當其中一台機器出現故障時,我仍然可以將日志發送到elasticsearch集群

當我嘗試這樣做時:

elasticsearch {
    codec => json_lines
    cluster => "firstEsearch_cluster"
    protocol => "http"
    #host => "192.168.56.3"
    #port => "9200"
}

logstash無法連接到elasticsearch實例,也無法發送日志。

使用DNS名稱部署負載均衡器,並將elasticsearch輸出指向它。 負載均衡器會將請求路由到活動的elasticsearch節點。

您可以在充當客戶機節點的索引器上運行設置本地ES實例。 使用以下選項配置節點

node.master: false
node.data: false

然后只需將您的elasticsearch輸出指向localhost。 該客戶端節點將不存儲任何數據,僅充當其余節點的負載平衡器。

Elasticsearch(現在稱為彈性)現在建議設置一個可以進行負載平衡的nginx代理。 將您的logstash服務器指向代理,然后nginx將在集群中的節點之間進行循環。

https://www.elastic.co/blog/playing-http-tricks-nginx/

這是nginx配置可能看起來的片段。 將您的logstash服務器指向端口8080。

events {
    worker_connections  1024;
}

http {

  upstream elasticsearch {
    server 127.0.0.1:9200;
    server 127.0.0.1:9201;
    server 127.0.0.1:9202;

    keepalive 15;
  }

  server {
    listen 8080;

    location / {
      proxy_pass http://elasticsearch;
      proxy_http_version 1.1;
      proxy_set_header Connection "Keep-Alive";
      proxy_set_header Proxy-Connection "Keep-Alive";
    }

  }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM