Balanceamento de carga de failover interno no Azure

1

Eu tenho um cluster do MongoDB implantado no Azure. Normalmente, um cluster do MongoDB tem pelo menos duas instâncias do roteador mongo (mongos), que é onde um aplicativo deve se conectar (o aplicativo também é hospedado no azure).

Eu quero que o 'failover' equilibre o tráfego do aplicativo para as instâncias do mongodb. O que quero dizer é que eu quero ligar o meu pedido a uma instância e se falhar (e só se falhar) para o outro. Eu não quero que meu tráfego seja balanceado com o round-robin:

  • mongorouter1.myinternaldomain.dom:27017 : deve ser sempre o ponto final
  • mongorouter2.myinternaldomain.dom:27017 : deve ser o ponto final apenas se o primeiro falhar.
  • mongorouter3.myinternaldomain.dom:27017 : este deve ser o ponto final apenas se os dois anteriores falharem.

Vejo que esse tipo de coisa é gerenciado com o Gerenciador de Tráfego ou com o ILB (balanceador de carga interno) no Azure. Mas eu tenho um problema porque, como eu entendo, o balanceamento de failover está disponível apenas com o Gerenciador de Tráfego e que o ILB só permite round-robin.

Como meu aplicativo também está no Azure, não quero expor as portas mongodb ao público, portanto, entendo que não posso usar o Gerenciador de Tráfego, que é o serviço que permite o balanceamento de carga de failover.

Qual deve ser a maneira correta de implementar isso?

    
por artberri 05.06.2015 / 17:29

1 resposta

2

A única maneira de ter o balanceador de carga de software com failover no Azure é usar o Gerenciador de Tráfego. Você pode definir ACLs, portanto, somente seu próprio aplicativo pode se conectar com o banco de dados no ponto de extremidade especificado. Ou Você pode configurar o failover em Seu aplicativo - sem balanceador de carga, porque Você não precisa de balanceamento de carga (apenas failover).

    
por 02.07.2015 / 17:19