Skip to content

[DISCUSS] add per node DNS selector #3517

Description

@spacewander

When resolving domain, currently we take one of the DNS record randomly. When we want to do service discovery via DNS, sometimes we hope the domain resolving will return all the records. For example, with:

"nodes": {
    "test.consul.service": 1
}

We may want to get all IPs instead of a random one.

So my purpose is to provide a per-node dns selector to control the behavior.

For example,

"nodes": {
    {"host": "test.consul.service", "weight": 1, "selector": "random"}
}

is equal to previous configuration.

While

"nodes": {
    {"host": "test.consul.service", "weight": 1, "selector": "all"},
    {"host": "1.1.1.1", "weight": 1}
}

with test.consul.service be resolved as 1.1.1.2 and 1.1.1.3 will get this result:

"nodes": {
    {"host": "1.1.1.1", "weight": 2},
    {"host": "1.1.1.2", "weight": 1},
    {"host": "1.1.1.3", "weight": 1},
}

Note that all the IPs from test.consul.service share the same weight.
And the selector doesn't affect SRV record, which is a difference story.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions