我在Consul做POC支持服務發現和多個微服務版本。 Consul客戶端和服務器集羣(3臺服務器)在Linux VM上進行設置。我遵循Consul的文檔,並且設置成功。設置無碼頭的生產用領事
這是我的疑問。我的設置完全在虛擬機上。我已經使用HTTP API添加了一個服務定義。相同的服務正在兩個節點上運行。 的服務是正確註冊:
curl http://localhost:8600/v1/catalog/service/my-service
給了我兩個節點的詳細信息。
當我做一個DNS查詢:
dig @127.0.0.1 -p 8600 my-service.service.consul
我能看到它承載的服務節點的預期結果。但由於服務名稱未解析,我無法ping服務。
ping -c4 my-service or ping -c4 my-service.service.consul
ping:unknown host。
如果我進入一個映射在/ etc/hosts文件my-service
,我只能從同一個VM ping此。我將無法在同一LAN或WAN上的另一臺虛擬機上ping此信息。 DNS的默認端口是53. Consul DNS接口監聽8600.我無法使用Docker進行DNS轉發。我可能在這裏錯過了什麼嗎?無需Docker/dnsmasq或iptables更新,可以讓DNS查詢工作嗎? 需要明確的是,這裏是我想有最後的結果是什麼:
ping my-service
這需要萍我已經配置的節點,在一個循環的方式。
請多多包涵,如果這個問題是基本的,我已經通過各領事相關的問題在這樣走了。
謝謝你的回答,肖恩。我沒有以領導身份運行領事,而是減少了DNS端口的權限。 –
您會發現在端口53上運行緩存DNS服務器的其他好處:在網絡中斷或領事中斷的情況下應用程序的性能和穩定性,但是感謝您使用'setcap'(這不是便攜式的,但工作正常) 。 – Sean
嗨肖恩,我決定和dnsmasq一起去。沒有麻煩和更少的步驟。 –