Arquitetando o nginx para redundância

1

Essa pode ser uma pergunta estúpida, mas depois de pesquisar um pouco, não consigo encontrar a resposta ou simplesmente não sei como perguntar.

Eu tenho um aplicativo da web em execução em um servidor chamado 'myserver1'. Eu trouxe o 'myserver2' com uma instância idêntica do aplicativo da web e configurei a replicação entre os dois bancos de dados nas duas caixas. Agora, eu gostaria de empregar o nginx para fazer algum balanceamento de carga, além de fazer um servidor assumir se os outros keels acabarem.

A maior parte da documentação do nginx é escrita em torno de um cenário simples como este, mas parece indicar que você coloca um servidor nginx na frente dos servidores web. Isso parece ser outro ponto único de falha. Como você faz o próprio nginx redundante? Você pode apenas executar o nginx em ambas as caixas do servidor web? Em caso afirmativo, para onde você aponta a entrada de DNS de myapp.mydomain.com?

EDIT: Acho que devo acrescentar que isso é para um aplicativo interno com uma base de usuários relativamente pequena. Minha principal preocupação é que nossos usuários internos ainda possam obtê-lo se perdermos um servidor ou conectividade com um dos data centers. Eu simplesmente não consigo ver como fazer isso no nginx sem introduzir outro ponto único de falha.

    
por coding_hero 06.11.2014 / 21:57

1 resposta

3

A única maneira de balancear a carga no nginx é ter um único frontend (proxy reverso) dos servidores back-end de balanceamento de carga do host.

A idéia / hipótese por trás desse design é que a carga acontecerá apenas no backend e que o seu único ponto de entrada sempre será capaz de lidar com qualquer tráfego com o qual ele deveria lidar, pois ele simplesmente redireciona e nunca processa nada em si.

O que você está falando é, na verdade, failover , não balanceamento de carga . Sua preocupação é a falha do seu único ponto de entrada.

Como @coding_hero explicou, isso não tem nada a ver com o nginx, é algo a ser tratado nas camadas subjacentes (OS / network).

Uma maneira de fazer isso pode ser lida na página seguinte (exemplo antigo falando sobre oldstable do Debian, porém, os comandos podem precisar ser atualizados): link . O Heartbeat é uma tecnologia bem conhecida que permite que vários servidores idênticos monitorem uns aos outros, elegendo um mestre e reprovando para escravos com o necessário.

Você ainda tem hardware de rede dedicado fazendo o mesmo trabalho redirecionando o tráfego (ou talvez reconfigurando roteadores dinamicamente para redirecionar?) para o mestre atualmente eleito.

    
por 07.11.2014 / 20:37