armazena alta quantidade de fotos (150 milhões) e disponibiliza para web [fechada]

2

Para um projeto real, devo configurar um servidor de armazenamento de alta disponibilidade que possa armazenar e publicar (http) 150 milhões de fotos em 7 tamanhos, o que significa um total de 1050 milhões de arquivos. Para cada foto, precisamos de um espaço total de 200 KB para armazená-los em todos os 7 tamanhos no total de 28 TB.

Na verdade, tenho dois servidores disponíveis (2x E5620, 12GB Ram, RAID Controller 1 GB NV Cache, 2x160 GB Disk para SO), ambos anexaram um storage array (DAS) com discos SAS de 12x3TB.

Não tenho certeza se minha configuração planejada é realmente a melhor solução:

SO: RHEL 6

Disk Array: Raid 6, ext4 / rsync ou gfs2

Servidor HTTP: Apache Traffic Server 3 ou nginx

Dessa maneira, o servidor armazena e publica as fotos.

Algum conselho para mim? Eu posso adicionar mais servidores, se necessário. Qual sistema de arquivos é o caminho certo a seguir? Raid 6 está ok?

    
por nenad007 18.09.2011 / 02:24

2 respostas

2

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?

    
por 18.09.2011 / 16:52
0

Por que não armazenar um arquivo grande e fazer com que o servidor os converta em tamanhos solicitados sob demanda, em seguida, armazene-os no cache? Considere também a execução de vários servidores front-end (por meio do balanceador de carga) para atender às solicitações, e talvez usando o NAS ou vários outros servidores para servir o conteúdo estático. O número de frontends de que você precisa depende de quanto tráfego você terá (capacidade do YouTube ou apenas armazenar o conteúdo para acessos ocasionais).

    
por 18.09.2011 / 03:12