fix(DNS): prefer SRV in service discovery (#4992)

Fix #4986

Signed-off-by: spacewander <spacewanderlzx@gmail.com>
This commit is contained in:
罗泽轩 2021-09-07 10:53:23 +08:00 committed by GitHub
parent 537e3866f6
commit 2f4564218c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 1 deletions

View File

@ -78,7 +78,7 @@ function _M.init_worker()
hosts = {},
resolvConf = {},
nameservers = servers,
order = {"last", "A", "AAAA", "SRV", "CNAME"},
order = {"last", "SRV", "A", "AAAA", "CNAME"},
}
local client, err = core.dns_client.new(opts)

View File

@ -45,3 +45,7 @@ split-weight.srv 86400 IN SRV 10 0 1980 C
priority.srv 86400 IN SRV 10 60 1979 A
priority.srv 86400 IN SRV 20 60 1980 B
; a domain has both SRV & A records
srv-a 86400 IN SRV 10 60 1980 A
srv-a IN A 127.0.0.1

View File

@ -110,6 +110,9 @@ upstreams:
end
end
-- It is expected to have 5 DNS queries
-- the first turn: one for global resolver & two for discovery (SRV, then A)
-- the second turn: each one for both global resolver & discovery
if i < 2 then
ngx.sleep(1.1)
end
@ -125,3 +128,4 @@ connect to 127.0.0.1:1053
connect to 127.0.0.1:1053
connect to 127.0.0.1:1053
connect to 127.0.0.1:1053
connect to 127.0.0.1:1053

View File

@ -284,3 +284,17 @@ qr/proxy request to \S+/
--- grep_error_log_out
proxy request to 127.0.0.1:1979
proxy request to 127.0.0.2:1980
=== TEST 14: prefer SRV than A
--- apisix_yaml
upstreams:
- service_name: "srv-a.test.local"
discovery_type: dns
type: roundrobin
id: 1
--- error_log
proxy request to 127.0.0.1:1980
--- response_body
hello world