在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
问题:使用 lua-resty-kafka 向 kafka 发送数据失败,报错如下: slave6 could not be resolved (3: Host not found)
配置信息: lua-resty-kafka 配置 local broker_list = { { host = "xxx.0.0.1", port = 9092 }, { host = "xxx.0.0.2", port = 9092 }, { host = "xxx.0.0.3", port = 9092 }, { host = "xxx.0.0.4", port = 9092 }, } local topic = "test" local message = "test" local p = kafka_producer:new(broker_list) local offset, err = p:send(topic, "key", message) ngx.say(err) ngx.say(tonumber(offset)) slave6 为远程 kafka 集群中的一台机器的 hostname 查看 kafka 配置文件 /usr/local/kafka_2.10-0.8.1.1/config/server.properties
产生问题的原因(瞎猜): nginx 按照 broker_list 中的地址与 kafka 建连,kafka 返回给 nginx 上报的主机名,nginx 不能解析该主机名,因此报错。 解决办法有两种: 1. 在 kafka 中将 advertised.host.name 配置修改为 外网地址,与 broker_list 中的地址相对应。 具体原理参见这篇博客 http://tech.lede.com/2017/06/29/rd/server/kafkaClient081/ 2. 使本机可以识别远程 kafka 的hostname 在 lua-resty-kafka 所在机器的 /etc/hosts 添加 slave6 的记录。 添加后仍然不能生效,nginx 没有用 hosts 解析 slave6 ,解决办法: 1)nginx 增加 本地 DNS server resolver 114.114.114.114 127.0.0.1; 2) 安装并启用 Dnsmasq 参见 http://www.cnblogs.com/DillGao/p/7372014.html |
请发表评论