|
|
@ -207,6 +207,122 @@ rabbitmq.node1.dc1.consul. 0 IN A 10.1.11.20
|
|
|
|
|
|
|
|
|
|
|
|
Again, note that the SRV record returns the port of the service as well as its IP.
|
|
|
|
Again, note that the SRV record returns the port of the service as well as its IP.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### SRV response for hosts in the .addr subdomain
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If a service registered to Consul has an explicit IP [`address`](/api-docs/agent/service#address)
|
|
|
|
|
|
|
|
or tagged address(es) defined on the service registration, the hostname returned
|
|
|
|
|
|
|
|
in the target field of the answer section for the DNS SRV query for the service
|
|
|
|
|
|
|
|
will be in the format of `<hexadecimal-encoded IP>.addr.<datacenter>.consul`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<Tabs>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<Tab heading="IPv4">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
In the example below, the `rabbitmq` service has been registered with an explicit
|
|
|
|
|
|
|
|
IPv4 address of `192.0.2.10`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<CodeTabs heading="Service defined with explicit IPv4 address in agent config" filename="agent-config.hcl">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```hcl
|
|
|
|
|
|
|
|
node_name = "node1"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
services {
|
|
|
|
|
|
|
|
name = "rabbitmq"
|
|
|
|
|
|
|
|
address = "192.0.2.10"
|
|
|
|
|
|
|
|
port = 5672
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"node_name": "node1",
|
|
|
|
|
|
|
|
"services": [
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"name": "rabbitmq",
|
|
|
|
|
|
|
|
"address": "192.0.2.10",
|
|
|
|
|
|
|
|
"port": 5672
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</CodeTabs>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When performing an SRV query for this service, the SRV response contains a single
|
|
|
|
|
|
|
|
record with a hostname in the format of `<hexadecimal-encoded IP>.addr.<datacenter>.consul`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```shell-session
|
|
|
|
|
|
|
|
$ dig @127.0.0.1 -p 8600 -t srv _rabbitmq._tcp.service.consul +short
|
|
|
|
|
|
|
|
1 1 5672 c000020a.addr.dc1.consul.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
In this example, the hex-encoded IP from the returned hostname is `c000020a`.
|
|
|
|
|
|
|
|
Converting each hex octet to decimal reveals the IP address that was specified
|
|
|
|
|
|
|
|
in the service registration.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```shell-session
|
|
|
|
|
|
|
|
$ echo -n "c000020a" | perl -ne 'printf("%vd\n", pack("H*", $_))'
|
|
|
|
|
|
|
|
192.0.2.10
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</Tab>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<Tab heading="IPv6">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
In the example below, the `rabbitmq` service has been registered with an explicit
|
|
|
|
|
|
|
|
IPv6 address of `2001:db8:1:2:cafe::1337`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<CodeTabs heading="Service defined with explicit IPv6 address in agent config" filename="agent-config.hcl">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```hcl
|
|
|
|
|
|
|
|
node_name = "node1"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
services {
|
|
|
|
|
|
|
|
name = "rabbitmq"
|
|
|
|
|
|
|
|
address = "2001:db8:1:2:cafe::1337"
|
|
|
|
|
|
|
|
port = 5672
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"node_name": "node1",
|
|
|
|
|
|
|
|
"services": [
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"name": "rabbitmq",
|
|
|
|
|
|
|
|
"address": "2001:db8:1:2:cafe::1337",
|
|
|
|
|
|
|
|
"port": 5672
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</CodeTabs>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When performing an SRV query for this servie, the SRV response contains a single
|
|
|
|
|
|
|
|
record with a hostname in the format of `<hexadecimal-encoded IP>.addr.<datacenter>.consul`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```shell-session
|
|
|
|
|
|
|
|
$ dig @127.0.0.1 -p 8600 -t srv _rabbitmq._tcp.service.consul +short
|
|
|
|
|
|
|
|
1 1 5672 20010db800010002cafe000000001337.addr.dc1.consul.
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
In this example, the hex-encoded IP from the returned hostname is
|
|
|
|
|
|
|
|
`20010db800010002cafe000000001337`. This is the fully expanded IPv6 address with
|
|
|
|
|
|
|
|
colon separators removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The following command re-adds the colon separators to display the fully expanded
|
|
|
|
|
|
|
|
IPv6 address that was specified in the service registration.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```shell-session
|
|
|
|
|
|
|
|
$ echo -n "20010db800010002cafe000000001337" | perl -ne 'printf join(":", unpack("(A4)*", $_))."\n"'
|
|
|
|
|
|
|
|
2001:0db8:0001:0002:cafe:0000:0000:1337
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</Tab>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</Tabs>
|
|
|
|
|
|
|
|
|
|
|
|
### Prepared Query Lookups
|
|
|
|
### Prepared Query Lookups
|
|
|
|
|
|
|
|
|
|
|
|
The format of a prepared query lookup is:
|
|
|
|
The format of a prepared query lookup is:
|
|
|
|