A resposta curta é que isso varia.
Quando vários registros de endereço estão presentes no conjunto de respostas, um servidor DNS consultado normalmente os retorna em uma ordem aleatória. O sistema operacional normalmente apresentará o conjunto de registros retornados para o aplicativo na ordem em que foram recebidos. Dito isso, há opções em ambos os lados da transação (o servidor de nomes e o sistema operacional) que podem resultar em comportamentos diferentes. Geralmente estes não são empregados. Como exemplo, um arquivo pouco conhecido chamado /etc/gai.conf
controla isso em sistemas baseados em glibc.
O livro sobre o Zytrax (DNS para cientistas de foguetes) tem um bom resumo sobre a história deste tópico , e conclui que RFC 6724 é o padrão atual que as implementações de aplicativos e resolvedores devem seguir .
A partir daqui, vale a pena notar uma escolha da cotação da RFC 6724:
Well-behaved applications SHOULD NOT simply use the first address
returned from an API such as getaddrinfo() and then give up if it
fails. For many applications, it is appropriate to iterate through
the list of addresses returned from getaddrinfo() until a working
address is found. For other applications, it might be appropriate to
try multiple addresses in parallel (e.g., with some small delay in
between) and use the first one to succeed.
O padrão encoraja os aplicativos a não pararem no primeiro endereço de falha, mas isso não é um requisito nem o comportamento que muitos aplicativos escritos casualmente implementarão. Você nunca deve confiar somente em vários registros de endereço para alta disponibilidade, a menos que tenha certeza de que a maior (ou pelo menos a mais importante) porcentagem de seus aplicativos de consumo funcionará bem. Navegadores modernos tendem a ser bons nisso, mas lembre-se de que eles não são os únicos consumidores com os quais você está lidando.
(também, como observa @kasperd abaixo, é importante distinguir entre o que isso compra no HA x balanceamento de carga)