Nenhum projeto de servidor de produção pode ter um único ponto de falha.
Portanto, você precisa de pelo menos duas máquinas como balanceadores de carga. Você pode usar um balanceador de carga como
HAProxy . Tem todos os recursos que você pode precisar, verifique este exemplo de arquitetura HAproxy.
A carga real da solicitação que você enfrentará é "muitas solicitações de arquivos pequenos" em um sistema de armazenamento NFS.
O número de caches depende dos seus recursos e solicitações do cliente. O HAProxy pode ser configurado para adicionar ou remover servidores de cache.
A solicitação de arquivo NFS é a operação mais exigente, portanto, você precisa de uma forma de armazenamento em cache nas máquinas "cache".
O servidor de cache tem 3 camadas de armazenamento, você quer que os arquivos mais comuns estejam disponíveis localmente e, de preferência, na RAM.
- NFS, de longe o mais lento. (REMOTO)
- Armazenamento local, rápido. (LOCAL)
- Ram, ultra rápido. (LOCAL)
Isso pode ser resolvido com nginx, squid ou verniz.
O nginx pode armazenar em cache arquivos locais usando SlowFs , isso é bom tutorial lento do fs
O Nginx com este sistema armazena arquivos no disco do sistema de arquivos local e os atende a partir daí. Você pode usar PURGE para remover um arquivo modificado do cache. É tão simples quanto fazer uma solicitação com a palavra "purge" na string de solicitação.
O Nginx com FS Lento usa o RAM que o SO fornece, aumentando o nginx ram disponível pelo SO para melhorar a velocidade média da solicitação. No entanto, se o armazenamento exceder o tamanho da RAM do servidor, ainda será necessário armazenar os arquivos em cache no sistema de arquivos local.
O Nginx é um servidor multiuso que não é extremamente rápido. Pelo menos não tão rápido quanto os servidores de cache estático, como o squid ou o verniz. No entanto, se o seu problema é o NFS, o Nginx resolve 90% do problema.
O Squid e o Varnish são muito rápidos e têm APIs para remover arquivos do cache.
O Squid usa o RAM e o sistema de arquivos local para o cache.
O verniz usa memória ram para cache.
O Squid é antigo e a maioria dos benchmarks mostra que o verniz é mais rápido do que o squid colocando arquivos estáticos.
No entanto, quando o verniz falha, o cache de RAM é perdido e todo o servidor pode levar muito tempo se recuperando. Portanto, uma falha é um grande problema para o verniz.
O Squid manipula os travamentos melhor porque também usa o disco de armazenamento local e pode reinicializar algum cache de lá, em vez de usar o NFS.
Para um ótimo desempenho servindo pequenos arquivos estáticos, você pode usar Nginx e Squid OR Varnish.
Outros tamanhos de arquivo exigem uma abordagem diferente.