Actions
Bug #47951
closedMonClient: mon_host with DNS Round Robin results in 'unable to parse addrs'
% Done:
0%
Source:
Community (user)
Tags:
ipv6,dns,round robin,mon_host,client
Backport:
octopus,nautilus
Regression:
Yes
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(RADOS):
MonClient
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
I performed a test upgrade to 14.2.12 today on a cluster using IPv6 with Round Robin DNS for mon_host
[global] auth_client_required = cephx auth_cluster_required = cephx auth_service_required = cephx fsid = 0d56dd8f-7ae0-4447-b51b-f8b818749307 mon_host = mon.objects.xxxx ms_bind_ipv6 = true
Running 'ceph -s' now fails:
root@wido-standard-benchmark:~# ceph -s unable to parse addrs in 'mon.objects.xxx.xxxx.xxxx' [errno 22] error connecting to the cluster root@wido-standard-benchmark:~#
The hostname is a Round Robin DNS entry pointing to IPv6 addresses:
root@wido-standard-benchmark:~# host mon.objects.ams02.cldin.net mon.objects.xx.xx.net has IPv6 address 2a05:yy:xx:d:84b5:85ff:zzzz:33bf mon.objects.xx.xx.net has IPv6 address 2a05:yy:xx:d:645f:97ff:zzzz:2b2a mon.objects.xx.xx.net has IPv6 address 2a05:yy:xx:d:3416:d5ff:zzzz:18db root@wido-standard-benchmark:~#
I took a look with strace and I found this:
14980 socket(AF_INET6, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_IP) = 3 14980 connect(3, {sa_family=AF_INET6, sin6_port=htons(0), inet_pton(AF_INET6, "2a05:xxx:xxx:d:84b5:85ff:fe40:33bf", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28) = 0 14980 getsockname(3, {sa_family=AF_INET6, sin6_port=htons(52258), inet_pton(AF_INET6, "2a05:xxx:xxx:0:1c00:16ff:fe00:60", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, [28]) = 0 14980 connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0 14980 connect(3, {sa_family=AF_INET6, sin6_port=htons(0), inet_pton(AF_INET6, "2a05:xxx:xxx:d:645f:97ff:fe7f:2b2a", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28) = 0 14980 getsockname(3, {sa_family=AF_INET6, sin6_port=htons(52850), inet_pton(AF_INET6, "2a05:xxx:xxx:0:1c00:16ff:fe00:60", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, [28]) = 0 14980 connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0 14980 connect(3, {sa_family=AF_INET6, sin6_port=htons(0), inet_pton(AF_INET6, "2a05:xxx:xxxx:d:3416:d5ff:fe92:18db", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28) = 0 14980 getsockname(3, {sa_family=AF_INET6, sin6_port=htons(35119), inet_pton(AF_INET6, "2a05:xxx:702:0:1c00:16ff:fe00:60", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, [28]) = 0 14980 close(3) = 0 14980 write(2, "unable to parse addrs in '", 26) = 26 14980 write(2, "mon.objects.xxx.xxx.net", 27) = 27 14980 write(2, "'", 1) = 1 14980 write(2, "\n", 1)
It performs the DNS lookup, but then it doesn't know what to do with it it seems.
Setting this one to Urgent as it breaks existing cluster.
Actions