Aqui está o cenário.
Temos um Windows Server 2012 R2 Hyper-V Edition que hospeda três servidores da Web NLB 2012 R2 com nosso produto neles. Eles recebem dados XML de servidores públicos conectados e funcionam bem.
Temos um serviço da Web que verifica ataques xDoS (parece um ponto de extremidade explodindo mensagens XML lógicas duplicadas no cluster) ou pontos de extremidade com bugs que são enviados em loops "fora de controle". Os receptores em cada um dos servidores IIS chame o serviço da web para ver se eles devem processar ou negar uma mensagem em uma determinada mensagem.É desnecessário dizer que isso deve ser muito rápido e, como esse é um cluster, ele deve ser:
O lugar lógico para a primeira opção seria um banco de dados, mas essa opção retardaria muito o processo. Estamos recebendo milhares de mensagens por segundo e não podemos adicionar essa sobrecarga a cada uma delas.
Um serviço web comum funciona muito bem, mas quando um servidor no cluster fica inativo, a coreografia entre os servidores restantes é bastante complexa - eles precisam decidir quem será o mestre e, quando o servidor do que foi baixado, backup, ele precisa se juntar aos outros, etc ...
Aqui está o problema ...
Como todas as VMs são armazenadas em um host Hyper-V comum, podemos adicionar o IIS ao host e executar o serviço da Web do verificador xDoS? Esse serviço da Web sempre será chamado somente dos servidores IIS hospedados nele (sem acesso público). Isso significaria nenhuma coreografia porque a única vez que isso iria acontecer é quando todos os outros estavam afundando de qualquer maneira.
Aqui está a pergunta ...
Má prática? Se sim, porque? Para mim, "porque alguém não faz assim" ou alguma variante disso não é uma boa razão para explicar por que, a propósito.
Muito obrigado, Rob