Um servidor proxy NGINX pode passar solicitações para (servidor A) depois de terminar um trabalho no (servidor B)?

1

Atualmente, os clientes estão fazendo o upload de dados para o servidor da web antigo, mas queremos que os clientes iniciem o upload de dados para o novo servidor.

No entanto, queremos que os uploads atuais para o servidor antigo sejam continuados, enquanto novos envios são passados pelo novo servidor.

Depois que todos os uploads para os servidores antigos forem concluídos, esperamos que todas as novas solicitações sejam enviadas para o novo servidor.

Eu queria saber se isso é possível com um proxy NGINX?

O proxy também deve ser capaz de lidar com soquetes da web.

Possíveis ideias:

  1. Um comando (ou função) que alternará servidores com proxy, sem reiniciar o proxy e é específico para uma conexão.
  2. Uma condição na configuração que informará ao proxy para passar solicitações para um novo servidor depois que uma tarefa for concluída no servidor antigo.
por user3061676 18.07.2016 / 17:06

1 resposta

0

Isso deve praticamente "funcionar" com o nginx usando upstreams e, opcionalmente, recarregamentos nginx. Não tenho certeza do que você quer dizer com "específico para uma conexão" neste contexto, mas fazendo algumas suposições sobre sua configuração ...

Supondo que o aplicativo de ponto de upload será chamado de "uploadpoint" e que, inicialmente, ele vai para point1 e que point2 é o que você deseja mover para:

upstream uploadpoint {
    server point1.example.com;
    server point2.example.com backup;
}

(Para obter parâmetros adicionais relacionados a verificações de integridade, consulte a documentação original ) oficial. Então, dentro do seu bloco de servidores, você apontaria para esse local:

server {
   listen 80;
   server_name public.example.com;

   location /upload {
      proxy_pass http://uploadpoint/doupload/;
   }
}

Neste caso, você tem um upstream que prefere ir ao 'point1', mas assim que ele estiver inativo, tudo começará automaticamente em point2 . Em algum momento, você pode alternar entre o primário e backup (ou até mesmo remover o antigo, dependendo se você quiser ter um secundário) e emitir um service nginx reload ou kill -HUP <nginx_pid> . No seu caso, é provável que você faça isso para obter uma alternância simples em vez de reduzir point 1 e ter um failover .

upstream uploadpoint {
    server point2.example.com;
    server point1.example.com backup;
}

Quando o nginx é recarregado, ele permite que as conexões sejam drenadas (o que, acredito, é o que você está pedindo) para qualquer coisa existente antes de enviar novas coisas.

Você também desejará rever as várias opções em torno de proxy_pass , especialmente [proxy_next_upstream][2] .

    
por 19.07.2016 / 05:35