Eu tenho um servidor da web que se conecta a um banco de dados interno por meio de uma VPN. Existem 2 IPs (primário e secundário) no banco de dados do servidor da web. Como posso configurar meu arquivo / etc / hosts para que, se o IP primário não estiver disponível, o IP secundário seja usado?
Isso funcionaria para o meu arquivo hosts?
141.131.286.1 abc.efg.datastore.com #primary
141.131.286.237 abc.efg.datastore.com #secondary
linux
networking
hosts
Mike T
fonte
fonte
Respostas:
O arquivo hosts não fornece esse mecanismo. Se você listar dois IPs para o mesmo nome, somente o primeiro será usado. Portanto, não existem IPs primário e secundário.
Além disso, o arquivo hosts não manipula URLs. Ele apenas lida com nomes como os fornecidos na pergunta. Uma URL contém caminho completo e protocolo como
http://host/path/to/resource
.fonte
Você não pode fornecer resiliência ou balanceamento de carga round robin por meio do
/etc/hosts
arquivo - ele não foi projetado para esse fim.Em vez disso , suas opções são ... (em nenhuma ordem específica)
fonte
O / etc / hosts não suporta round robin, mas você pode escrever um script bash simples para substituir uma entrada marcada com um comentário #RoundRobin (ou qualquer outra tag que você deseja usar, basta refleti-la na linha grep do script) .
O script acima pega a saída do nslookup para sub.domain.com e a armazena em uma matriz. Em seguida, imprime o valor mais alto em $ new e pega o valor existente para a tag #RoundRobin atribuída em / etc / hosts ... por fim, executa uma substituição sed
A entrada do arquivo / etc / hosts ficaria assim
Por fim, coloque esse script no crontab da raiz para executar a cada hora mais ou menos e agora você terá um round-robin / etc / host.
Isso é particularmente útil se você tiver uma página codificada que está obtendo alguns dados de uma API e a pesquisa DNS do servidor da API estiver causando muito tempo de espera na execução do script da página ... resultando em alto consumo de CPU para o que de outra forma parece ser uma página simples. Para evitar a dispendiosa pesquisa de DNS (principalmente se o seu site faz centenas deles por minuto para tráfego pesado), você deve usar o / etc / hosts para resolver o FQDN do servidor remoto da API. Isso reduzirá drasticamente o uso da CPU para extrair os dados da API e gerar a página.
fonte
Sim, funcionaria.
No entanto, o mecanismo de busca simplesmente segue a lista até encontrar uma correspondência.
Portanto, embora a resposta para a pergunta escrita seja SIM, será um desafio. Mas nada insuperável.
Tente o seguinte: Cada um desses endereços IP realmente precisa ter nomes diferentes.
fonte
Uma maneira fácil de fazer isso acontecer seria usar apenas um serviço DNS público, como o AWS Route53. Você pode inserir vários endereços IP por registro A com prioridade
abc.efg.datastore.com
Enquanto nenhum certificado estiver envolvido, isso funcionará e não será nem contra quaisquer normas ou práticas recomendadas.
O NSLookup ou outras consultas de domínio retornarão os dois endereços. Seu aplicativo precisa ser capaz de lidar com isso. E sim, o domínio precisa ser registrado publicamente, não apenas um nome de host local.
fonte
A
os registros não têm um campo prioritário. Alguns serviços DNS autorizados têm ponderação de registros, mas isso é feito incluindo ou excluindo probabilisticamente os registros.Fácil de configurar, siga as instruções:
que deve responder dois registros com RR-DNS para que, se um nó da lista estiver inativo - seu aplicativo será conectado a outro
fonte