EDIT: interpretar mal os requisitos de armazenamento!
Eu usaria pelo menos 2 + k + n servidores.
- 2 Servidores sendo balanceadores de carga com
keepalived
, executando em failover puro (ou o que flutua em seu barco) - Acredito que 1GigE-Connections esteja disponível e possa lidar com muitas solicitações GET simples se você usar retorno direto para sua configuração de IPVS - k Servidores sendo Servidores HTTP Frontend, o servidor HTTP seria nginx com alguma partição extra para o cache local. k depende da quantidade de tráfego que você espera que seja atendido (veja PERGUNTAS ABERTAS abaixo)
- n Servidores configurados com glusterfs para armazenar os dados. Desta forma, você pode começar com 2 servidores GlusterFs e testar sua configuração. Como você armazena apenas arquivos pequenos, não é necessário dividir um único arquivo em vários servidores, o GlusterFS deve ser bom. O cache local nos fronteds deve ser capaz de superar qualquer problema de velocidade, já que a quantidade de acessos a arquivos é geralmente menor que 5% (mas eu não sei o seu caso de uso - isso é apenas uma adivinhação). n é facilmente calculado. E sim, isso é apenas um exemplo, eu não escrevo isso porque eu acho que você não pode fazer isso, mas eu frequentemente me esqueço das partes óbvias ...
- Pegue um servidor de armazenamento com 8 discos de 500 GB. Dá-lhe cerca de 6 * 500 GB de armazenamento (RAID6) 3 TB por servidor,
- 10 Servidores tem 30TB de armazenamento (2TB reservados para crescimento inicial). Você não tem redundância até agora,
- adicione outros 10 servidores e você com o GlusterFS poderá configurá-lo para manter 2 cópias de cada arquivo para que qualquer um dos servidores de armazenamento possa falhar a qualquer momento e nada de ruim aconteça.
- isso é facilmente expansível apenas adicionando mais servidores, apenas aqueça-se com o GlusterFS e tudo ficará bem.
- monte os servidores de armazenamento nos frontends: comece a exibir conteúdo feliz
PERGUNTAS ABERTAS (e as perguntas cover-behind-behind) : (não sei se os requisitos já estão claros para você)
- Quanto tráfego você espera (necessário para obter um dimensionamento para o número de front-ends e largura de banda upstream)
- horários de pico e quantas solicitações por segundo - o tráfego médio / dia é bom e tudo menos se todo o tráfego acontecer dentro de 6 horas do dia
- crescimento esperado (tráfego de saída e quantidade total de dados)
- para onde vão os arquivos de log? - Parece que alguém gostaria de rodar números em todos os arquivos, você precisa ter espaço para eles também.
- Sua gerência está disposta a gastar alguns dólares em uma configuração de laboratório? Se não perguntar a eles quanto tempo de inatividade eles podem pagar se você tiver que testar novas configurações no hardware ao vivo. Pergunte a eles quanto dinheiro um minuto de inatividade custará. Se você não sabe ou não lhe dá o orçamento, eles podem facilmente descobrir
De qualquer forma, eu ficaria longe de soluções que envolvam a sincronização dos arquivos, já que parece que você quer colocar um arquivo em algum lugar e disponibilizá-lo imediatamente. Ter um arquivo disponível apenas 15 minutos depois de ser colocado nos servidores não é muito ideal e custará dinheiro real na maioria dos casos.
OBSERVAÇÃO Eu suponho que você tenha um sistema de backup que levará os 28TB, se não for lançado em outro sistema de armazenamento com a redundância necessária para lidar com as opções de pior caso. Adicione um backup externo para lidar com o que acontecerá se você esquecer o cenário pior possível
Não parece muito complicado, afinal. A questão interessante é: A sua gerência está disposta a gastar o dinheiro?