Configuração / roteamento dinâmico de upstream do Nginx

4

Eu estava experimentando a configuração dinâmica do upstream para o nginx e não consigo encontrar nenhuma boa solução para implementar a configuração upstream de fontes de terceiros, como redis ou mysql.

A ideia por trás disso é ter uma configuração de arquivo único no servidor principal e solicitações de proxy para vários servidores de aplicativos com base nas condições do ambiente. Pense em implementações dinâmicas em que você tem servidores X que executam operadores Y em portas diferentes. Por exemplo, eu crio um novo aplicativo e implemento. O gerenciador de aplicativos seleciona um servidor e, em seguida, executa um trabalho (Ruby / PHP / Python) e, em seguida, reporta o ip: port para o banco de dados central com o status "up". Neste momento, quando eu vou para o nginx url dado deve proxy todas as solicitações para o ip: porta upstream especificado. A coisa toda é bem parecida com o que o heroku faz, exceto que essa prova de conceito não deve estar pronta para produção, principalmente para necessidades internas.

A solução mais fácil que encontrei foi usar o resolvedor com o servidor DNS baseado em ruby. Ele funciona, o nginx obtém o endereço IP corretamente, mas o único problema é que você não pode definir o número da porta para esse IP.

A segunda solução (que ainda não tentei) é colocar outra coisa como um servidor proxy, talvez escrito em Erlang. Nesse caso, precisamos usar algo para servir conteúdo estático.

Alguma idéia de como implementar isso de maneira mais flexível e estável?

P.S. Algumas opções de pesquisa:

por Dan Sosedoff 29.03.2012 / 02:21

2 respostas

1

Aqui é exatamente como Michael Hampton referenciou - implementando upstream dinâmico usando Lua

link

    
por 04.06.2014 / 21:04
0

Parece que a resposta anterior, por Dan, está mais de acordo com o que você está pensando.

Mas eu escrevi um proxy reverso baseado em node.js que permitiria que isso fosse feito facilmente:

por 07.08.2014 / 11:39