
Acabei de ler issoArtigo sobre o Oceano Digitale queria saber se otopologiano exemplo final pode ser implementado com nginx.
estou interessadocomo o balanceador de carga lida com os dois servidores de cache dedicados que NÃO estão na frente dos servidores de aplicativos. Eles descrevem o processo assim:
- O balanceador de carga verifica o back-end do cache para ver se o conteúdo solicitado está armazenado em cache (cache-hit) ou não (cache-miss)
- Se cache-hit: retorne o conteúdo solicitado ao balanceador de carga e vá para a Etapa 7. Se cache-miss: o servidor de cache encaminha a solicitação para o back-end do aplicativo, por meio do balanceador de carga
- O balanceador de carga encaminha a solicitação para o backend do aplicativo
- app-backend lê do banco de dados e retorna o conteúdo solicitado ao balanceador de carga
- O balanceador de carga encaminha a resposta para o cache-backend
- cache-backend armazena em cache o conteúdo e o retorna ao balanceador de carga
- O balanceador de carga retorna os dados solicitados ao usuário
Acho que o balanceador de carga deveria ter os dois grupos nas diretivas upstream:
upstream cachebackend {
server cache-1.example.com;
server cache-2.example.com;
}
upstream appbackend {
server app-1.example.com;
server app-2.example.com;
}
e então de dentro de uma diretiva de servidor:
location / {
proxy_pass http://cachebackend;
# if that one is a MISS, request this one:
# proxy_pass http://appbackend;
# and then save the response on the cachebackend
# before returning it to the client
}
Quero saber como dizer ao nginx para seguir os passos acima, ou se isso é possível.
Obrigado :)
Responder1
O Nginx pode fazer balanceamento de carga e cache simultaneamente, você só precisa configurar a zona de cache usando proxy_cache_path
a diretiva e atribuí-la ao particular server {}
ou location {}
usando proxy_cache
. Portanto, concluindo, se usar o nginx como balanceador de carga e cache, a arquitetura Digital Ocean parece redundante.