Elasticsearch集群节点连通、Logstash输出配置及数据接收节点问询
3节点Elasticsearch集群相关问题解答
一、集群内节点互通配置
- 先确保所有节点网络互通,防火墙放开ES核心端口:TCP 9200(HTTP对外服务端口)、TCP 9300(节点内部传输通信端口)。
- 所有节点的
elasticsearch.yml配置需满足以下要求:cluster.name参数值完全一致,只有相同集群名的节点才会被互相识别discovery.seed_hosts参数填写所有节点的IP/主机名列表,例如3个节点IP为192.168.1.10、192.168.1.11、192.168.1.12,配置为discovery.seed_hosts: ["192.168.1.10", "192.168.1.11", "192.168.1.12"]- 首次初始化集群时,
cluster.initial_master_nodes参数填写所有具备master资格节点的node.name值,集群启动成功后可移除该配置
- 若集群开启了安全认证,需保证所有节点的证书、认证账号密码配置一致,节点间通信会进行身份校验。
二、Logstash对接ES集群配置及接收节点选择
1. 接收Logstash数据的节点选择
三类节点的分工不同,接收写入的优先级如下:
- ingest节点:是最优选择,该类型节点专门负责数据写入前的预处理、流量转发,不会占用master、data节点的核心资源
- data节点:如果集群没有单独部署ingest节点,可选择data节点接收写入,该类节点本身也支持处理写入请求
- master节点:绝对不要用来接收业务写入请求,master仅负责集群元数据管理、分片调度等管控工作,负载过高会直接导致集群故障
2. Logstash output配置示例
配置文件参考如下:
output { elasticsearch { # 填写集群内可接收写入的节点IP:端口列表,建议至少填2个避免单节点故障 hosts => ["192.168.1.10:9200", "192.168.1.11:9200"] # 若ES开启身份认证,配置对应账号密码 user => "elastic" password => "你的ES访问密码" # 配置写入的索引名,支持按时间动态生成 index => "业务日志-%{+YYYY.MM.dd}" # 如有自定义ingest处理管道可在此指定 # pipeline => "自定义pipeline名称" } }
配置多节点hosts后,Logstash会自动对写入请求做负载均衡,不会集中压在单节点上。
内容的提问来源于stack exchange,提问作者Ali farahzadi
相关产品推荐
相关产品推荐

