Use o endereço IP único para o farm de servidores

3

Estou criando um aplicativo no qual tenho um número XX de clientes que podem ser executados em uma única instância. O aplicativo se expande adicionando mais nós (suportando, assim, mais XX clientes). Eu quero uma maneira de usar um único endereço IP para que eu possa configurar os clientes CNAME para usar seus próprios URLs personalizados.

Eu também quero a capacidade de migrar clientes para nós diferentes, o que significaria que o CNAME precisaria apontar para um endereço IP diferente.

Meu pensamento seria que eu poderia apontar todos para um único endereço IP e, em seguida, fazer com que o aplicativo roteasse as solicitações do cliente para os diferentes nós do servidor. Isso é exatamente o que um balanceador de carga faria (da minha pesquisa), mas, apesar de tudo o que eu quero fazer, parece um pouco exagerado.

Eu preferiria uma maneira de fazer isso no .NET, mas estou aberto a qualquer tecnologia para atingir o objetivo.

    
por Steve Sloka 30.11.2011 / 20:28

4 respostas

1

Você não mencionou o uso de HTTP em qualquer lugar, mas marcou as perguntas como "aplicativos da web" e "web-farm", por isso estou assumindo que isso é o que seu aplicativo usa; Se este for o seu caso, então isso se parece com o tipo exato de trabalho que um proxy reverso existe para.

Você configura N servidores internos, cada um executando em seu próprio endereço IP interno, e configura o IIS (ou qualquer servidor da Web que você esteja usando) em cada servidor para manipular os nomes de sites que o servidor atenderá.

Em seguida, você fornece ao seu proxy reverso um endereço IP interno que pode falar com o servidor interno e um endereço IP público externo.

Você faz com que todos os nomes DNS públicos apontem para o endereço externo do proxy reverso.

Por fim, você configura seu proxy reverso para que as solicitações de um determinado nome do site sejam encaminhadas ao servidor da Web interno que está realmente hospedando-o.

Et voilà.

Eu tenho certeza que tanto o ISA Server 2006 quanto o Forefront TMG 2010 podem fazer isso facilmente, mas é claro que você pode usar qualquer software de proxy reverso que você queira.

Claro, você pode usar uma matriz de proxies reversos com balanceamento de carga para alta disponibilidade e balanceamento de carga.

    
por 30.11.2011 / 21:17
1

Você poderia fazer isso no .NET, mas eu acho que você ainda terá algum tipo de serviço de DNS em jogo.

Minha sugestão seria ter um DNS interno que resolva os IPs das suas máquinas internas.

Defina suas ligações no IIS7 para responder a todos os URLs criados pelo cliente e tenha um alias de servidor DNS público para o IP único no seu front end.

Uma vez que seu servidor front-end for atingido, recupere o nome do host usado nas variáveis HTTP e use seu DNS interno para descobrir em qual IP o serviço real está ativo.

Depois de conhecer o IP, é simplesmente um caso de encaminhar todas as comunicações para esse IP.

    
por 30.11.2011 / 20:36
1

Isso parece um trabalho para um IIS Server Farm . Observe que, do lado do .NET, você terá que criar o aplicativo para manipular o estado e outros recursos corretamente. Seus clientes terão problemas estranhos se / quando o balanceamento de carga ou o failover entrar em ação.

Você definitivamente deseja que o Windows Server / IIS lide com o clustering para você, principalmente porque a Microsoft já fez o trabalho pesado para fazer o cluster em nível de aplicativo funcionar.

    
por 30.11.2011 / 21:01
0

Eu usaria um balanceador de carga HAProxy para realizar essa tarefa. É uma solução Linux, mas pode facilmente balancear a carga de pedidos HTTP ou TCP.

    
por 02.12.2011 / 05:51