lua-resty-kafka erro xxxx could not be resolved (3: Host not found)


問題:使用 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM