我正在努力配置logstash和elasticsearch。 在我的logstash配置文件输出部分。
elasticsearch {
codec => json_lines
cluster => "firstEsearch_cluster"
protocol => "http"
host => "192.168.56.3"
port => "9200"
}
如果我这样做,我就可以与弹性搜索实例进行通信
但是现在我在各种机器上有多个弹性搜索节点,我在那里复制数据以从故障中恢复,机器在同一网络中。
现在,当我的计算机192.168.56.3
失败且192.168.56.4
和192.168.56.5
正在运行elasticsearch的其他节点时,由于计算机192.168.56.3
无法将日志发送到elasticsearch集群失意了。所以
当我尝试这样做时:
elasticsearch {
codec => json_lines
cluster => "firstEsearch_cluster"
protocol => "http"
#host => "192.168.56.3"
#port => "9200"
}
logstash无法连接到elasticsearch实例,并且无法发送日志。
答案 0 :(得分:5)
使用DNS名称部署负载均衡器,并将elasticsearch输出指向它。负载均衡器会将请求路由到活动的elasticsearch节点。
答案 1 :(得分:2)
您可以在充当客户端节点的索引器上运行设置本地ES实例。使用以下选项配置节点
node.master: false
node.data: false
然后将您的elasticsearch输出指向localhost。此客户机节点不会存储任何数据,只是充当其余节点的负载均衡器。
答案 2 :(得分:0)
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";
}
}
}