“Não é possível resolver o nome do host” - como alterar de forma limpa o nome do host sem reinicializar

7

No trabalho, trabalho em um site pequeno usando servidores Ubuntu hospedados em instâncias do Amazon EC2. Temos dois servidores web, e em um dado momento um deles é 'live' e um é 'testing', mas quando temos nossos novos recursos ou correções de bugs trabalhando no servidor 'testing', rodamos um script que usa o API da AWS para trocar os endereços IP atribuídos às duas caixas para que os domínios que estão sendo servidos pelos dois servidores sejam trocados.

Consequentemente, a qualquer momento, um desses servidores pode ser nosso servidor 'ativo' ou nosso servidor de 'testes', mas estes não são estados permanentes.

Para evitar confusão no SSH em qualquer um desses servidores, especialmente se alguma pessoa tola (como eu) deixar uma sessão SSH aberta por um longo tempo e ficar confuso sobre qual servidor eles estão, eu quero modificar os nomes de host de os dois servidores para que o prompt e o título na janela do terminal leiam ubuntu@ourwebsiteLIVE ou ubuntu@ourwebsiteTESTING , dependendo se o servidor está atualmente ativo ou em teste.

Sei que posso fazer isso executando hostname ourwebsiteLIVE etc. em nosso script de troca de IP e já o implementei. Ele funciona, mas agora toda vez que sudo em qualquer um dos nossos servidores é impresso, por exemplo,

sudo: unable to resolve host ourwebsiteLIVE

que não parece quebrar nada, mas é bastante irritante. Eu acho que também pode acabar quebrando coisas no futuro, se eu tentar encadear comandos que enviam a saída um para o outro, então eu acho que tecnicamente não é apenas um problema de estética.

Todas as soluções que vi para a mensagem 'incapaz de resolver o nome do host' envolvem a modificação de /etc/hosts ou algum arquivo semelhante e a reinicialização do servidor . Eu posso ver que isso seria ótimo para muitos casos de uso, mas está longe de ser ideal para nós, já que estamos modificando o nome do host rotineiramente e programaticamente; nós não queremos ter que esperar por uma reinicialização toda vez que rodamos nosso script de troca.

Existe alguma maneira de fazer com que a mensagem de erro desapareça sem precisar ser reinicializada?

    
por Mark Amery 13.02.2013 / 12:14

4 respostas

1

Sugiro usar nss-myhostname . É um plugin nss que sempre resolve seu nome de host atual, portanto não há necessidade de modificar /etc/hosts .

Como o problema que você está descrevendo é apenas um problema de resolução, você pode corrigi-lo com uma configuração de DNS adequada, ou seja, ourwebsiteLIVE.$DOMAIN apenas resolve para o ip da máquina.

    
por 13.02.2013 / 12:35
0

Uma solução rápida poderia ser hostname ourwebsiteLIVE AND edit /etc/hosts sem a reinicialização. O erro deve desaparecer.

    
por 13.02.2013 / 12:39
0

Eu sei que estou trazendo essa questão de volta do morto, mas atualmente (pelo menos no Ubuntu Server 16.04) você pode fazer o seguinte para atualizar o nome do host sem a reinicialização.

Primeiro edite seu / etc / hosts e / etc / hostname com seu novo nome de host

A execução dos comandos

systemctl restart systemd-logind.service
hostnamectl --static --transient --pretty set-hostname YOURHOSTNAME

Seu novo nome de host agora está ativo sem reinicialização e, claro, persistirá após a reinicialização.

    
por 30.03.2018 / 07:13
-1

Quando meu bebê (muitos anos atrás) alcança o queimador quente, eu suprimo o pânico e me forço a segurar sua mão suavemente, deixando-a chegar perto o suficiente para sentir o calor sem queimar. Ensine-a sem assustá-la ...

Ahem ... alterar dinamicamente o nome do host do servidor provavelmente fará com que muitos dos daemons do sistema funcionem mal e, muitas vezes, de formas que não sejam imediatamente aparentes. O sistema operacional espera que o nome do host seja definido quando o sistema é instalado e permanece inalterado. hostname quase sempre é verificado apenas uma vez na inicialização do processo. Existem outras maneiras de mudar as versões rapidamente ...

O mais fácil é configurar um nível de indireção usando links simbólicos ...

Você não precisa de dois servidores para isso. Em vez disso, no mesmo nível de diretório que o diretório "home" do site (por exemplo, /var/www , hosted/server/html , etc.), crie um diretório para cada versão do site, como em ...

.../
.../v1.0
.../v1.1a
.../v1.1b
   :

O v1.1a e v1.1b será sua alternativa "LIVE" e "TEST".

Aqui vem a indireção ...

A criação de links simbólicos é muito rápida, então você provavelmente poderá recriá-los quando quiser trocar versões com o site sob carga leve sem muita interrupção.

O serviço de hospedagem em que estou baseando-se requer que o diretório "home" do site seja "html", como em ...

/home/group/subgroup/myuserid/html

Portanto, renomeamos o diretório html que o serviço nos fornece para um diretório de versão como v1.1a e criamos um link simbólico para ele chamado html .

Com nosso conjunto de links simbólicos, a listagem de diretórios pode parecer ...

.../
.../TEST -> v1.1b
.../html -> v1.1a
.../v1.0
.../v1.1a
.../v1.1b

Após fazer alterações nos arquivos do site no diretório .../v1.1b , executamos um script que remove (o Ubuntu tem um comando unlink mais seguro) e recria os links simbólicos com "html" e "TEST" trocados como em ...

.../
.../TEST -> v1.1a
.../html -> v1.1b
.../v1.0
.../v1.1a
.../v1.1b

Espero que isso ajude.

2013-02-16 18:15:12 EST suplementar ...

A pesquisa de hoje revela que há muitas opiniões conflitantes sobre isso.

Minha própria experiência vem de gastar muito tempo restaurando a funcionalidade "zeroconfig" do Xwindows e do Ubuntu depois de alterar o nome do host, como algumas das minhas notas do incidente indicam ...

  • Ubuntu-10.04
  • Net

    • A partir das atualizações de maio de 2011, os requisitos de configurações de rede mudaram drasticamente para suportar o Zeroconf!
    • O principal problema encontrado tem a ver com o comando 'hostname'.

      • O método usado pelo Ubuntu para manter o nome do host, endereço IP, etc. foi alterado.
      • Os arquivos / etc / hostname e / etc / hosts agora são a autoridade para todos esses valores
      • Não pode mais haver vários aliases para um host em / etc / hosts
      • Em / etc / hosts, o primeiro nome deve ser o Nome de Domínio Totalmente Qualificado (FQDN) - em outras palavras, hostname.domainname.
      • O SSH agora envia o FQDN em vez de apenas o nome do host, portanto /etc/hosts.allow deve ser alterado de ...

        TODOS: LOCAL
         para ...
        TODOS: LOCAL * .DORIS

  • Trecho de link ...

    • 'Avahi sempre será iniciado mesmo que um domínio .local esteja presente. O pacote avahi-daemon, que implementa o padrão mDNS "zeroconf", anteriormente incluía uma verificação para evitar a execução quando um domínio DNS local conflitante estava presente, já que foi relatado que alguns ISPs anunciam um domínio .local em suas redes, deixando Hosts Ubuntu incapazes de ver nomes anunciados na rede local (327362). No Ubuntu 9.10, o avahi-daemon é iniciado independentemente. É possível que isso possa causar outros problemas. Se a sua rede estiver configurada dessa maneira, você poderá desabilitar o mDNS usando o seguinte comando: '

      sudo stop avahi-daemon sudo sed -e '/ ^ iniciar /, + 1s / ^ / # /' /etc/init/avahi-daemon.conf

Um par de artigos relevantes ...

por 16.02.2013 / 02:58