Crie um DNS público que mapeie para o espaço IP privado

1

Estou tentando criar uma configuração na qual tenho um endereço IP voltado para o público que é alimentado em vários servidores internos diferentes em que cada servidor tem um IP exclusivo no espaço IP privado - a rota é determinada pela solicitação de domínio recebida Apache Virtual Hosts, mas para todo o tráfego - não apenas HTTP). Quais serviços eu precisaria para criar algo descrito acima? Um servidor proxy, balanceador de carga, etc?

    
por Marco Ceppi 19.09.2011 / 19:39

3 respostas

3

Você fez grandes alterações em sua pergunta e descartou completamente o aspecto do EC2, mas aqui está minha nova resposta:

Acho que você precisa aprender um pouco mais sobre como o DNS funciona e como os hosts virtuais funcionam. O DNS é usado para transformar um nome de host em um endereço IP (ou conjunto de endereços IP). Quando um aplicativo tiver um endereço IP para conversar com o DNS, ele não estará mais envolvido.

Hosts virtuais é um recurso ativado pelo protocolo HTTP (versão 1.1 e superior). Ao entrar em contato com o endereço IP, o cliente passa o nome do host do qual deseja fazer a solicitação. Seu servidor proxy precisaria ser configurado para entender HTTP e mapear para diferentes servidores back-end.

A maioria dos outros protocolos IP não tem esse recurso, então não há como fazer o que você pede. Por exemplo, não há nenhum nome de host envolvido após a pesquisa de DNS quando você envia um ssh para um servidor.

Dito isto, parece que você tem um problema específico para resolver. Em vez de assumir que o roteamento de endereços IP é a resposta, que tal perguntar sobre o que você está tentando fazer em um nível mais alto e ver o que as pessoas criam? Eu recomendaria começar isso em uma nova pergunta.

Deixo abaixo minhas respostas originais ao que parecia ser seu conjunto original de perguntas ...

O que você está tentando fazer não está claro no texto da sua pergunta. Aqui estão algumas respostas para possíveis perguntas:

Não é possível "conservar endereços IP" no Amazon EC2. Cada instância usa um endereço IP público, quer você permita ou não que seja acessado pela Internet.

O EC2 já tem nomes DNS privados para os endereços IP privados, mas eles não são mais úteis para usar do que os próprios endereços IP privados.

Você pode executar seu próprio servidor DNS dentro ou fora do EC2. Existem alguns pacotes de software de serviço de DNS que suportam plug-ins de código nos quais você determina dinamicamente o endereço IP resultante com base em algoritmos.

Se você resolver um nome DNS público da instância do EC2 de um host do EC2, a Amazon retornará o endereço IP privado para que sua rede seja mais rápida e mais barata. Para mais informações sobre esse recurso, consulte este artigo que escrevi:

Using Elastic IP to Identify Internal Instances on Amazon EC2
http://alestic.com/2009/06/ec2-elastic-ip-internal

    
por 19.09.2011 / 20:02
0

O (s) seu (s) protocolo (s) de aplicação precisam sinalizar, como parte da conexão de entrada, qual servidor de backend deseja usar. O HTTP faz isso (conforme você identifica) usando "hospedagem virtual baseada em nome", em que o cabeçalho Host na solicitação é usado pelo servidor da Web para determinar qual nome foi usado na solicitação e, em seguida, tomar uma decisão sobre onde envie o pedido. Alguns outros protocolos existentes também são capazes disso em algum grau (FTP, de todas as coisas, tem um mecanismo equivalente), mas deve ser feito na camada de aplicação - você não pode lidar com isso na camada IP, não há informações suficientes.

Honestamente, se isso é apenas para alguns domínios diferentes, e você está trabalhando com um protocolo que não suporta sinalização baseada em nome, você estará bem melhor usando apenas vários endereços IP e ligando cada nome para o seu próprio endereço. Isso é chato e doloroso no EC2, por causa da limitação de um IP elástico por instância (e você realmente não quer usar o IP da instância para serviços públicos); só vai fazer seus usuários tristes pandas para baixo da linha).

    
por 19.09.2011 / 22:29
0

Parece que você precisa apenas de um proxy reverso como nginx / haproxy / verniz na frente, distribuindo solicitações para suas instâncias de back-end por domínio (URL).

    
por 20.09.2011 / 03:03