Docker + ELK 分布式部署配置

目前单机配置的ELK访问 Kibana 的时候,出现非常缓慢的问题,可能是大量的写入占用了太多的资源,影响了数据查询的速度,所以现在将ElasticSearch改为集群配置,目前单机继续扩容的想法,这样也可以充分利用其它机器的性能来提供日志写入和查询的速度

我们 ELK 选择的版本是 7.1.0 的版本,集群配置主要是对 ElasticSearch 的配置做一定的修改,配置后结构如下图:

Docker + ELK 分布式部署配置_第1张图片

首先开始配置 ElasticSearch 的配置信息

cluster.name: "elk-cluster"
node.name: elk-pro4
network.host: 0.0.0.0
network.publish_host: 172.19.99.39
node.master: true
node.data: true

discovery.type: zen
discovery.seed_hosts:
  - 172.19.99.37:9300
  - 172.19.99.38:9300
  - 172.19.99.39:9300
cluster.initial_master_nodes:
  - elk-pro3
  - elk-pro2
  - elk-pro4

这里配置了三台主机,每台机器都保存数据且可以竞选master,因为版本是 7.1.0 的版本,所以之前版本都是需要配置一个 minimum_master_nodes 参数来防止某一台脱离集群后发生脑裂的问题,所以网上资料一般都会要求这个配置为2,起码有两台机器竞选才能选出master,但是在7.0之后的版本, 官方因为很多用户的错误配置反而增加了集群脑裂的风险所以删除了这个参数,所以不需要再配置这个参数,可以参考 https://www.elastic.co/cn/blog/elasticsearch-7-0-0-released

Docker + ELK 分布式部署配置_第2张图片

三台机器都配置好后,重启之前配置的Docker-compose 即可启动新的 ElasticSearch 服务

然后需要修改 Logstash 的配置参数,支持集群配置,通过修改文件 logstash/pipeline/logstash.conf

input {
        tcp {
                port => 5000
                codec => json
        }
}

## Add your filters / logstash plugins configuration here

output {
    elasticsearch {
        hosts => ["172.19.19.37:9200","172.19.19.38:9200","172.19.19.39:9200"]
        index => "logstash-api-%{+YYYY.MM.dd}"
    }
}

日志记录的 index 按日来滚动,方便日后管理

Kibana 本身就只能连接一台ElasticSearch,所以不需要做什么配置,可以连接任意一台,或者专门跑一个不保存数据且不会竞选的 ElasticSearch 专门给 Kibana 的连接集群也行,目前的问题可能就是 Kibana 连接的 ElasticSearch 如果挂了,就会直接无法查看日志了

 

 

 

你可能感兴趣的:(后端架构)