领事循环和平

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了领事循环和平相关的知识,希望对你有一定的参考价值。

我设置了包含3台服务器的测试集群。 Consul,dnsmasq和NetworkManager安装在CentOS 7下的所有机器上。

我想测试简单的循环程序:

预期:ping consul.service.consul必须向三个服务器之一发送icmp请求。

实际:ping总是向一个IP地址发送请求(10.82.5.6)

但是在dig命令的答案部分中更改了ip顺序:

[vagrant@localhost ~]$ dig consul.service.consul

; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.1 <<>> consul.service.consul
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23466
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;consul.service.consul.         IN      A

;; ANSWER SECTION:
consul.service.consul.  0       IN      A       10.82.5.5
consul.service.consul.  0       IN      A       10.82.5.4
consul.service.consul.  0       IN      A       10.82.5.6

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Dec 13 13:40:20 UTC 2017
;; MSG SIZE  rcvd: 98

如果我重新启动10.82.5.6节点,dig会返回2个节点并且ping开始正常工作 - 使用循环法。但是当我重新启动节点10.82.5.6时,只有此节点再次响应ping命令

答案

根据https://www.consul.io/docs/agent/dns.html,DNS接口随机化返回的节点,因此它永远不会循环。

还有DNS缓存https://www.consul.io/docs/guides/dns-cache.html默认TTL为0,但你可能有不同的东西和/或结果缓存在其他地方..

以上是关于领事循环和平的主要内容,如果未能解决你的问题,请参考以下文章

注册领事服务器与领事客户端

常用python日期日志获取内容循环的代码片段

领事健康检查:503 服务不可用

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

我们可以在节点或服务的领事政策中使用通配符吗

领事与 API 网关