タイトルは結構デタラメです。
正しくは CentOS6とCentOS7それぞれの環境からdigでConsul DNSへ名前解決要求を送ると結果が異なることがある、です。
以下詳細。
まずCentOS6とかCentOS7とかどんだけ古いんだ、という話は置いておきます。
CentOS7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| $ dig +noall +answer @127.0.0.1 -p 8600 mx-gateway.service.consul. SRV mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-12.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-15.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-6.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-14.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-9.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-2.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-8.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-1.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-10.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-7.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-4.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-19.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-17.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-11.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-5.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-13.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-3.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-16.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-20.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-18.node.example.consul.
|
CentOS6
1 2 3 4
| $ dig +noall +answer @127.0.0.1 -p 8600 mx-gateway.service.consul. SRV mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-7.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-9.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-3.node.example.consul.
|
明らかに少ない、もう一度。
1 2 3 4
| $ dig +noall +answer @127.0.0.1 -p 8600 mx-gateway.service.consul. SRV mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-17.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-8.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-15.node.example.consul.
|
帰ってくるホストが変わった。が相変わらず少ない。
ここでタネを明かす。
その前にCentOS6でdigに+edns=0
を追加する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| $ dig +ends=0 +noall +answer @127.0.0.1 -p 8600 mx-gateway.service.consul. SRV mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-18.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-20.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-4.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-1.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-11.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-5.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-17.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-6.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-19.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-8.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-15.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-3.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-14.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-2.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-12.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-7.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-16.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-13.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-9.node.example.consul. mx-gateway.service.consul. 0 IN SRV 1 1 25 mx-gateway-10.node.example.consul.
|
見事にCentOS7と同じ結果になった。
なぜこう言うことが起きるのか?
まずリクエスト側の話としてCentOS6のbind-utilsは9.8.x系、CentOS7は9.9.x系である。
digは9.9になる時に +ends=0
がデフォルトの挙動となった。
それより古いdigは +noedns
相当の挙動なのである。
続いてConsul側。
Consulでは、EDNSフラグの有無でレスポンスの最大サイズを変えている。
こうすることで稼働しているサービスを出来るだけ多くレスポンスとして返しつつ、DNSのルールに則った動作をしているのであった。