Fluent Bit配置Elasticsearch高可用连接失败,提示无法联系DNS服务器
Fluent Bit配置Elasticsearch高可用连接失败,提示无法联系DNS服务器
嘿,我看了你的问题和配置,一眼就发现了问题所在——你在ES输出插件里的参数用错了,导致Fluent Bit把你定义的上游集群名当成普通主机去做DNS解析,自然找不到对应的记录。
错误根源
你在[OUTPUT]块里写了Host forward-balancing,但Fluent Bit的Elasticsearch输出插件并不会自动识别这个是你之前定义的上游集群名称,它会默认把这个字符串当作一个需要DNS解析的主机名,而你的环境里显然没有这个主机的DNS记录,所以才会抛出getaddrinfo(host='forward-balancing', err=11): Could not contact DNS servers的警告。
修复方案
你只需要修改[OUTPUT]块的配置,把Host参数换成Upstream,指定你定义的上游集群名forward-balancing,同时可以去掉Port参数(因为上游节点已经各自配置了端口)。
修正后的完整配置如下:
[UPSTREAM] name forward-balancing [NODE] name node-1 host server1 port 9200 [NODE] name node-2 host server2 port 9200 [NODE] name node-3 host server3 port 9200 [SERVICE] Flush 1 Log_Level info Daemon off Parsers_File parsers.conf HTTP_Server On HTTP_Listen 0.0.0.0 HTTP_Port 2020 [INPUT] Name tail Tag kube.* Path /var/log/containers/*.log Parser json DB /var/log/flb_kube.db Mem_Buf_Limit 5MB Skip_Long_Lines On Refresh_Interval 10 [OUTPUT] Name es Match * Index index-v1 Upstream forward-balancing # 这里替换成Upstream参数 HTTP_User user HTTP_Passwd password Logstash_Format Off Type _doc Replace_Dots On Retry_Limit False tls On tls.verify Off Suppress_Type_Name On
额外检查点
- 确保
server1、server2、server3这三个ES节点的主机名能被Fluent Bit所在机器正确解析(可以通过ping server1测试,或者在hosts文件里添加对应映射) - 确认ES节点的9200端口在Fluent Bit所在机器上是可达的(可以用
telnet server1 9200或者curl https://server1:9200 -k测试,因为你开启了tls但关闭了验证)
修改完配置后重启Fluent Bit,应该就能正常连接到ES集群实现高可用了。
备注:内容来源于stack exchange,提问作者Augusto Marega
相关产品推荐
相关产品推荐

